Spaces:
Sleeping
A newer version of the Gradio SDK is available: 6.17.3
天气 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 服务提供以下工具:
weather_mcp_update_api_key - 更新API密钥并返回状态信息
- 参数:
api_key(字符串) - 高德地图API密钥
- 参数:
weather_mcp_weather_ui - 简单的Gradio界面函数,用于测试天气查询
- 参数:
city(字符串) - 要查询的城市名称 - 参数:
api_key_status(字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能"
- 参数:
weather_mcp_forecast_ui - 简单的Gradio界面函数,用于测试天气预报查询
- 参数:
city(字符串) - 要查询的城市名称 - 参数:
api_key_status(字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能"
- 参数:
weather_mcp_search_ui - 简单的Gradio界面函数,用于测试城市搜索
- 参数:
keyword(字符串) - 城市名称关键词 - 参数:
api_key_status(字符串) - API密钥状态信息,默认值:"⚠️ 未设置API密钥,请先设置API密钥后才能使用天气查询功能"
- 参数:
调用方式
1. 使用 Hugging Face InferenceClient (推荐)
这是最简单的调用方式,适合大多数 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 库:
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 工具:
# 安装 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 格式的工具调用:
# 首先设置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 等),可以使用以下配置:
{
"mcpServers": {
"weather": {
"command": "npx",
"args": [
"mcp-remote",
"https://a1c-weather-mcp.hf.space/gradio_api/mcp/sse",
"--transport",
"sse-only"
]
}
}
}
示例代码
我们提供了一个完整的示例脚本 usage_mcp.py,它演示了上述所有调用方式。运行该脚本:
python usage_mcp.py
然后按照提示选择不同的调用方式进行测试。
使用流程
- 首先调用
weather_mcp_update_api_key设置高德地图 API 密钥 - 获取 API 密钥状态信息
- 使用获取到的 API 密钥状态信息作为参数调用其他工具
注意事项
- 服务使用高德地图 API,确保查询的是中国城市
- 部分城市可能需要添加"市"或"省"后缀,如"北京市"
- 必须先设置有效的 API 密钥才能使用天气查询功能
- 如果遇到连接问题,请检查网络连接和服务状态
常见问题
Q: 为什么我无法连接到 MCP 服务?
A: 请确保你的网络可以访问 Hugging Face 服务,并且服务正常运行。
Q: 为什么设置了 API 密钥但仍然无法查询天气?
A: 确保使用了正确的 API 密钥状态参数,并且 API 密钥是有效的高德地图 API 密钥。
Q: 如何查找更多城市?
A: 使用 weather_mcp_search_ui 工具,输入关键词即可搜索匹配的城市。
Q: 天气数据多久更新一次?
A: 天气数据来自高德地图 API,实时更新。