Weather Mcp Server Ujh

Weather Mcp Server Ujh

🚀 天气 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 工具测试已注册的工具和资源:

  1. 列出所有可用工具:
    mcp list-tools http://localhost:8000
    
  2. 调用获取天气警报工具:
    mcp call-tool http://localhost:8000 get_weather_alerts --args '{"state": "CA"}'
    
  3. 获取天气预报:
    mcp call-tool http://localhost:8000 get_forecast --args '{"latitude": 37.7749, "longitude": -122.4194}'
    
  4. 查看系统资源:
    mcp list-resources http://localhost:8000
    
  5. 获取进程信息:
    mcp get-resource http://localhost:8000 top_processes
    

🔍 使用 MCP Inspector 进行调试

MCP Inspector 是一个 Web 界面工具,可以帮助开发者探索和测试 MCP 服务器的功能:

  1. 启动 MCP Inspector:
    make dev-server
    
  2. 打开浏览器访问 http://localhost:5173
  3. 在 Inspector 中探索工具、调用工具、浏览资源以及调试问题。

📚 详细文档

➕ 添加新工具

要添加新的工具,请按照以下步骤操作:

  1. 在相应的工具模块中创建函数。
  2. 使用 @server.tool() 装饰器注册该函数。
  3. 更新 tools/__init__.py 中的工具注册信息。

示例代码如下:

@server.tool()
async def my_new_tool(param1: str, param2: int) -> str:
"""
工具描述。

Args:
param1: 参数 1 的描述
param2: 参数 2 的描述

Returns:
返回值的描述
"""
# 实现工具的具体逻辑
return 结果

➕ 添加新资源

要添加新的资源,请按照以下步骤操作:

  1. 在相应的资源模块中创建函数。
  2. 使用 @server.resource() 装饰器注册该函数。
  3. 更新 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 协议快速搭建一个集成天气服务和系统工具的功能平台。通过扩展工具和资源模块,可以进一步增强其功能和适用场景。

  • 0 关注
  • 0 收藏,15 浏览
  • system 提出于 2025-09-21 05:48

相似服务问题

相关AI产品