天气服务器与LLM客户端

一个基于模型上下文协议(MCP)的天气服务器,提供天气警报和预报功能,并支持通过Anthropic的Claude API或本地Ollama模型的LLM客户端进行交互。

  • by Sumitvedpathak
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Sumitvedpathak/mcp-boilerplate

使用说明

MCP Boilerplate-带LLM客户端的天气服务器

该项目演示了一个使用天气工具的模型上下文协议(MCP)服务器实现,以及两个不同的LLM客户端实现:一个使用Anthropic的Claude API,另一个使用Ollama和本地模型。

项目结构

  • weather-server.py -提供天气工具(警报和预报)的MCP服务器
  • weather-claude-client.py -客户使用Anthropic Claude API
  • weather-ollama-client.py -客户使用Olama和当地模型
  • server.py -简单的数学服务器示例
  • main.py -LangChain集成示例

特性

天气服务器工具

  1. 获取警报 -获取美国某个州的天气警报

    • 参数: state (两个字母的州代码,例如“CA”、“NY”)
  2. 获取预测 -获取某个地点的天气预报

    • 参数: latitude (浮动), longitude (浮动)

先决条件

  • Python 3.12+
  • 紫外线 包管理器(推荐)或pip
  • 对于Claude客户:Anthropic API密钥
  • 对于Ollama客户: 奥拉玛 与兼容型号一起安装

安装

  1. 克隆存储库
  2. 安装依赖项:
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,并支持本地工具调用。

设置:

  1. 集 ANTHROPIC_API_KEY 在你的 .env 文件
  2. 确保天气服务器可访问

运行:

uv run weather-claude-client.py weather-server.py

特征:

  • 通过Anthropic API调用本地工具支持
  • 自动刀具检测和执行
  • 带有工具结果的多回合对话

2.Ollama客户(本地模型)

Ollama客户端通过Ollama使用本地模型,并使用基于提示的工具调用支持它的模型。

设置:

  1. 安装 奥拉玛
  2. 拉一个兼容的模型(见下面的模型建议)
  3. 可选设置 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 -模型上下文协议SDK
  • anthropic>=0.75.0 -API客户
  • ollama>=0.6.1 -Ollama Python客户端
  • httpx -天气API的HTTP客户端
  • python-dotenv -环境变量管理

许可证

这是一个样板/模板项目。根据需要使用。

贡献

欢迎使用其他工具、客户端或改进来扩展此样板!