使用说明
MCP天气服务器
这是我为MCP服务器准备的代理型AI实践项目。
这个项目是一个综合性的天气工具服务器,它使用 mcp 库,用于提供来自(某来源)的广泛天气相关数据 Open-Meteo API(开放气象API)。
特点/功能
- 地理编码: 将城市名称转换为经纬度。
- 当前天气: 获取任何地点的最新天气状况。
- 每日预报: 获取长达16天的天气预报。
- 历史数据: 获取指定日期范围内的历史天气信息。
- 空气质量: 获取空气质量数据,包括颗粒物浓度和各种气体水平。
- 异步: 用途
httpx为了高效、非阻塞的API请求。
要求
- Python 3.13+
httpx>=0.28.1mcp[cli]>=1.15.0
安装
-
克隆仓库:
git clone https://github.com/JoshuaChen2048/mcp-server-weather.git cd mcp-server-weather -
安装依赖项:
建议使用虚拟环境。
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt
使用方法
要运行服务器,请执行以下命令:
mcp run server.py
服务器将启动并在标准输入/输出上监听请求。
MCP客户端配置
要使用此工具与MCP客户端配合,您需要配置客户端以运行服务器。
Claude 桌面示例
以下是Claude Desktop的一个示例配置: claude_desktop_config.json:
{
"mcpServers": {
"weather": {
"command": "/Users/JoshuaC/.pyenv/shims/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"/Users/JoshuaC/Documents/projects/mcp-server-weather/server.py"
]
}
}
}
注: 在这个示例中,路径是特定于某个用户环境的。您需要根据实际情况进行调整 command 以及通往……的路 server.py 以匹配您自己的系统配置。
API
get_coordinates_for_city(city_name: str) -> str
根据给定的城市名称检索其纬度和经度。
参数:
city_name(str): 城市名称。
返回值:
str一个包含纬度和经度的JSON字符串,或者如果城市未找到,则返回一条错误信息。
get_current_weather(latitude: float, longitude: float) -> str
获取指定位置的当前天气情况。
参数:
latitude(float): 该位置的纬度。longitude(float): 该位置的经度。
返回值:
str一个包含来自Open-Meteo API的当前天气数据的JSON字符串,如果无法获取数据,则为错误消息。
get_daily_forecast(latitude: float, longitude: float, days: int = 7) -> str
获取指定地点的每日天气预报。
参数:
latitude(float):该位置的纬度。longitude(float):该位置的经度。days(int, 可选):预测的天数,范围在1到16天之间。默认值为7天。
返回值:
str一个包含来自Open-Meteo API的每日天气预报数据的JSON字符串,或者如果无法获取数据,则返回一条错误信息。
get_historical_weather(latitude: float, longitude: float, start_date: str, end_date: str) -> str
检索指定地点和日期范围内的历史天气数据。
参数:
latitude(float): 该位置的纬度。longitude(float): 该位置的经度。start_date(str): 该时间段的开始日期YYYY-MM-DD格式。end_date(str): 该时间段的结束日期为YYYY-MM-DD格式。
返回值:
str一个包含来自Open-Meteo API的历史天气数据的JSON字符串,或者如果无法获取数据,则为一条错误消息。
get_air_quality(latitude: float, longitude: float) -> str
获取指定地点的空气质量数据。
参数:
latitude(float): 该位置的纬度。longitude(float): 该位置的经度。
返回值:
str一个包含来自Open-Meteo API的空气质量数据的JSON字符串,如果无法获取数据,则返回错误消息。
许可证
这个项目遵循MIT许可证授权。详见 许可证 详情请见文件。
