气象MCP服务器
提供实时天气信息的简单模型上下文协议(MCP)服务器。该服务器可供克劳德等人工智能助手使用,以获取和显示世界上任何城市的当前天气数据。
什么是MCP?
模型上下文协议(MCP)是一种标准,允许AI助手连接到外部数据源和工具。该天气服务器实现了MCP,以提供AI助手可以在对话中访问和使用的天气信息。
特性
- 获取任何城市的实时天气数据
- 返回温度、湿度、风速和天气状况
- 会话响应格式
- 针对无效城市和API问题的错误处理
- 遵循MCP协议标准
项目结构
weather-mcp-server/
├── src/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main MCP server implementation
│ └── weather_api.py # Weather API integration
├── test_client.py # CLI client for terminal testing
├── README.md # This file
├── requirements.txt # Python dependencies
├── .env.example # Example environment variables
└── .gitignore # Git ignore rules先决条件
- Python 3.10或更高版本
- 一个OpenWeatherMap API密钥(免费层工作正常)
安装说明
1.克隆或导航到项目
cd MCP-simple2.创建虚拟环境
python -m venv venv3.激活虚拟环境
在macOS/Linux上:
source venv/bin/activate在Windows上:
venv\Scripts\activate4.安装依赖项
pip install -r requirements.txt5.获取OpenWeatherMap API密钥
- 首选 开放天气地图
- 注册一个免费帐户
- 导航到API密钥部分
- 复制API密钥
6.配置环境变量
创建一个 .env 项目根目录中的文件:
cp .env.example .env编辑 .env 文件并添加您的API密钥:
OPENWEATHER_API_KEY=your_actual_api_key_here用法
快速测试-CLI客户端(推荐)
直接在终端中测试服务器的最简单方法:
python3 test_client.py Tbilisi
python3 test_client.py London
python3 test_client.py "New York"这将:
- 启动MCP服务器
- 连接到它
- 获取指定城市的天气数据
- 在您的终端中直接显示结果
运行MCP服务器
通过运行以下命令启动服务器:
python src/server.py服务器将启动并通过stdin/stdout等待MCP协议消息。
MCP检验员测试
要以交互方式测试服务器,您可以使用MCP检查器:
npx @modelcontextprotocol/inspector python src/server.py这将打开一个web界面,您可以在其中:
- 查看可用工具(get_weather)
- 通过提供城市名称来测试该工具
- 查看回复
与Claude Desktop一起使用
要将此服务器与Claude Desktop一起使用,请将其添加到您的Claude配置中:
在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上: %APPDATA%/Claude/claude_desktop_config.json
添加此配置:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/absolute/path/to/MCP-simple/src/server.py"],
"env": {
"OPENWEATHER_API_KEY": "your_api_key_here"
}
}
}
}替换 /absolute/path/to/MCP-simple 了解项目的实际路径。
重新启动Claude Desktop后,您可以提出以下问题:
- “第比利斯今天天气怎么样?”
- “告诉我伦敦的天气”
- “现在东京的天气怎么样?”
运作原理
1.天气API集成(weather_api.py)
这 WeatherAPI 类处理与OpenWeatherMap的通信:
- 使用城市名称获取当前天气数据
- 处理错误(无效城市、API问题、网络问题)
- 将原始API数据格式化为可读格式
2.MCP服务器(服务器.py)
MCP服务器提供:
- 工具注册:注册
get_weather带有描述和模式的工具 - 工具执行:处理获取天气数据的请求
- 响应格式:以对话格式返回天气信息
- 错误处理:出现问题时提供有用的错误消息
3.MCP协议流程
AI Assistant (Claude)
↓
| "What's the weather in Tbilisi?"
↓
MCP Server (server.py)
↓
| Calls get_weather tool
↓
Weather API (weather_api.py)
↓
| Fetches from OpenWeatherMap
↓
Returns formatted weather data
↓
AI Assistant displays response to user查询示例
一旦与Claude集成,您可以问:
- “巴黎的天气怎么样?”
- “莫斯科现在有多冷?”
- “西雅图在下雨吗?”
- “迪拜的气温是多少?”
故障排除
API关键问题
如果您看到有关无效API密钥的错误:
- 检查你的
.env文件存在并且包含正确的密钥 - 验证OpenWeatherMap上的API密钥是否处于活动状态
- 确保没有多余的空间
.env文件
未找到城市
如果找不到城市:
- 检查拼写
- 尝试使用城市的英文名称
- 对于有共同名称的城市,尝试添加国家(例如“法国巴黎”)
导入错误
如果您看到导入错误:
- 确保您处于虚拟环境中(
venv) - 重新安装依赖关系:
pip install -r requirements.txt - 检查你是否使用Python 3.10或更高版本
发展
添加新功能
您可以通过以下方式扩展此服务器:
- 添加更多天气工具(预报、历史数据等)
- 支持不同的天气API
- 添加缓存以减少API调用
- 添加单元测试
编码结构
weather_api.py:全天候API逻辑(易于交换提供程序)server.py:MCP协议实施(工具注册和处理)- 集中处理错误,便于维护
API费率限制
OpenWeatherMap的免费版允许:
- 每分钟60次通话
- 每月100万次通话
这足以供个人使用和测试。
许可证
这个项目是为了教育目的。在了解MCP服务器时,请随时修改和使用它。
了解更多
贡献
这是一个学习项目!请随意:
- 添加新功能
- 改进错误处理
- 添加测试
- 加强文件编制
______________________________________________________________________
使用Python和MCP SDK构建,学习AI助手如何连接到现实世界的数据。
