天气查询服务

一个基于OpenWeatherMap API的MCP服务器,提供指定城市的当前天气信息,包括温度、湿度和天气描述。

  • by Dineshkumar-Ponnusamy
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Dineshkumar-Ponnusamy/MCP-Server

使用说明

气象代理MCP服务器

示例MCP服务器,使用OpenWeatherMap API提供指定城市的天气信息。

描述

该项目实现了一个名为“天气机器人”的简单模型上下文协议(MCP)服务器。它公开了一个单一的工具,可以获取给定城市的当前天气数据,包括摄氏温度、湿度和天气描述。服务器通过标准I/O(stdio)进行通信,可以与MCP兼容的客户端集成。

在苹果M1 Air上测试。

特性

  • 获取任何城市的当前天气信息
  • 返回格式化的天气数据,包括描述、温度(°C)和湿度
  • 与OpenWeatherMap API集成,提供最新天气数据

安装

  1. 将此存储库克隆或下载到本地计算机。

  2. 安装所需的依赖项:

    pip install -r requirements.txt
    

配置

  1. 从获取API密钥 开放天气地图

  2. 创建一个 .env 文件,并添加您的API密钥:

    WEATHER_API_KEY=your_api_key_here
    

    安全说明: 永远不要承诺你的 .env 文件到版本控制。确保它包含在您的 .gitignore.

用法

使用以下命令运行MCP服务器:

python weather_agent.py

服务器启动并通过stdio监听MCP协议消息。它可以与MCP兼容的应用程序或客户端集成。

与Claude Desktop集成

要使用Claude Desktop测试此MCP服务器,请执行以下步骤:

  1. 确保您的计算机上安装了Claude Desktop。

  2. 找到您的 claude_desktop_config.json 文件。在macOS上,它通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json。您还可以通过UI打开路径,Claude>Settings>Developer>Edit Config。

  3. 打开 claude_desktop_config.json 文件并在JSON对象中添加以下配置(如果存在,则添加到“mcpServers”对象中,或创建它):

{
  "mcpServers": {
    "weather-agent": {
      "command": "python",
      "args": ["/path/to/your/mcp-server/weather_agent.py"]
    }
  }
}

替换 /path/to/your/mcp-server/weather_agent.py 与你的绝对路径 weather_agent.py 文件。例如,路径可能是 /Users/yourusername/Desktop/mcp-server/weather_agent.py.

  1. 保存 claude_desktop_config.json 文件。

  2. 重新启动Claude Desktop以加载新配置。

  3. 在Claude Desktop中,您现在可以与天气代理进行交互。例如,问Claude:“东京的天气怎么样?”它应该使用MCP服务器获取并返回天气信息。

注: 请确保在中配置了API密钥 .env 文件,如配置部分所述,并且Python环境已设置为运行脚本(例如,已安装所需的包)。

API

get_weather(城市:str)->str

获取指定城市的当前天气信息。

参数:

  • city:String-要获取天气的城市名称

退货: 一个格式化的字符串,包含:

  • 城市名称
  • 天气描述
  • 当前温度(摄氏度)
  • 湿度百分比

示例响应:

The current weather in London is overcast clouds with a temperature of 15°C and humidity of 72%.

依赖项

  • requests:用于向天气API发出HTTP请求
  • python-dotenv:用于从.env文件加载环境变量
  • fastmcp:MCP服务器框架

错误处理

如果天气API返回错误或找不到城市,该工具将返回错误消息,指示获取数据失败。

许可证

这是一个示例项目。您可以根据需要自由修改和使用。