项目简介

本项目 'azure-container-apps-mcp-sample' 是一个使用 Python 和 FastAPI 框架构建的 MCP 服务器示例,旨在演示如何在 Azure 容器应用中部署一个远程 MCP 服务器,并通过 SSE (Server-Sent Events) 协议与 MCP 客户端进行通信。该服务器提供查询天气预警和天气预报的功能,并通过 API 密钥进行身份验证,确保安全性。

主要功能点

  • 提供天气信息查询工具: 实现了 'get_alerts' (获取天气预警) 和 'get_forecast' (获取天气预报) 两个工具,允许 LLM 客户端调用以获取指定地区的天气信息。
  • 基于 FastMCP 框架: 使用 'mcp.server.fastmcp' 库简化 MCP 服务器的开发。
  • SSE 传输协议: 采用 SSE 作为 MCP 服务器与客户端之间的通信协议,支持实时数据推送。
  • API 密钥认证: 通过 API 密钥对客户端请求进行身份验证,保障服务器安全。
  • 易于部署到 Azure 容器应用: 提供了详细的 Azure 容器应用部署指南,方便用户快速部署和使用。
  • 本地运行支持: 支持本地运行,方便开发和测试。

安装步骤

  1. 安装 Python 3.11+ 和 uv: 确保你的开发环境中安装了 Python 3.11 或更高版本,并安装了 'uv' 包管理器 (推荐)。

    # 按照 README.md 中的 uv 安装指南进行安装
    # 例如: pip install uv
  2. 创建虚拟环境并安装依赖: 在项目根目录下,使用 'uv' 创建虚拟环境并安装项目依赖。

    uv venv
    uv sync
  3. 配置 API 密钥: 设置环境变量 'API_KEYS',用于 API 密钥认证。可以设置多个 API 密钥,用逗号分隔。

    • Linux/macOS:
      export API_KEYS=<你的API密钥>
    • Windows:
      set API_KEYS=<你的API密钥>
      注意: '<你的API密钥>' 请替换为你想要设置的 API 密钥。
  4. 运行 MCP 服务器: 使用 'uv run' 命令启动 FastAPI 服务器。

    uv run fastapi dev main.py

    服务器默认运行在 'http://localhost:8000',SSE 端点为 '/sse'。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置以下信息才能连接到此 MCP 服务器。以下是一个符合 'mcp.json' 格式的配置示例,用于 Visual Studio Code MCP 客户端插件:

{
    "inputs": [
        {
            "type": "promptString",
            "id": "weather-api-key",
            "description": "天气服务 API 密钥",
            "password": true
        }
    ],
    "servers": {
        "weather-sse": {
            "type": "sse",
            "url": "http://localhost:8000/sse",  // MCP 服务器 SSE 端点 URL
            "headers": {
                "x-api-key": "${input:weather-api-key}" //  API 密钥,从用户输入中获取
            }
        }
    }
}

配置参数说明:

  • '"servers"': 定义 MCP 服务器连接配置。
    • '"weather-sse"': 服务器名称,可以自定义。
      • '"type": "sse"': 指定传输协议为 SSE。
      • '"url": "http://localhost:8000/sse"': 服务器 URL 地址,指向 MCP 服务器的 SSE 端点。如果部署到 Azure 容器应用,需要替换为 Azure 提供的应用 URL,例如 'https://<你的应用域名>/sse'。
      • '"headers"': HTTP 请求头配置。
        • '"x-api-key": "${input:weather-api-key}"': API 密钥,用于服务器身份验证。'${input:weather-api-key}' 表示从 'inputs' 中定义的 'weather-api-key' 输入项获取用户输入的 API 密钥。客户端会提示用户输入 "天气服务 API 密钥" 并将其值自动填充到请求头中。

基本使用方法

  1. 启动 MCP 服务器: 按照安装步骤运行 MCP 服务器。
  2. 配置 MCP 客户端: 在 MCP 客户端 (例如 VS Code MCP 插件) 中,添加上述 'mcp.json' 配置,并根据实际情况修改 'url' 和 'server name'。
  3. 连接 MCP 服务器: 在 MCP 客户端中选择配置好的服务器,连接到 MCP 服务器。
  4. 调用工具: 在 LLM 应用或 MCP 客户端中,可以使用工具名称 (例如 'weather/get_alerts', 'weather/get_forecast') 调用 MCP 服务器提供的天气查询工具,并传递相应的参数 (例如州代码、经纬度)。服务器将返回天气信息。

信息

分类

网页与API