你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 API 管理中的 REST API 公开为 MCP 服务器

适用于:基本 | 标准 | 高级

在 API 管理中,可以将 API 管理中管理的 REST API 公开为远程 模型上下文协议 (MCP) 服务器。 将一个或多个 API 操作公开,作为 MCP 客户端可以通过 MCP 协议调用的工具。

使用 API 管理公开远程 MCP 服务器可提供对身份验证、授权和监视的集中控制。 它简化了将 API 公开为 MCP 服务器的过程,同时帮助缓解常见的安全风险并确保可伸缩性。

注释

此功能目前处于预览状态。 它将首先发布到 AI Gateway Early 更新组。 加入组后,可能需要 2 小时才能访问 MCP 服务器功能。

在这篇文章中,你将学会如何:

  • 将 API 管理中的 REST API 公开为 MCP 服务器
  • 为 MCP 服务器配置策略
  • 从 MCP 客户端测试生成的 MCP 服务器

关于 MCP 服务器

由于增强的大型语言模型(LLM)功能,AI 代理正被广泛采用。 但是,即使是最先进的模型也面临着限制,因为它们与外部数据隔离。 每个新的数据源可能需要自定义实现来提取、准备和使数据可供模型访问。

模型上下文协议(MCP)可帮助解决此问题。 MCP 是一种开放标准,用于将 AI 模型和代理与外部数据源(例如本地数据源(数据库或计算机文件)或远程服务(通过 Internet 提供的系统(如远程数据库或 API)连接。

MCP 体系结构

下图说明了 MCP 体系结构:

模型上下文协议(MCP)体系结构示意图。

该体系结构包括以下组件:

组件 DESCRIPTION
MCP 主机 需要访问外部功能的 LLM 应用程序包括 IDE 中的聊天应用或 AI 助手(如 Visual Studio Code 中的 GitHub Copilot)
MCP 客户端 在主机应用程序内部,与服务器保持 1:1 连接的协议客户端
MCP 服务器 轻量程序每个都公开特定功能,并为客户提供上下文、工具和提示。
MCP 协议 中间的传输层

MCP 遵循客户端服务器体系结构,其中主机应用程序可以连接到多个服务器。 只要 MCP 主机或客户端需要工具,它就连接到 MCP 服务器。 然后,MCP 服务器连接到数据库或 API。 MCP 主机和服务器通过 MCP 协议相互连接。

远程与本地 MCP 服务器

MCP 利用基于 JSON-RPC 2.0 进行消息传递的客户端主机-服务器体系结构。 客户端和服务器之间的通信通过定义的传输层发生,并且主要支持两种作模式:

  • 远程 MCP 服务器 - MCP 客户端通过 Internet 连接到 MCP 服务器,使用 HTTP 和服务器发送的事件(SSE)建立连接,并使用 OAuth 授权 MCP 客户端访问用户帐户上的资源。

  • 本地 MCP 服务器 MCP 客户端使用标准输入/输出作为本地传输方法连接到同一计算机上的 MCP 服务器。

先决条件

  • 完成以下快速入门:创建一个 Azure API 管理实例。 目前,只有高级层、标准层和基本层的 API 管理支持 MCP 服务器。
  • 确保实例管理要公开为 MCP 服务器的 REST API。 若要导入示例 API,请参阅 导入并发布第一个 API

    注释

    只有来自 API 管理的 HTTP API 才能作为 MCP 服务器公开。

  • 若要测试 MCP 服务器,可以使用 Visual Studio Code 访问 GitHub Copilot

将 API 公开为 MCP 服务器

  1. 在 Azure 门户中,使用以下 URL 访问 MCP 服务器预览版:

    https://portal.azure.com/?Microsoft_Azure_ApiManagement=mcp
    
  2. 导航到 API 管理实例。

  3. 在左侧菜单中,选择 API>MCP 服务器>+ 创建新的 MCP 服务器

  4. API 中,选择要公开为 MCP 服务器的 REST API。

  5. 选择要公开为工具的一个或多个 API 操作。 你可以选择所有操作或仅选择特定操作。

  6. 选择 创建

在门户中创建 MCP 服务器的屏幕截图。

创建了 MCP 服务器,并将 API 操作作为工具公开。 MCP 服务器列在 MCP 服务器 窗格中。 URL 列显示 MCP 服务器的终结点,可以调用该终结点进行测试或在客户端应用程序中。

门户中 MCP 服务器列表的屏幕截图。

为 MCP 服务器配置策略

配置一个或多个 API 管理 策略 以帮助管理 MCP 服务器。 这些策略适用于在 MCP 服务器中公开为工具的所有 API 操作,并可用于控制这些工具的访问、身份验证和其他方面。

有关如何配置策略的教程,请参阅 转换和保护 API

若要为 MCP 服务器配置策略,请执行以下作:

  1. 在门户中的 API 下,选择 MCP 服务器

  2. 选择创建的 MCP 服务器。

  3. 在左侧菜单中的 MCP 下,选择“ 策略”。

  4. 在策略编辑器中,添加或编辑要应用于 MCP 服务器工具的策略。 这些策略以 XML 格式定义。 例如,可以添加策略来限制对 MCP 服务器工具的调用(在此示例中,每个客户端 IP 地址每 30 秒 5 次调用)。

     <rate-limit-by-key calls="5" renewal-period="30" counter-key="@(context.Request.IpAddress)" remaining-calls-variable-name="remainingCallsPerIP" />
    

    MCP 服务器的策略编辑器的屏幕截图。

测试和使用 MCP 服务器

若要验证 MCP 服务器是否正常工作,可以使用 Visual Studio Code 将请求发送到 MCP 服务器工具。

在 Visual Studio Code 中,在代理模式下使用 GitHub Copilot 聊天(预览版)添加 MCP 服务器并使用这些工具。 有关 Visual Studio Code 中 MCP 服务器的背景信息,请参阅 VS Code 中的“使用 MCP 服务器”(预览版)。

在 Visual Studio Code 中添加 MCP 服务器

若要在 Visual Studio Code 中添加 MCP 服务器,请执行以下作:

  1. 使用命令面板中的 MCP: Add Server 命令。

  2. 出现提示时,选择服务器类型:HTTP(HTTP 或服务器发送事件)。

  3. 在 API 管理中输入 MCP 服务器的 URL 。 示例: https://<apim-service-name>.azure-api.net/<api-name>-mcp/sse (对于 SSE 终结点)或 https://<apim-service-name>.azure-api.net/<api-name>-mcp/mcp (对于 MCP 终结点)

  4. 输入您选择的 服务器 ID

  5. 选择是将配置保存到 工作区设置 还是 用户设置

    • 工作区设置 - 服务器配置被保存到一个文件,该文件仅在当前工作区中可用。

    • 用户设置 - 服务器配置将添加到全局 settings.json 文件,可在所有工作区中使用。 配置如下所示:

    Visual Studio Code 中配置的 MCP 服务器的屏幕截图。

为 JSON 配置添加字段,用于设置例如身份验证标头。 以下示例显示了在标头中作为输入值传递的 API 管理订阅密钥的配置。 详细了解 配置格式

MCP 服务器的身份验证标头配置的屏幕截图

在代理模式下使用工具

添加 MCP 服务器后,可以在代理模式下使用工具。

  1. 在 GitHub Copilot 聊天中,选择 代理 模式,然后选择 “工具” 按钮以查看可用的工具。

    聊天中的“工具”按钮的屏幕截图。

  2. 从 MCP 服务器中选择一个或多个可在聊天中使用的工具。

    在 Visual Studio Code 中选择工具的屏幕截图。

  3. 在聊天中输入提示以调用该工具。 例如,如果选择了一个工具来获取有关订单的信息,则可以向代理询问订单。

    Get information for order 2
    

    选择 “继续 ”以查看结果。 代理使用该工具调用 MCP 服务器,并在聊天中返回结果。

    Visual Studio Code 中聊天结果的屏幕截图。