天气工具MCP服务器

一个基于FastAPI的MCP服务器,提供天气警报和预报工具,通过API密钥保护的SSE接口进行通信,适用于Azure容器应用。

  • by krvaghani
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KRVaghani/Azure-MCP-Server

使用说明

Azure容器应用远程MCP服务器示例

此MCP服务器使用SSE传输,并使用API密钥进行身份验证。


项目概述

此项目是为Azure容器应用程序设计的基于FastAPI的模型上下文协议(MCP)服务器。它通过一个安全的、受API密钥保护的服务器事件(SSE)接口提供与天气相关的工具(如警报和预报)。该服务器旨在与MCP兼容的客户端集成,如Visual Studio Code或自定义脚本。

安装说明

  1. 克隆存储库:
    git clone https://github.com/KRVaghani/Azure-MCP-Server.git
    cd Azure-MCP-Server
    
  2. 安装必备组件:
  3. 设置虚拟环境和依赖关系:
    uv venv
    uv sync
    
  4. 设置API键:
    export API_KEYS=devkey  # or your chosen key
    
  5. 运行服务器:
    uv run fastapi dev main.py
    

客户端使用情况

Python客户端示例(model_request_client.py)包含用于命令行交互的:

python model_request_client.py
  • 输入API密钥(默认值:devkey)
  • 选择工具: get_alerts (按美国州)或 get_forecast (按纬度/经度)
  • 输入所需参数
  • 服务器响应将显示在您的终端中

API终点

  • /sse (GET):MCP协议通信的主SSE端点。需要 x-api-key 头球
  • /messages (SSE):内部用于消息流(基于会话)。

卷曲测试示例

curl -H "x-api-key: devkey" http://localhost:8000/sse

故障排除

  • 如果你看到 ModuleNotFoundError,确保您的虚拟环境已激活并安装了依赖项。
  • 如果客户端挂起,请检查服务器是否正在运行以及API密钥是否匹配。
  • 对于venv中的pip问题,运行:
    python -m ensurepip --upgrade
    python -m pip install --upgrade pip
    

贡献

欢迎拉取请求!请先打开一个问题来讨论重大更改。

许可证

MIT许可证(如果需要,添加许可证文件)

在本地运行

先决条件:

在本地运行服务器:

uv venv
uv sync

# linux/macOS
export API_KEYS=<AN_API_KEY>
# windows
set API_KEYS=<AN_API_KEY>

uv run fastapi dev main.py

VS代码MCP配置(MCP.json):

{
    "inputs": [
        {
            "type": "promptString",
            "id": "weather-api-key",
            "description": "Weather API Key",
            "password": true
        }
    ],
    "servers": {
        "weather-sse": {
            "type": "sse",
            "url": "http://localhost:8000/sse",
            "headers": {
                "x-api-key": "${input:weather-api-key}"
            }
        }
    }
}

部署到Azure容器应用程序

az containerapp up -g <RESOURCE_GROUP_NAME> -n weather-mcp --environment mcp -l westus --env-vars API_KEYS=<AN_API_KEY> --source .

如果部署成功,Azure CLI将返回应用程序的URL。您可以使用此URL从Visual Studio代码连接到服务器。

如果部署失败,请在更新CLI和Azure容器应用扩展后重试:

az upgrade
az extension add -n containerapp --upgrade