天气查询服务

一个基于OpenWeather API的MCP服务器,提供城市当前温度和天气预报查询功能。

  • by guimancuso
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 guimancuso/railway_openweather_mcp

使用说明

OpenWeather MCP 服务器

一个使用OpenWeather API提供天气查询工具的模型上下文协议(MCP)服务器。

特点/功能

  • get_current_temperature获取某城市的当前温度
  • get_weather_forecast获取某城市的天气预报

技术

  • Python 3.11+
  • FastMCP构建MCP服务器的框架
  • 紫外线现代Python包管理器
  • OpenWeather API天气数据提供商

部署到铁路(系统/网络)

步骤1:设置存储库

这个项目预配置了:

  • Dockerfile 针对紫外线进行了优化
  • railway.toml 带有部署设置
  • 适当的;合适的 .gitignore

步骤2:在Railway中配置环境变量

在铁路仪表板中,配置以下变量:

要求:

  • OPENWEATHER_KEY你的OpenWeather API密钥

第三步:部署

  1. 将您的GitHub仓库连接到Railway
  2. 铁路(系统/平台)将自动检测Dockerfile
  3. 配置环境变量
  4. 自动部署将开始

步骤4:获取URL

部署完成后,铁路部门将为您的MCP服务器提供一个公共URL。

与MCP客户端配合使用

配置您的MCP客户端(如Claude Desktop)以连接到服务器:

{
  "mcpServers": {
    "openweather": {
      "url": "https://your-app.railway.app/mcp",
      "transport": "http"
    }
  }
}

重要提示: MCP HTTP客户端必须发送头部信息 Accept: application/json, text/event-stream 在连接到服务器时。

OpenWeather API

获取免费API密钥:

  1. 参观 OpenWeather(开放天气)
  2. 创建一个账户
  3. 生成一个API密钥

故障排除

错误 400 - 错误请求

如果你遇到400错误,很可能是由以下这些问题之一引起的:

  1. 缺少 Accept 头MCP客户端必须发送 Accept: application/json, text/event-stream
  2. 缺少OPENWEATHER_KEY确保你在Railway中配置了环境变量
  3. 无效的API密钥请验证您的OpenWeather API密钥是否处于激活状态且有效

测试服务器

你可以使用curl来测试你已部署的服务器:

# Test initialization (replace with your Railway URL)
curl -X POST \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0"}}}' \
  https://your-app.railway.app/mcp

如果服务器运行正常,你应该会看到一个包含服务器信息的JSON响应。

项目结构

railway_openweather_mcp/
├── weather_mcp_server_http.py  # Main server code
├── pyproject.toml               # Dependencies and configuration
├── uv.lock                      # UV lock file
├── Dockerfile                   # Docker configuration
├── railway.toml                 # Railway configuration
├── .env.example                 # Example environment variables
├── .gitignore                   # Git ignored files
├── LICENSE                      # MIT License
└── README.md                    # This file

许可证

麻省理工学院(MIT)- 见 许可证 文件详情请见附件