项目简介
本项目是一个基于 Model Context Protocol (MCP) 和 Server-Sent Events (SSE) 构建的天气服务后端。它作为一个MCP服务器,对外提供查询天气信息的功能,可以方便地与支持MCP协议的AI Agent或客户端集成,让AI能够获取实时的天气数据。
主要功能点
- SSE-based MCP服务器: 采用Server-Sent Events协议实现MCP服务器,提供实时的单向数据推送能力。
- 实时天气数据: 能够获取指定地点的当前天气状况和未来天气预报。
- 工具集成: 通过MCP协议的工具 (Tool) 机制,将天气查询功能暴露给AI Agent使用。
- 易于集成: 遵循MCP标准,可以轻松集成到任何支持MCP协议的AI应用中。
安装步骤
-
克隆仓库
首先,使用Git克隆代码仓库到本地:
git clone https://github.com/justjoehere/mcp-weather-sse cd mcp-weather-sse -
运行安装脚本
在项目根目录下,运行安装脚本以创建虚拟环境并安装依赖:
scripts/setup.bat这个脚本会自动完成以下操作:
- 创建Python虚拟环境 '.venv'
- 激活虚拟环境
- 安装项目所需的Python依赖包
-
(可选) 配置IDE
如果您使用IDE进行开发,建议配置IDE使用 '.venv' 目录下的Python解释器。
服务器配置
对于MCP客户端,您需要配置连接到此天气服务器的信息。以下是一个 'config.json' 示例,展示了如何配置一个名为 "weather" 的MCP服务器连接。
{ "mcpServers": { "weather": { "type": "sse", "url": "http://127.0.0.1:3001/sse" } } }
配置参数说明:
- 'server name': 'weather' (服务器名称,客户端用于在配置中引用)
- 'type': 'sse' (传输协议类型,这里使用Server-Sent Events)
- 'url': 'http://127.0.0.1:3001/sse' (服务器SSE端点URL,客户端通过此URL与服务器建立连接)
无需配置启动命令 (command) 和参数 (args)。因为此MCP服务器是一个长期运行的服务,客户端只需要知道服务器的URL即可连接和使用,服务器的启动和运行由用户自行管理。 用户需要先手动启动 'weather_server.py',MCP客户端才能连接。
基本使用方法
-
启动服务器
在项目根目录下,使用以下命令启动天气服务器:
python src/mcp_weather_service/weather_server.py或者,您可以使用Uvicorn启动:
uvicorn mcp_weather_service.weather_server:app --host 127.0.0.1 --port 3001服务器默认监听 'http://127.0.0.1:3001' 地址。
-
验证服务器
-
浏览器验证: 打开浏览器访问 'http://127.0.0.1:3001/sse',如果看到类似 '/weather?session_id=...' 的响应,则服务器运行正常。
-
MCP Inspector: 运行 'scripts/inspect.bat' 启动MCP Inspector,并连接到 'http://127.0.0.1:3001/sse'。您可以使用Inspector测试天气查询工具。
-
-
集成到MCP客户端
配置您的MCP客户端,例如 mcp_gradio_client,将上述 'config.json' 中的配置信息添加到客户端的配置文件中。客户端即可通过 "weather" 这个服务器名称调用天气查询工具。
可用工具
服务器提供以下工具 (Tool):
-
get_current_weather: 获取指定地点的当前天气和天气预报。
输入参数:
{ "location_name": { "type": "string", "description": "The location to get the weather for" } }示例响应:
{ "currently": { "current_temperature": 72.5, "sky": "☀️", "feels_like": 74.2, "humidity": 65, "wind_speed": 8.5, "wind_direction": "NW↗️", "visibility": 10, "uv_index": 5, "description": "Clear skies", "forecasts": [ { "date": "2024-12-05", "high_temperature": 75.8, "low_temperature": 62.4 } ] } }
信息
分类
网页与API