README
🚀 天气 MCP 项目
本项目基于 Model Context Protocol (MCP) 构建了一个天气相关服务。该服务不仅能提供天气警报与天气预报功能,还配备系统工具,可执行 shell 命令并查看系统资源,为用户带来便捷的使用体验。
🚀 快速开始
📦 安装依赖
使用 pip 安装所需的依赖库:
pip install "mcp[server]" requests
⚙️ 初始化项目
创建一个新的 MCP 服务器实例,并注册天气工具和系统资源:
from mcp import Server
import subprocess
import requests
server = Server()
# 注册天气工具
@server.tool()
async def get_weather_alerts(state: str) -> dict:
"""
获取指定州的天气警报信息。
Args:
state: 州码(例如:"CA", "NY", "FL")
Returns:
天气警报的详细信息
"""
# 实现获取天气警报的具体逻辑
return {"state": state, "alerts": []}
@server.tool()
async def get_forecast(latitude: float, longitude: float) -> dict:
"""
获取指定纬度和经度位置的天气预报。
Args:
latitude: 纬度坐标
longitude: 经度坐标
Returns:
天气预报的数据
"""
# 实现获取天气预报的具体逻辑
return {"latitude": latitude, "longitude": longitude, "forecast": []}
# 注册系统资源
@server.resource()
def top_processes() -> str:
"""
获取系统的进程信息。
Returns:
进程信息的字符串表示
"""
# 实现获取进程信息的具体逻辑
return subprocess.run("ps aux", capture_output=True, text=True).stdout
# 启动服务器
server.start()
▶️ 运行服务器
启动 MCP 服务器:
python your_server_script.py
✨ 主要特性
- 🌩️ 天气警报:通过输入州码(例如:"CA", "NY", "FL"),获取指定区域的天气警报信息。
- 🌤️ 天气预报:通过提供纬度和经度坐标,获取该位置的天气预报数据。
- 💻 系统工具:执行任意 shell 命令并查看结果。
- 📊 资源浏览:查看可用的系统资源及其当前状态。
💻 使用示例
🧪 测试工具
使用 MCP CLI 工具测试已注册的工具和资源:
- 列出所有可用工具:
mcp list-tools http://localhost:8000 - 调用获取天气警报工具:
mcp call-tool http://localhost:8000 get_weather_alerts --args '{"state": "CA"}' - 获取天气预报:
mcp call-tool http://localhost:8000 get_forecast --args '{"latitude": 37.7749, "longitude": -122.4194}' - 查看系统资源:
mcp list-resources http://localhost:8000 - 获取进程信息:
mcp get-resource http://localhost:8000 top_processes
🔍 使用 MCP Inspector 进行调试
MCP Inspector 是一个 Web 界面工具,可以帮助开发者探索和测试 MCP 服务器的功能:
- 启动 MCP Inspector:
make dev-server - 打开浏览器访问 http://localhost:5173
- 在 Inspector 中探索工具、调用工具、浏览资源以及调试问题。
📚 详细文档
➕ 添加新工具
要添加新的工具,请按照以下步骤操作:
- 在相应的工具模块中创建函数。
- 使用
@server.tool()装饰器注册该函数。 - 更新
tools/__init__.py中的工具注册信息。
示例代码如下:
@server.tool()
async def my_new_tool(param1: str, param2: int) -> str:
"""
工具描述。
Args:
param1: 参数 1 的描述
param2: 参数 2 的描述
Returns:
返回值的描述
"""
# 实现工具的具体逻辑
return 结果
➕ 添加新资源
要添加新的资源,请按照以下步骤操作:
- 在相应的资源模块中创建函数。
- 使用
@server.resource()装饰器注册该函数。 - 更新
resources/__init__.py中的资源注册信息。
📁 项目结构
your_project/
├── server.py # MCP 服务器实现
├── tools/ # 工具模块
│ ├── weather.py # 天气工具
│ └── system.py # 系统工具
├── resources/ # 资源模块
│ ├── weather_data.py # 天气数据资源
│ └── system_info.py # 系统信息资源
└── requirements.txt # 依赖管理文件
📦 依赖管理
项目的依赖项已包含在 requirements.txt 文件中,使用 pip 安装即可:
pip install -r requirements.txt
📄 许可证
本项目遵循 MIT 许可证。请查看 LICENSE 文件获取详细信息。
🤝 贡献指南
欢迎贡献!请参考 CONTRIBUTING.md 获取如何参与开发的详细指南。
这个项目展示了如何利用 MCP 协议快速搭建一个集成天气服务和系统工具的功能平台。通过扩展工具和资源模块,可以进一步增强其功能和适用场景。
Scan to join WeChat group