天气数据助手

一个基于Mistral和Ollama的本地MCP实现,通过专用MCP服务器获取实时天气数据,展示LLM如何安全地与外部API交互。

  • by hmgtech
  • Python
  • 本地部署
  • 更新于

使用说明

MCP天气助手

一个在Ollama上使用Mistral实现的本地MCP(模型上下文协议),它允许模型通过专用的MCP服务器获取实时天气数据。

这个项目展示了大型语言模型(LLM)如何通过使用工具调用来安全地与外部API进行交互,其中客户端负责协调用户输入、模型推理、工具执行和最终输出之间的工作流程。

特点/功能

  • 通过Ollama托管的本地Mistral模型
  • MCP客户端用于管理工具发现和调用
  • 天气MCP服务器从Open-Meteo获取实时天气数据
  • 两步推理循环模型决定是否需要使用工具,工具执行操作,然后模型自然地总结结果
  • 全模块化 — 可以轻松添加新工具

项目结构

MCP-Weather-Assistant/
├── mcp_client.py           # MCP client connecting LLM to tools
├── mcp_weather_server.py   # MCP server exposing weather API
├── README.md               # Project documentation
└── requirements.txt        # Python dependencies

要求

  • Python 3.10+(或 Python 3.10及以上版本)
  • Ollama(本地模型托管)
  • 在Ollama中安装的Mistral或LLaMA模型
  • requests 并且 flask Python包

安装依赖项:

pip install -r requirements.txt

requirements.txt(需求文件)

该 requirements.txt 文件包含以下依赖项:

blinker==1.9.0
certifi==2025.10.5
charset-normalizer==3.4.3
click==8.3.0
colorama==0.4.6
Flask==3.1.2
idna==3.11
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.3
requests==2.32.5
urllib3==2.5.0
Werkzeug==3.1.3

设置

克隆此存储库:

git clone https://github.com/hmgtech/mcp.git
cd MCP

确保Ollama在本地运行:

ollama serve

验证您的模型是否已安装(例如,Mistral):

ollama list

你应该看到 mistral (或列表中您偏好的模型)。

可选:修改 mcp_client.py 指向您的Ollama模型:

MODEL_NAME = "mistral"

执行项目

1️⃣ 启动天气MCP服务器

python mcp_weather_server.py

输出:

🌦️ MCP Weather Server running at http://localhost:8080

2️⃣ 启动MCP客户端

在另一个终端中:

python mcp_client.py

输出:

🤖 MCP Client started. Type your queries below.
🔍 Discovered MCP tools: ['get_weather']

3️⃣ 与助手互动

示例对话:

You: What’s the weather in Tokyo?
🔧 Model requested MCP tool: get_weather({'city': 'Tokyo'})
🌐 Tool result: {'city': 'Tokyo', 'temperature': 22.1, 'windspeed': 3.7}
Assistant: The current temperature in Tokyo is around 22°C with gentle wind.

You: Write a haiku about clouds.
Assistant: Floating soft above, shadows drift across still fields, sky whispers in gray.

4️⃣ 退出

类型 exit 或者 quit 停止客户端。

它是如何工作的

  1. 用户输入 → 发送给 Mistral 模型。
  2. 模特决定 如果需要调用工具(例如。, get_weather)。
  3. MCP客户端执行 通过MCP服务器使用该工具。
  4. 工具结果 被送回模型进行最终推理。
  5. 模型生成 返回给用户的人类可读输出。

这一架构确保:

  • 安全、可审计的工具执行
  • 模块化添加新工具
  • 模型推理与外部行为的分离

添加更多工具

  1. 创建一个新的MCP服务器,通过它来暴露您的工具(或多个工具) /tools 和 /invoke。
  2. 在(系统/平台中)注册服务器 MCP_REGISTRY 在 mcp_client.py。
  3. 更新模型提示,以包含新工具的描述。

MCP 客户端将自动发现并路由呼叫到相应的服务器。

许可证

麻省理工学院许可证
© 2025 Hiteshkumar Gupta(希特什库马尔·古普塔)