# 天气 MCP 服务使用指南 这个文档介绍如何使用部署在 Hugging Face Space 上的天气 MCP 服务。该服务提供了基于高德地图 API 的天气查询功能,可以通过 MCP (Model Context Protocol) 协议进行访问。 ## 服务地址 MCP 服务已部署在 Hugging Face Space 上,访问地址为: ``` https://a1c-weather-mcp.hf.space/gradio_api/mcp/sse ``` ## 可用工具 该 MCP 服务提供以下工具: 1. **weather_mcp_update_api_key** - 更新API密钥并返回状态信息 - 参数:`api_key` (字符串) - 高德地图API密钥 2. **weather_mcp_weather_ui** - 简单的Gradio界面函数,用于测试天气查询 - 参数:`city` (字符串) - 要查询的城市名称 - 参数:`api_key_status` (字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能" 3. **weather_mcp_forecast_ui** - 简单的Gradio界面函数,用于测试天气预报查询 - 参数:`city` (字符串) - 要查询的城市名称 - 参数:`api_key_status` (字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能" 4. **weather_mcp_search_ui** - 简单的Gradio界面函数,用于测试城市搜索 - 参数:`keyword` (字符串) - 城市名称关键词 - 参数:`api_key_status` (字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能" ## 调用方式 ### 1. 使用 Hugging Face InferenceClient (推荐) 这是最简单的调用方式,适合大多数 Python 用户。 ```python from huggingface_hub import InferenceClient # 创建客户端 client = InferenceClient(model="a1c/weather-mcp") # 首先设置API密钥 api_key = "您的高德地图API密钥" response = client.chat(messages=[ {"role": "user", "content": {"type": "tool_call", "name": "weather_mcp_update_api_key", "parameters": {"api_key": api_key}}} ]) api_key_status = response # 保存API密钥状态 # 获取实时天气 response = client.chat(messages=[ {"role": "user", "content": {"type": "tool_call", "name": "weather_mcp_weather_ui", "parameters": {"city": "北京", "api_key_status": api_key_status}}} ]) print(response) # 获取天气预报 response = client.chat(messages=[ {"role": "user", "content": {"type": "tool_call", "name": "weather_mcp_forecast_ui", "parameters": {"city": "上海", "api_key_status": api_key_status}}} ]) print(response) # 搜索城市 response = client.chat(messages=[ {"role": "user", "content": {"type": "tool_call", "name": "weather_mcp_search_ui", "parameters": {"keyword": "广", "api_key_status": api_key_status}}} ]) print(response) ``` ### 2. 使用 Python MCP 客户端库 如果你需要更多控制或想使用原生 MCP 客户端,可以使用 MCP 库: ```python import asyncio from mcp import ClientSession from mcp.client.sse import sse_client async def main(): server_url = "https://a1c-weather-mcp.hf.space/gradio_api/mcp/sse" # 创建 SSE 连接 async with sse_client(url=server_url) as streams: # 创建客户端会话 async with ClientSession(*streams) as session: # 初始化会话 await session.initialize() # 列出可用工具 response = await session.list_tools() print("可用工具:", [tool.name for tool in response.tools]) # 首先设置API密钥 api_key = "您的高德地图API密钥" result = await session.call_tool("weather_mcp_update_api_key", {"api_key": api_key}) api_key_status = result.content # 保存API密钥状态 # 调用工具示例 result = await session.call_tool("weather_mcp_weather_ui", {"city": "北京", "api_key_status": api_key_status}) print(result.content) asyncio.run(main()) ``` ### 3. 使用 mcp-remote 命令行工具 对于喜欢命令行操作的用户,可以使用 mcp-remote 工具: ```bash # 安装 mcp-remote npm install -g mcp-remote # 连接到 MCP 服务 npx mcp-remote https://a1c-weather-mcp.hf.space/gradio_api/mcp/sse --transport sse-only ``` 连接后,可以在交互式界面中输入 JSON 格式的工具调用: ```json # 首先设置API密钥 {"type": "tool_call", "name": "weather_mcp_update_api_key", "parameters": {"api_key": "您的高德地图API密钥"}} # 然后查询天气 {"type": "tool_call", "name": "weather_mcp_weather_ui", "parameters": {"city": "北京", "api_key_status": "✅ API密钥已设置"}} ``` ### 4. 在 AI 应用中配置 MCP 服务 如果你正在使用支持 MCP 的 AI 应用(如 Cursor、Claude 等),可以使用以下配置: ```json { "mcpServers": { "weather": { "command": "npx", "args": [ "mcp-remote", "https://a1c-weather-mcp.hf.space/gradio_api/mcp/sse", "--transport", "sse-only" ] } } } ``` ## 示例代码 我们提供了一个完整的示例脚本 `usage_mcp.py`,它演示了上述所有调用方式。运行该脚本: ```bash python usage_mcp.py ``` 然后按照提示选择不同的调用方式进行测试。 ## 使用流程 1. 首先调用 `weather_mcp_update_api_key` 设置高德地图 API 密钥 2. 获取 API 密钥状态信息 3. 使用获取到的 API 密钥状态信息作为参数调用其他工具 ## 注意事项 1. 服务使用高德地图 API,确保查询的是中国城市 2. 部分城市可能需要添加"市"或"省"后缀,如"北京市" 3. 必须先设置有效的 API 密钥才能使用天气查询功能 4. 如果遇到连接问题,请检查网络连接和服务状态 ## 常见问题 **Q: 为什么我无法连接到 MCP 服务?** A: 请确保你的网络可以访问 Hugging Face 服务,并且服务正常运行。 **Q: 为什么设置了 API 密钥但仍然无法查询天气?** A: 确保使用了正确的 API 密钥状态参数,并且 API 密钥是有效的高德地图 API 密钥。 **Q: 如何查找更多城市?** A: 使用 `weather_mcp_search_ui` 工具,输入关键词即可搜索匹配的城市。 **Q: 天气数据多久更新一次?** A: 天气数据来自高德地图 API,实时更新。