项目简介

该项目是一个端到端的实验,旨在演示如何构建基于Model Context Protocol (MCP) 的服务器,将其容器化并部署到Azure Container Apps,并在Azure API Center中注册,最终通过LangGraph等AI框架发现并利用这些MCP工具。它提供了一个构建简单MCP服务器、部署和集成到Azure生态系统的完整流程。

主要功能点

  • 快速构建MCP服务器: 使用 'FastMCP' 库快速创建符合MCP协议的服务器,用于托管AI工具。例如,仓库中包含了实现汽车零件查询或天气预报工具的MCP服务器示例。
  • Azure云部署: 将MCP服务器打包为容器并部署到Azure Container Apps,利用Azure的弹性伸缩能力和慷慨的免费额度。
  • API中心注册与发现: 在Azure API Center的MCP注册表中注册部署的MCP服务器,使其能被其他应用和LLM客户端轻松发现和管理。
  • AI工具消费: 演示如何通过 'langchain-mcp-adapters' 将已注册的MCP工具集成到 'LangGraph' 驱动的AI应用中,实现LLM对外部工具的智能调用。
  • 安全认证集成: 支持Azure AD认证,确保与Azure OpenAI等服务的安全连接,并提供API Key认证方式。

安装步骤

  1. Azure环境准备: 确保您拥有一个已启用Azure API Center的Azure订阅。
  2. 开发环境配置:
    • 安装 Python 3.10+
    • 安装并配置 Azure CLI
    • 建议安装 VS Code 及 MCP 扩展(可选)。
    • 准备 OpenAI 或 Azure OpenAI 服务访问权限。
  3. 克隆仓库与依赖安装:
    git clone https://github.com/john-carroll-sw/mcp-registry.git
    cd mcp-registry
    # 假设存在requirements.txt,或手动安装所需库:
    # pip install python-dotenv fastmcp httpx langchain-mcp-adapters langgraph langchain-openai azure-identity
  4. 构建与部署MCP服务器: 遵循仓库中 'part1-aca-mcp-weather-lab.md' (或类似指南)的详细说明,构建您的MCP服务器(例如示例中的天气服务器),将其容器化并部署到Azure Container Apps。
  5. 在Azure API Center注册: 按照微软官方文档指导,将您部署的MCP服务器注册到Azure API Center。

服务器配置

MCP客户端需要配置MCP服务器的连接信息。根据MCP服务器的部署方式(本地运行或远程部署),配置信息会有所不同。

  • 本地MCP服务器(例如 'mcp_server_carparts.py')的配置示例: 如果MCP服务器脚本(例如 'mcp_server_carparts.py')在本地运行,MCP客户端可以通过启动命令来连接。以下是一个名为“revparts”的本地服务器配置示例:

    {
        "revparts": {
            "command": "python",
            "args": ["mcp_server_carparts.py"],
            "transport": "sse"
        }
    }
    • 'revparts':客户端为该MCP服务器指定的内部名称。
    • 'command':启动MCP服务器所使用的命令,例如 'python'。
    • 'args':传递给启动命令的参数,这里是服务器脚本 'mcp_server_carparts.py'。
    • 'transport':指定MCP服务器使用的传输协议,这里是 'sse' (Server-Sent Events)。
  • 远程部署的MCP服务器(例如Azure Container Apps上的服务器)的配置示例: 当MCP服务器部署在远程(如Azure Container Apps)时,MCP客户端通过URL进行连接。以下是一个名为“weather”的远程服务器配置示例:

    {
        "weather": {
            "url": "https://your-weather-mcp-server-url/sse",
            "transport": "sse",
            "headers": {
                "x-api-key": "your-api-key-if-required"
            }
        }
    }
    • 'weather':客户端为该MCP服务器指定的内部名称。
    • 'url':部署后的MCP服务器的SSE端点URL。
    • 'transport':指定MCP服务器使用的传输协议,这里是 'sse'。
    • 'headers':可选,用于认证(如API Key)或其他自定义HTTP头。 (本项目中的 'multi_mcp_client.py' 示例主要演示了这种远程连接方式。)

基本使用方法

一旦MCP服务器部署并注册到Azure API Center,您可以运行项目中的客户端示例来连接和使用它:

  1. 设置环境变量: 在项目的 '.env' 文件或系统环境中配置必要的变量,包括您部署的MCP服务器的URL('WEATHER_MCP_URL')、API Key('WEATHER_API_KEY',如果需要)以及Azure OpenAI服务的端点、部署名称和API版本等。
  2. 运行客户端代码: 运行 'multi_mcp_client.py' 脚本。该脚本会使用 'MultiServerMCPClient' 连接到您配置的MCP服务器,自动发现其提供的工具,并利用 'LangGraph' 代理和 Azure OpenAI 模型来调用这些工具,以响应用户查询。例如,它能查询部署的天气服务器获取天气信息。
    python -m asyncio multi_mcp_client.py

信息

分类

AI与计算