随着大语言模型(LLM)能力的突飞猛进,AI 助手在各种场景中开始崭露头角。然而,单纯依赖模型自身的训练数据和推理能力,往往难以获取最新的业务数据和执行外部操作。模型需要打破数据孤岛,与实际系统和工具互动,才能输出更准确、更有用的结果。MCP(Model Context Protocol)应运而生,它是由 Anthropic 在 2024 年发布的开放标准协议,旨在为 AI 应用提供一种“USB-C 接口”式的通用连接方案。借助 MCP,开发者可以轻松地让模型访问外部数据源、调用工具功能,从而让前沿模型产生更相关、更丰富的回答。MCP 为构建 Agent 搭建了一座桥梁,使 AI 可以自动处理机械化任务,让开发者专注于创造。
AI 集成的挑战
在 MCP 出现之前,将 AI 模型与外部系统对接是一项复杂工程。每个数据源(如 GitHub、数据库、第三方服务)都有自己的 API 接口或定制方案,AI 应用需要为每一种情况单独编写对接逻辑,导致大量重复工作和维护成本。
业界形象地称之为“N×M 问题”:众多 AI 客户端(如 IDE、聊天助手)需要连接众多服务器/工具,形成错综复杂的集成网络,难以扩展。
MCP 的提出旨在统一这一切:它为 AI 应用和外部系统之间搭建了一个标准化的双向通道,替代了过去分散的点对点集成方案,使系统架构更简单、更可靠。
换句话说,MCP 就像为 AI 提供了一个通用接口,各种工具都可以互通有无,从而打破信息孤岛,让 AI 在不同任务和环境间自由切换而不丢失上下文。
MCP 协议、组件与机制
MCP 基于客户端-服务器架构,主要由三类角色构成:主机(Host)、客户端(Client)和服务器(Server)。
其中,主机应用是具备 LLM 功能的程序(如 Claude 桌面版、Cursor IDE、Codeium 等),负责管理模型和用户的交互流程;MCP 客户端则运行在主机内部,与每个服务器保持一对一的长连接,负责在主机和服务器间路由消息、协商协议;MCP 服务器负责对外提供具体功能(如访问某个数据源、执行特定操作)。协议层负责定义消息格式(基于 JSON-RPC)和通信约定。
如上图所示,主机(左侧)可以同时运行多个 MCP 客户端,它们分别连接到不同的 MCP 服务器。每个服务器聚焦提供一种集成功能,比如服务器 A 可能包装了本地文件系统接口,服务器 B连接数据库,服务器 C 对接某个在线服务,等等。
主机通过标准的 MCP 协议依次与这些服务器通信,无需针对每种新服务编写额外逻辑。MCP 的架构灵感来自语言服务器协议(LSP),旨在为 AI 应用提供类似“即插即用”的扩展能力。
在上述架构中,各组件职责如下:
- 主机应用(Host)负责整体流程控制,管理与多个客户端的生命周期,并可决定用户授权等策略。
- 每个客户端(Client)维持与对应服务器的状态连接,负责路由请求/响应、记录服务器提供的功能(工具、资源、提示模板等),并在初始化时协商协议版本和功能列表。
- 服务器(Server)则是扩展 LL 功能的核心:它通过工具(Tools)暴露可执行的函数接口,让模型能够直接调用外部功能;通过资源(Resources)向模型提供上下文数据(如文件内容、数据库记录等);通过提示模板(Prompts)提供预定义的交互指导。工具由模型自动发现和调用,而资源和提示由用户或主机控制。
总结来说,MCP 协议使得主机→客户端→服务器之间的交互和工具调用都变得标准化、可组合,各组件之间清晰分工,极大提升了系统互操作性。
关键组件详解
- 工具(Tools):服务器对外提供的可执行操作,等价于函数或 API 调用。比如 YouTube 服务器可能提供 search_videos(搜索视频)、get_video_details(获取视频统计)等工具;邮件服务器提供 send_email、get_inbox 等工具。工具带有名称、描述和参数模式,客户端可通过 tools/list 发现可用工具,模型可通过 tools/call 来调用它们。工具设计为由模型控制(model-controlled),意味着模型可以自动根据用户意图选择并调用相应工具。
- 资源(Resources):服务器对外暴露的数据内容,用于为模型提供上下文信息。资源可以是文本文件、数据库记录、网页 API 返回结果、日志、图像等任何数据,统一通过 URI 标识。客户端或用户可以根据需要选择订阅和使用哪些资源,不同客户端可有不同策略(比如 Claude 需要用户手动选择,其他客户端可能自动匹配)。资源为模型补充了额外情境,帮助模型理解业务环境。
- 提示词模板(Prompts):服务器预定义的交互模板或指令流程,可作为快捷方式引导模型完成常见任务。提示词由名字和参数组成,可接收动态参数并利用资源上下文,支持多轮对话和工作流程分步展开。例如,服务器可能提供一个“Analyze code”提示,帮助模型一步步分析代码。提示词是用户可控的(user-controlled),用户在客户端界面中可显式选择使用哪些提示词。
MCP 如何解决现有问题
通过以上设计,MCP 从根本上解决了AI工具集成的碎片化问题。过去,每增加一个 AI 应用就要为每个数据源单独适配一套接口,而现在采用 MCP 协议后,只需遵循统一规范,即可让任何客户端与任何服务器协同工作。
这减少了开发者的重复工作,也降低了系统维护成本。随着生态系统的成熟,AI 应用将在不同工具和数据间保持一致的上下文,取代原有的臃肿架构。
同时,MCP 也建立在主流模型支持的函数调用机制之上,将“工具调用”能力标准化,使得原来仅限于特定平台(如 OpenAI 的自定义 GPT)的功能,能够应用于任何实现了 MCP 的AI应用。
MCP 对 LLM 自动化与 Agent 系统的意义
MCP 的出现对 Agent 和自动化流程具有深远影响。引入 MCP 后,LLM 不仅仅是输出文字的“黑盒子”,还能主动调用外部功能、持续保持状态与上下文。
例如,Cursor、Claude Desktop 等 IDE/聊天工具集成 MCP,让开发者可以直接在聊天中用自然语言让模型搜索文档、读取代码仓库、调用 API、编辑界面等。这样一来,模型成为真正的“智能助理”,能够执行任务而非仅给建议。正如业内所说,MCP 将推动 AI 从“交互式助手”迈向“自主型 Agent”,让模型自动完成更多机械化工作。
当前,包括代码开发工具商、设计工具平台等都在积极跟进 MCP,期待借此提高模型的上下文感知力和操作能力。
基于 Cursor 连接 MCP 服务器
前提条件
安装 Node.js 并确保可用。
在 Cursor 中启用 MCP 服务器
可以在 Cursor 中打开命令面板并搜索设置:
找到 MCP 选项:
集成 MCP 服务器
我们将使用Composio 作为服务器,因为它们具有内置的身份验证。
内置身份验证支持 OAuth、API 密钥、JWT 和基本身份验证。这意味着您不必创建自己的登录系统。完全托管的服务器消除了复杂设置的需要,使得将 AI Agent与 250 多种工具(如Gmail、Slack、Notion、Linear 等)集成变得简单。
以 Gmail MCP 服务器为例:
npx @composio/mcp@latest setup "https://mcp.composio.dev/gmail/xyzxyz..." --client cursor
在终端中运行此命令并重新启动 Cursor。
如果使用 Python,安装 composio-toolset 如下:
### pip install composio_openai
from composio_openai import ComposioToolSet, App
from openai import OpenAI
openai_client = OpenAI()
composio_toolset = ComposioToolSet(entity_id="default")
tools = composio_toolset.get_tools(apps=[App.GMAIL])
根据使用情况最终配置:
- 对于特定于项目的工具,在项目目录中创建一个文件。这允许定义仅在该特定项目中可用的 MCP 服务器。
- 对于希望在所有项目中使用的工具,在主目录中创建一个文件。这使得 MCP 服务器在所有的 Cursor 工作区中可用。终端将强制执行第二个选项,使其全局可访问。
成功集成:
mcp.json如下:
{
"mcpServers": {
"gmail_composio": {
"url": "https://mcp.composio.dev/gmail/freezing-wrong-dress-7RHVw0"
}
}
}
STDIO 服务器配置
使用标准输入/输出(STDIO)传输和 Python 脚本设置 MCP 服务器。这种方法主要用于本地开发。
// CLI server Python
// This example demonstrated an MCP server using the stdio format
// Cursor automatically runs this process for you
// This uses a Python server, run with `python`
{
"mcpServers": {
"server-name": {
"command": "python",
"args": ["mcp-server.py"],
"env": {
"API_KEY": "value"
}
}
}
}
在 Agent 中使用服务器
确保检查 composio mcp 服务器页面上的可用操作。
可以启用Agent Mode,这是 Cursor 中最自主的模式,旨在以最少的指导处理复杂的编码任务。
由于没有活动连接,它将首先建立一个连接,需要授权。
成功获取电子邮件。
实用示例
使用 YouTube MCP 服务器查询热门视频
利用 Composio 提供的 YouTube MCP 服务器,演示如何用自然语言查询热门视频。首先需要连接服务器。在支持 MCP 的客户端(如 Cursor IDE)中运行命令,将 YouTube MCP 服务器添加到配置中:
npx @composio/mcp@latest setup "https://mcp.composio.dev/youtube/your-server-id" --client cursor
执行后,Cursor 的 mcp.json 配置文件会新增一项,如:
{
"mcpServers": {
"youtube_composio": {
"url": "https://mcp.composio.dev/youtube/your-server-id"
}
}
}
然后首次使用时,需要在浏览器中打开弹出的 OAuth 链接,完成授权,允许 MCP 服务器读取 YouTube 数据。
配置完成后,我们可以在 Cursor 的聊天框输入类似:“Fetch me the top 5 videos about Model Context Protocol based on views and likes. ”(请基于播放量和点赞数列出前5个关于‘模型上下文协议’的YouTube热门视频)。Cursor 会首先检查与服务器的连接,然后依次调用 YouTube 工具:如 YOUTUBE_CHECK_ACTIVE_CONNECTION(检查连接)、YOUTUBE_SEARCH_YOUTUBE(搜索视频)、YOUTUBE_VIDEO_DETAILS(获取视频详情)等,并最终汇总结果返回。下图展示了查询过程及部分结果:
通过 MCP 工具搜索 “Model Context Protocol” 相关视频。可以看到,系统自动调用了多个工具,并返回了热门视频列表
图中可以看到,Cursor 依次执行了连接检查、视频搜索和详情查询工具,最终按观看量与点赞数为基础得出排名前两条视频的信息。
通过这个示例,MCP 将复杂的 API 调用流程封装为连续的工具调用,用户无需手动拼接 API 请求或处理分页,只需像和聊天机器人对话一样下达指令即可获取信息。
通过 Cursor 与 Figma 的 MCP 集成,读取和修改设计
这个示例展示如何让 LLM 直接操作设计工具。这里我们使用开源的 Cursor Talk to Figma MCP 项目,实现 Cursor 与 Figma 的互通。首先,在主机端安装和配置环境(需要 Bun)
-
克隆项目代码并安装依赖(假定已进入项目目录):
bun setup该命令会安装 MCP 相关依赖,并在 Cursor 的配置中添加 MCP 服务器。
-
启动项目中的 WebSocket 服务,它负责协调 Cursor 和 Figma 之间的通信:
bun socket -
在 Cursor 的 MCP 配置文件(通常为
~/.cursor/mcp.json)中添加 Figma 服务器定义,例如:{ "mcpServers": { "TalkToFigma": { "command": "bunx", "args": ["cursor-talk-to-figma-mcp@latest"] } } } -
在 Figma 中安装对应的插件(通过开发者模式导入
src/cursor_mcp_plugin/manifest.json),并使用它连接到上一步启动的 WebSocket(通过加入相同的频道)。此时,Cursor 和 Figma 就建立起了 MCP 通道。
一切准备就绪后,我们可以在 Cursor 的聊天中用自然语言描述所需的设计,让模型直接“画”出结果。例如,输入: 在当前 Figma 文件中新建一个移动端登录界面,包括用户名和密码输入框以及一个蓝色的“登录”按钮。
模型将识别到需要创建 UI 元素,并调用 Figma 服务器提供的工具来操作设计。该服务器提供了丰富的设计操作工具,包括创建框架 (create_frame)、创建文本节点 (create_text)、设置颜色 (set_fill_color)、调整布局 (set_layout_mode) 等。在后台,Cursor 可能依次执行如下操作:
- 调用
create_frame在画布上新建一个容器框架,作为登录界面的背景。 - 调用
create_text添加“用户名”、“密码”标签和提示文本。 - 调用
create_rectangle或create_frame创建输入框形状。 - 调用
set_fill_color将登录按钮填充为蓝色。 - 调用自动布局工具对齐各元素。
整个流程对用户透明,模型自动发现并使用合适的工具构建界面。最终,我们在 Figma 文件中得到了一个完整的登录页面布局,无需自己手动拖拽设计元素。
当下 MCP 的局限性
并非所有 AI 平台都支持 MCP
Claude(特别是它的桌面应用程序)和像 Cursor 或 Windsurf 这样的工具直接支持 MCP。但是,如果你使用的是本地 LLM 模型,它可能无法开箱即用。
Agent 自主性并不完美
MCP 提供了能力,但 LLM 的判断仍然不完美。工具的使用取决于模型对工具描述和使用上下文的理解程度。它通常需要调整提示词或代理端逻辑来提高可靠性。
性能开销
通过 MCP 使用工具会增加开销。每次调用都是外部的,可能比 AI 自己回答要慢得多。通过 MCP 工具从网页抓取数据可能需要几秒钟,而模型可以在毫秒内从训练数据中猜出答案。
信任问题
让 AI 执行真实操作可能会让人感到风险。即使人工智能通常能做到正确,用户往往希望在事情发生之前进行审查。大多数工具要么完全自主,要么完全不自主。很少有中间地带,人工智能可以利用自主性,但在重要时刻仍然给予用户控制权。
可扩展性的问题
目前大多数 MCP 服务器都是为单用户构建的,通常只在开发者的环境上运行。一个 MCP 服务器为多个独立代理或用户提供服务的情况尚未得到充分探索。为了做到这一点,需要处理更复杂的事务,比如并发请求、独立的数据上下文以及强制执行速率限制使用。
安全标准
MCP 没有内置的身份验证或授权功能。如果您通过网络暴露 MCP 服务器,则必须添加自己的安全措施。
结语
MCP 协议以开放、标准化的方式将 AI 模型与外部系统连接起来,极大简化了跨工具集成的复杂度。它不仅让 LLM 获得了“查看和操作世界”的能力,而且为 AI 自动化和 Agent 的发展提供了坚实基石。
对于开发者而言,MCP 相当于在 AI 应用中插入了一个通用接口:每增加一个数据源或功能,只需开发一个符合协议的服务器;每个 AI 应用也只需一个 MCP 客户端即可接入所有服务器。这种模块化设计正加速构建更智能、更强大的 AI 工具生态。如前文案例所示,无论是查询网络数据(YouTube 热门视频)还是操作专业应用(Figma 设计稿),MCP 都能让流程变得像日常对话一样简单易用。
随着更多平台和工具支持 MCP,未来的 AI 应用将更加自动化、连贯和高效,让开发者和终端用户享受更流畅的交互体验。我们建议开发者尽早熟悉 MCP 的使用和原理,为即将到来的智能化软件开发浪潮做好准备。