模型上下文协议:AI集成新纪元

模型上下文协议:AI 集成的新纪元

大型语言模型 (LLM) 的出现无疑彻底改变了人工智能的格局。然而,一个持续存在的挑战仍然是:如何有效地将这些模型与专有数据集成。虽然 LLM 擅长处理来自互联网的大量信息,但它们真正的潜力在于充当应用程序和数据的自然语言接口,使我们能够在受控环境中利用它们的预测和生成能力。

为了确保 LLM 输出的可靠性和相关性,各种策略应运而生,每种策略都旨在弥合这些模型与特定数据集之间的差距。这些策略包括创建自定义嵌入和采用检索增强生成 (RAG) 技术——利用图数据库来发现数据中错综复杂的关系——以及利用 LLM 来提取和呈现通过用户提示触发的 OpenAPI 调用获得的数据。此外,OpenAI 的 ChatGPT 推广的插件模型提供了另一种数据集成途径。在这些多样化的方法中,模型上下文协议 (MCP) 作为一种有希望的解决方案脱颖而出,用于标准化 LLM 和外部数据源之间的连接。

揭秘模型上下文协议

模型上下文协议由 Anthropic 在 2024 年底发布,代表着在简化 LLM 和用户特定数据之间交互方面迈出的重要一步。该协议强调了上下文在 AI 应用中的关键作用,承认 AI 提供连贯且有意义的输出的能力取决于相关上下文信息的可用性。仅仅依靠聊天提示来获得明智的响应,充其量是一种乐观的尝试,最坏的情况是导致不准确或误导性结果。为了构建能够围绕我们的数据编排工作流程的强大、半自主代理,一种可靠的机制来将数据交付给这些代理至关重要。

作为一项开源计划,MCP 为各种编程语言提供了 SDK 实现,并在其 GitHub 存储库中附带了全面的文档。该文档使开发人员能够有效地实现或利用 MCP 服务器。该项目将 MCP 描述为“AI 应用的 USB-C 端口”,恰如其分地概括了其本质,突出了其标准化与各种数据源连接的能力。MCP 建立在标准化的基础上,可以轻松地与现有项目集成,并无缝地与各种 LLM 和推理提供程序连接。

MCP 的架构遵循完善的客户端/服务器模型,其中代理负责将 MCP 请求转换为本地或远程请求。这种设计反映了 CORBA 等接口定义语言的功能,将 MCP 转换为一种通用的互操作性层,从而可以无缝地切换信息源和 LLM 应用。通过利用 JSON RPC 连接,MCP 能够通过 Azure API 管理等工具在单个用户级别进行精细控制。

MCP 促进了 AI 驱动代码的通用接口的开发,这体现在其在 Microsoft AI 开发平台上的日益普及。从它在 Semantic Kernel 模型编排工具中的集成到它作为与 Azure OpenAI 和 Azure AI Foundry 兼容的 MCP 服务器的部署,MCP 正在迅速获得关注。Microsoft 还在增强 Azure API 管理的功能,以根据用户凭据控制数据访问,从而进一步巩固 MCP 在安全和受治理的 AI 部署中的作用。

Azure MCP 服务器:早期实现

最近公开发布的开源 Azure MCP 服务器是 Microsoft 平台上 MCP 的早期实现的一个例子。该服务器充当 AI 访问关键 Azure 服务的通用代理,坚持许多最近的 Azure 项目所采用的开源原则。它的代码可以从 GitHub 上轻松访问。Azure MCP 服务器提供对 Azure 平台大部分的访问权限,包括数据库、存储解决方案以及 Azure CLI 等服务。

包含对 Azure CLI(和 Developer CLI)的支持尤其值得注意,因为它使 MCP 驱动的代理能够直接与 Azure 交互,将 MCP 调用视为操作员。这种能力为构建提供 Azure 自然语言自助服务界面的代理铺平了道路。例如,代理可以获取基础设施的描述并自动生成其部署所需的 ARM 模板。进一步扩展这一概念,我们可以设想一个多模式代理,该代理分析白板草图,得出所需资源的描述,然后部署基础设施,从而实现即时代码开发。通过 Azure MCP 服务器访问的其他系统管理服务包括列出当前资源组和利用 KQL 查询 Azure 监控日志。

将 Azure MCP 服务器与 GitHub Copilot Chat 集成

