使用说明
MCP Boilerplate-带LLM客户端的天气服务器
该项目演示了一个使用天气工具的模型上下文协议(MCP)服务器实现,以及两个不同的LLM客户端实现:一个使用Anthropic的Claude API,另一个使用Ollama和本地模型。
项目结构
weather-server.py-提供天气工具(警报和预报)的MCP服务器weather-claude-client.py-客户使用Anthropic Claude APIweather-ollama-client.py-客户使用Olama和当地模型server.py-简单的数学服务器示例main.py-LangChain集成示例
特性
天气服务器工具
-
获取警报 -获取美国某个州的天气警报
- 参数:
state(两个字母的州代码,例如“CA”、“NY”)
- 参数:
-
获取预测 -获取某个地点的天气预报
- 参数:
latitude(浮动),longitude(浮动)
- 参数:
先决条件
安装
- 克隆存储库
- 安装依赖项:
uv sync
或者使用pip:
pip install -r requirements.txt
环境设置
创建 .env 项目根目录中的文件:
# For Claude client
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# For Ollama client (optional - defaults to qwen2.5:7b)
OLLAMA_MODEL=qwen2.5:7b
用法
1.克劳德客户(拟人)
Claude客户端使用Anthropic的Claude API,并支持本地工具调用。
设置:
- 集
ANTHROPIC_API_KEY在你的.env文件 - 确保天气服务器可访问
运行:
uv run weather-claude-client.py weather-server.py
特征:
- 通过Anthropic API调用本地工具支持
- 自动刀具检测和执行
- 带有工具结果的多回合对话
2.Ollama客户(本地模型)
Ollama客户端通过Ollama使用本地模型,并使用基于提示的工具调用支持它的模型。
设置:
- 安装 奥拉玛
- 拉一个兼容的模型(见下面的模型建议)
- 可选设置
OLLAMA_MODEL在你的.env文件
运行:
# Using default model from .env or qwen2.5:7b
uv run weather-ollama-client.py weather-server.py
# Or specify a model directly
uv run weather-ollama-client.py weather-server.py qwen2.5:7b
特征:
- 使用本地模型(无API成本)
- 对不完整/格式错误的工具调用进行强大的解析
- 支持多种工具调用格式
- 故障排除的调试输出
模型建议
对于Ollama客户端,使用支持工具调用的模型。推荐型号:
推荐(最佳工具调用支持):
- qwen2.5:7b -出色的工具调用支持,性能和能力的良好平衡
- 问题2.5:14b -性能更好,型号更大
- 骆驼3.2 -良好的工具调用支持
- 密史脱拉风 -强大的结构化输出能力
最低要求:
- 建议使用参数至少为7B的型号,以实现可靠的刀具调用
- 具有1.5B参数的模型(如qwen2.5:1.5B)可能有效,但可能难以处理结构化输出
拉一个模型:
ollama pull qwen2.5:7b
查询示例
客户端运行后,您可以提出以下问题:
- “芝加哥的天气怎么样?”
- “获取加利福尼亚州的天气警报”
- “给我看纽约的天气预报”
- “德克萨斯州的天气警报是什么?”
运作原理
MCP服务器(天气服务器.py)
- 使用FastMCP创建MCP服务器
- 通过stdio传输暴露天气工具
- 连接到美国国家气象局API
克劳德客户端(weather-Claude-Client.py)
- 通过stdio连接到MCP服务器
- 使用Anthropic的本地工具API
- 自动处理工具执行和结果集成
Ollama客户端(weather-Ollama客户端.py)
- 通过stdio连接到MCP服务器
- 使用基于提示的工具调用(因为Ollama没有本机工具调用)
- 解析LLM响应以提取工具调用
- 稳健地处理不完整/格式错误的XML标记
- 自动将工具参数与工具模式匹配
故障排除
Olama客户问题
问题:工具调用未被解析
- 确保您使用的模型具有7B+参数
- 检查调试输出,查看模型正在生成什么
- 尝试不同的型号(推荐qwen2.5:7b)
问题:找不到模型
- 确保Ollama已安装并正在运行
- 拉动模型:
ollama pull qwen2.5:7b - 检查型号名称拼写
问题:工具调用不完整
- 解析器处理不完整的标签,但如果问题仍然存在,请尝试:
- 降低代码中的温度(已设置为0.3)
- 使用更大的模型
- 改进提示(已包含示例)
Claude客户问题
问题:API密钥错误
- 确保
ANTHROPIC_API_KEY设定在.env - 检查API密钥是否有效并具有信用
问题:连接问题
- 确保天气服务器脚本路径正确
- 检查Python是否可以执行服务器脚本
依赖项
mcp>=1.23.3-模型上下文协议SDKanthropic>=0.75.0-API客户ollama>=0.6.1-Ollama Python客户端httpx-天气API的HTTP客户端python-dotenv-环境变量管理
许可证
这是一个样板/模板项目。根据需要使用。
贡献
欢迎使用其他工具、客户端或改进来扩展此样板!
