MCP力量释放:深入剖析Anthropic的AI界“USB-C”
大型语言模型 (LLMs) 的领域经常需要将它们连接到外部资源,如数据存储库、专用工具或应用程序编程接口 (API),以释放它们的真正潜力。然而,一直以来都缺少一种用于这种集成的标准化方法——直到现在。
Anthropic 提出了一种潜在的解决方案:模型上下文协议 (MCP),这是一种旨在成为 AI 世界“USB-C”的开放协议。让我们详细探讨 MCP,检查其功能、应用程序、挑战和部署策略。
最近推出的 MCP 是 Claude 模型创建者牵头的一个开源项目。它设想了一种通用的开放标准,可以将 AI 系统与各种数据源无缝连接。
MCP 将其覆盖范围扩展到简单的数据库之外,从而可以访问各种工具和资源。这些功能包括查询数据库、启动 Docker 容器,甚至与流行的消息传递平台(如 Slack 或 Discord)进行交互。
无论是将 LLM 与 SQL 数据库集成、管理 Kubernetes 集群,还是自动执行 Jira 任务,都极有可能已经存在合适的 MCP 服务器。该项目的势头非常显著,吸引了 OpenAI 和 Google 等行业巨头的极大兴趣和支持。
本次探索将深入研究 MCP 的实际方面,重点介绍其潜在应用、固有挑战以及使用 Open WebUI 部署 MCP 服务器并将其与 Claude Desktop 和自定义模型集成的方法。
理解 MCP:客户端-服务器架构
MCP 基于传统的客户端-服务器架构运行,由三个基本元素组成:主机、客户端和服务器。
主机通常是面向用户的界面,例如 Claude Desktop 或集成开发环境 (IDE),如 Cursor。它负责管理一个或多个 MCP 客户端。
每个客户端通过 MCP 协议与服务器建立专用连接。客户端和服务器之间的通信通过 JSON-RPC 消息进行,传输层根据具体的实现而有所不同。当前支持的传输层包括 Stdio、HTTP 和服务器发送事件 (SSE)。
MCP 服务器向客户端公开特定功能,使其可以以标准化方式供主机访问。这种统一的可访问性是 MCP 经常被比作 AI 的 USB-C 的核心原因。
就像 USB 通过消除外围设备和存储设备的不同接口的需求来彻底改变连接性一样,MCP 致力于为模型创建一个通用语言来与数据和工具进行交互。
MCP 服务器的角色取决于资源的位置。对于本地资源,例如 SQLite 数据库,服务器直接访问该资源。对于远程资源,例如 S3 存储桶,它充当桥梁,中继 API 调用。这种桥接功能加强了 USB-C 的类比,因为 MCP 服务器通常充当适配器,将特定于供应商的接口转换为语言模型可以轻松理解的标准化格式。
一致的暴露和响应机制是 MCP 的一个关键方面,确保了不同资源之间的一致性。
MCP 最吸引人的功能之一是其双向通信能力。主机应用程序不仅可以从服务器请求数据,而且服务器还可以通过采样/createMessage 请求与客户端的 LLM 进行通信。虽然此功能尚未得到普遍支持,但它为激动人心的代理工作流程铺平了道路。
在对 MCP 有了基本的了解之后,让我们检查一下它的实际应用。
MCP 实战:使用 Claude Desktop 进行测试
鉴于 Anthropic 对 MCP 的开发,Claude Desktop 提供了一个直接的环境来进行初步实验。
对于喜欢避免第三方 LLM 提供商的用户,后续部分将介绍如何将 MCP 服务器连接到本地模型和 Open WebUI 界面。
除了 Claude Desktop 之外,还需要一些依赖项,因为 MCP 服务器可以在各种环境中运行。对于此演示,必须安装 Node.js、Python 3 和 Python 的 UVX 包管理器。
安装必要的依赖项后,启动 Claude Desktop 并使用 Anthropic 帐户登录。导航到应用程序设置,然后导航到“Developer”选项卡。
单击“Edit Config”按钮将自动在 macOS 上的 ~/Library/Application Support/Claude/
文件夹或 Windows 上的 %APPDATA%\\Claude\\
文件夹中生成一个空的 claude_desktop_config.json
文件。此文件将包含 MCP 客户端配置。系统时间和文件系统 MCP 服务器将用于测试目的。
在文本编辑器或 IDE(例如 VSCodium)中打开 claude_desktop_config.json
文件,并将内容替换为以下时间服务器配置,根据需要调整时区: