本项目基于 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
使用 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 是一个 Web 界面工具,可以帮助开发者探索和测试 MCP 服务器的功能:
make dev-server
要添加新的工具,请按照以下步骤操作:
@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 协议快速搭建一个集成天气服务和系统工具的功能平台。通过扩展工具和资源模块,可以进一步增强其功能和适用场景。