天气数据MCP服务器

一个基于FastAPI的云部署MCP服务器,通过美国国家气象局API提供实时天气数据,支持SSE实时通信和API密钥认证。

  • by aman-panjwani
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aman-panjwani/mcp-server-weather-example

使用说明

部署和连接您的远程MCP天气服务器

此项目允许您部署基于云的 模型上下文协议(MCP) 使用美国国家气象局API提供实时天气数据的服务器。它使用FastAPI构建,支持用于实时通信的服务器事件(SSE),并使用安全的API密钥身份验证。

此存储库提供了一个可随时部署的 天气MCP 服务器。您将完成从克隆代码、配置身份验证、部署到Azure容器应用程序,最后在内部连接的完整设置 Visual Studio Code 使用MCP扩展。


克隆存储库

git clone https://github.com/your-username/mcp-weather-server.git
cd mcp-weather-server

了解结构

在部署之前,请熟悉核心组件:

  • weather.py –定义两个工具: get_alerts() 和 get_forecast() 使用美国国家气象局API。
  • main.py –将工具封装在FastAPI应用程序中,该应用程序在 /sse,支持上交所。
  • api_key_auth.py –工具 x-api-key 基于标头的传入请求安全性。
  • Dockerfile –使用Python 3.13和 uv web服务器。

配置API密钥身份验证

通过环境变量安全地设置API密钥:

export API_KEYS=<YOUR_API_KEY>

您还可以提供多个逗号分隔的键。无需将秘密硬编码到源代码中。


构建并部署到Azure容器应用程序

使用Azure CLI在一个步骤中构建和部署:

az containerapp up \
  -g <RESOURCE_GROUP> \
  -n weather-mcp \
  --environment <CONTAINERAPPS_ENV_NAME> \
  -l westus \
  --env-vars API_KEYS=<YOUR_API_KEY> \
  --source .

此命令将:

  • 使用附带的Dockerfile构建映像。
  • 将其部署到Azure容器应用程序。
  • 通过注入API密钥 --env-vars.

部署后,Azure CLI将返回一个公共URL,这是MCP客户端将使用的端点。


从Visual Studio代码连接

服务器启动后,将其连接到VS Code中:

  1. 创建一个 .vscode/mcp.json 项目中的文件:
{
  "inputs": [
    {
      "type": "promptString",
      "id": "weather-api-key",
      "description": "Weather API Key",
      "password": true
    }
  ],
  "servers": {
    "weather-sse": {
      "type": "sse",
      "url": "https://weather-mcp.orangebush.westus.azurecontainerapps.io/sse",
      "headers": {
        "x-api-key": "${input:weather-api-key}"
      }
    }
  }
}
  1. 在VS Code中打开MCP扩展侧栏。
  2. 点击 开始 在您的服务器条目旁边。
  3. 提示时输入API键。

您现在已连接并准备好处理实时天气查询。


尝试使用GitHub Copilot聊天(代理模式)

  1. 在中启动GitHub Copilot聊天 代理模式.
  2. 问这样的问题:

“佐治亚州的天气预报怎么样?”

代理人会打电话给你 get_forecast 该工具在幕后运行,并根据NWS数据返回实时预报。


你都准备好了!

您的MCP服务器现在是:

  • 云托管
  • API-密钥保护
  • 与VS Code和GitHub Copilot集成

现在,您可以构建自定义代理,与来自任何地方的实时天气数据进行交互。