由于它遵循 MCP 标准,Azure MCP 服务器可以与任何支持 MCP 的 AI 工具无缝集成,例如 GitHub Copilot Agent Mode。只需将服务器添加到您的租户,您就可以开始通过 Copilot 提出问题,可以直接提出,也可以通过 Visual Studio Code 集成提出。后一种选项提供了一种有效的方法来学习如何利用 MCP 并为自己的基于 MCP 的 AI 应用构建提示。

目前,Microsoft 尚未为其编程语言发布专用的 MCP 工具,因此需要使用官方 SDK 来开发自定义代码。借助对 TypeScript、C# 和 Python 的支持,开发人员可以访问必要的工具来创建自己的 Azure MCP 代理。可以在 Visual Studio Code 中进行实验,使用现有的 Azure 凭据。

服务器在您的开发 PC 上运行,并且需要 Node.js。安装直接从项目的 GitHub 存储库完成到 VS Code 中。安装完成后,确保将 GitHub Copilot 和 GitHub Copilot Chat 扩展都配置为使用实验性代理模式(可通过 VS Code 设置工具访问)。随后,打开 GitHub Copilot 聊天窗格并切换到代理模式。验证 Azure MCP 服务器是否已安装在工具下拉列表中。您现在可以提交查询,例如“列出我的 Azure 订阅”。

事实证明,该工具对于使用 Azure 的任何人来说都是非常宝贵的,并且超出了 Copilot 集成的范围。Azure MCP 服务器可以安装在任何支持 Node.js 的地方,从而可以将其集成到自定义代理中。

MCP 在 Azure AI Foundry 中的作用

Microsoft 正在迅速扩展其 MCP 工具组合,通过 MCP 公开现有功能或使其能够在代理应用中被使用。这种快速推出包括用于 Copilot Studio 的无代码代理开发的工具,在本篇文章的撰写过程中已宣布。

Azure AI Foundry 是 Microsoft 用于大规模 AI 应用开发的主要开发平台,它也在积极开发 MCP 服务器,以补充 Azure 的 AI 代理服务。这种集成旨在将 Azure AI Foundry 中运行的代理与作为其他 AI 应用一部分运行的客户端连接起来。

这项服务使您能够快速重新利用现有的 AI 代码和服务,并将它们链接到新的应用。诸如 Fabric 之类的服务将其代理功能公开为 AI 代理服务终结点,从而使 AI 应用能够无缝连接到核心业务线数据,从而为减轻幻觉和错误的风险提供重要的基础。

安装后,服务器提供一组 MCP 操作,用于连接到代理并向其发送查询。它还可以列出可用的代理或利用默认代理来执行特定任务。包含对会话线程的支持,从而为代理提供用于上下文对话的基本语义记忆。您将需要 Azure AI 代理服务代理 ID 才能使用 MCP 调用它们。

服务器是用 Python 实现的,可以使用 Azure CLI 通过 pip 安装。或者,如果有人喜欢,也可以使用 TypeScript 版本。与 Azure MCP 服务器类似,此服务器在 AI Foundry 环境之外运行,从而可以将其安装在开发 PC 上,或者作为云托管应用的一部分安装在其自己的容器或 VM 中,并支持 Windows、macOS 和 Linux。

从 Semantic Kernel AI 应用中利用 MCP 服务器

作为开放标准,MCP 使服务器与任何客户端兼容。GitHub 存储库提供了有关如何使用 Anthropic 的 Claude Desktop 建立连接的说明,但真正的价值在于在 Semantic Kernel 中构建自定义代理工作流程。

Microsoft 提供了示例代码,演示了如何将 MCP 支持集成到 Semantic Kernel 编排中,将其视为与熟悉的功能调用集成的内核插件。这些集成可以包装为代理,并根据需要进行访问。虽然 Semantic Kernel 中 MCP 集成仍在开发中,但它可以与其现有功能集无缝集成,只需最少的额外代码即可将服务器中的 MCP 工具公开给 AI 应用。

像 MCP 这样的工具是现代 AI 堆栈的关键组件,它提供了一种标准化的方法来构建本地和远程应用的易于发现的接口。定义完成后,可以轻松调用 MCP 工具,服务器提供可用工具的列表,MCP 为 LLM 提供了调用这些工具并利用其输出的标准化方法。这种方法极大地有助于为 AI 应用提供通用基础工具,并与标准 API、数据库查询和 AI 代理一起工作。