使用说明
气象MCP服务器
概述
该项目实现了一个提供天气信息服务的模型上下文协议(MCP)服务器。它利用美国国家气象局(NWS)API获取天气警报和预报,并将其公开为Claude等MCP客户可以使用的工具。
该服务器采用模块化架构构建,遵循Python项目的最佳实践,使其易于维护和扩展。
特性
- 天气工具:获取各州的天气警报和特定坐标的预报
- 系统工具:运行shell命令并查看系统进程信息
- MCP集成:与Claude Desktop等MCP客户端无缝集成
安装
先决条件
- Python 3.11或更高版本
- 紫外线 包管理器
设置
-
克隆存储库:
git clone https://github.com/yourusername/weather.git cd weather -
使用uv安装依赖项:
make install -
对于开发,请安装其他依赖项:
make dev
用法
运行服务器
要启动MCP服务器,请执行以下操作:
make run
或者直接使用紫外线:
uv run python -m main
连接到克劳德桌面
- 更新您的Claude Desktop配置以包括天气服务器:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["-m", "main"],
"cwd": "/path/to/weather"
}
}
}
-
重新启动Claude Desktop以应用更改
-
在Claude Desktop中,您现在可以从MCP服务器下拉菜单中选择“天气”MCP服务器
Claude Desktop将使用天气MCP服务器,允许您在对话中直接与天气数据交互。
查询示例
连接后,您可以问Claude:
- “加利福尼亚州目前的天气警报是什么?”
- “纬度37.7749,经度-122.4194的预报是什么?”
- “我的系统上哪些进程使用的CPU最多?”
项目结构
weather/
├── src/
│ └── weather/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main server setup
│ ├── tools/ # Tool implementations
│ │ ├── __init__.py
│ │ ├── weather_tools.py
│ │ └── system_tools.py
│ ├── resources/ # Resource implementations
│ │ ├── __init__.py
│ │ └── system_resources.py
│ ├── services/ # External service integrations
│ │ ├── __init__.py
│ │ ├── weather_service.py
│ │ └── system_service.py
│ └── utils/ # Helper functions
│ ├── __init__.py
│ ├── http.py
│ └── formatting.py
├── tests/ # Test suite
├── main.py # Entry point
├── pyproject.toml # Dependencies and metadata
├── Makefile # Build commands
└── README.md # This file
制定目标
该项目包括几个简化开发的目标:
| 目标 | 描述 |
|---|---|
install |
使用uv安装项目依赖项 |
lint |
使用uv自动修复运行褶皱过梁 |
format |
使用uv运行黑色格式化程序 |
format-check |
检查文件是否会被重新格式化为黑色 |
lint-format |
运行linter和格式化程序 |
test |
使用pytest和uv运行测试 |
clean |
删除构建工件和缓存文件 |
outdated |
使用uv检查过时的依赖关系 |
upgrade-deps |
使用uv升级所有过时的依赖项 |
run |
使用uv启动MCP服务器 |
inspector |
启动MCP检查器进行测试 |
hooks |
安装git挂钩 |
dev-server |
以开发模式启动MCP服务器 |
stop-server |
停止MCP服务器和检查器 |
claude-install |
在Claude Desktop中安装服务器 |
claude-uninstall |
从Claude Desktop卸载服务器 |
跑 make help 查看所有可用目标。
与Claude Desktop一起使用
要将天气MCP服务器与Claude Desktop一起使用:
- 在Claude Desktop中安装服务器:
make claude-install
这将:
- 使用MCP CLI在Claude Desktop中安装服务器
- 以可编辑模式安装项目(
-e .) - 使用名称“weather”注册服务器
- 将服务器配置为从项目目录运行
-
重新启动Claude Desktop以应用更改
-
在Claude Desktop中,您现在可以从MCP服务器下拉菜单中选择“天气”MCP服务器
Claude Desktop将使用天气MCP服务器,允许您在对话中直接与天气数据交互。
要从Claude Desktop卸载服务器,请执行以下操作:
make claude-uninstall
这将从Claude Desktop中删除气象MCP服务器配置。您需要重新启动Claude以应用更改。
发展模式
对于代码更改时自动重新加载的主动开发:
# Start the server in development mode with the MCP Inspector
make dev-server
这将:
- 使用启动MCP服务器
mcp dev命令 - 以可编辑模式安装项目(
-e .) - 自动启动MCP检查器
- 启用代码更改时的自动重新加载
MCP检查员将在http://localhost:5173在您的网络浏览器中。
要停止服务器和检查器,请执行以下操作:
make stop-server
这种设置非常适合迭代开发,因为当您对代码进行更改时,服务器会自动重新加载。
检查器功能
MCP检查器允许您:
- 探索工具:查看所有可用工具、其参数和文档。
- 呼叫工具:使用自定义参数执行工具并查看结果。
- 浏览资源:查看所有可用资源及其当前值。
- 测试提示:如果您的服务器提供提示模板,则可以使用不同的输入对其进行测试。
- 查看日志:查看检查器和服务器之间所有交互的详细日志。
测试天气工具
使用Inspector,您可以轻松测试天气工具:
- 查找
get_weather_alerts检查器界面中的工具 - 在参数字段中输入状态代码(例如“CA”、“NY”、“FL”)
- 执行工具并查看结果
同样,您可以测试 get_forecast 该工具通过提供纬度和经度坐标。
测试系统工具
Inspector还可以轻松测试系统工具:
- 查找
run_shell_command工具 - 在参数字段中输入安全命令(例如“ls-la”、“echo hello”)
- 执行工具并查看结果
使用检查器进行调试
检查器对于调试特别有用:
- 如果工具调用失败,它将显示详细的错误消息
- 您可以看到确切的请求和响应有效载荷
- 它有助于识别参数验证或工具实现的问题
有关MCP检查器的更多信息,请访问 模型上下文协议文档.
本地测试
您可以使用附带的MCP CLI工具在本地测试MCP服务器 mcp[cli] 包裹:
-
启动服务器:
make run -
在单独的终端中,使用MCP CLI与服务器交互:
# List all available tools make inspector # Call a specific weather tool mcp call-tool http://localhost:8000 get_weather_alerts --args '{"state": "CA"}' # Get a weather forecast mcp call-tool http://localhost:8000 get_forecast --args '{"latitude": 37.7749, "longitude": -122.4194}' # List system resources mcp list-resources http://localhost:8000 # Get system processes mcp get-resource http://localhost:8000 top_processes
如果您直接使用uv,则可以使用以下命令运行MCP CLI:
uv run mcp list-tools http://localhost:8000
发展
添加新工具
要向服务器添加新工具,请执行以下操作:
- 在相应的工具模块中创建函数
- 向注册
@server.tool()装饰器 - 更新中的工具注册
tools/__init__.py
例子:
@server.tool()
async def my_new_tool(param1: str, param2: int) -> str:
"""
Tool description.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Description of return value
"""
# Implementation
return result
添加新资源
要添加新资源,请执行以下操作:
- 在相应的资源模块中创建函数
- 向注册
@server.resource()装饰器 - 更新中的资源注册
resources/__init__.py
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
致谢
- 模型上下文协议 对于MCP规范
- 美国国家气象局API 获取天气数据