一、 MCP 是什么?为什么需要它?
在标准的 Function Calling 模式中,一个核心痛点是:工具(函数)的定义和管理与应用程序代码强耦合。
- 传统方式: 开发者需要在应用程序代码中硬编码可用函数的列表(JSON Schema)。要增加、修改或删除一个工具,必须修改应用代码并重新部署。
- 问题: 这种方式缺乏动态性和模块化。想象一下,你为模型开发了一个“工具箱”,但每次想增加一把新“扳手”,都需要把整个工具箱返厂改造。
MCP(由 Anthropic 提出并开源)旨在解决这个问题。 它定义了一个标准化的协议,允许大模型应用程序(称为 MCP Client)以动态、安全的方式从外部的工具服务器(称为 MCP Server) 发现和调用工具。
核心思想: 将工具的提供者(Server)与工具的使用者(Client/Model)解耦。
二、 MCP 的核心架构与组件
MCP 的架构遵循客户端-服务器模型,一般基于 WebSocket 或 STDIO 进行通信。
|
组件 |
角色 |
职责 |
|
MCP Client(客户端) |
大模型应用程序 |
1. 连接一个或多个 MCP Server。 |
|
MCP Server(服务器) |
专门化的工具/数据提供者 |
1. 向 Client 注册自己提供的工具列表(包含完整的 JSON Schema 描述)。 |
|
MCP Protocol(协议) |
通信的“语言” |
定义了 Client 和 Server 之间交互的标准消息格式和流程,例如 tools/list, tools/call, resources/read 等。 |
三、 MCP 如何扩展 Function Calling 能力?
MCP 并没有改变大模型本身进行 Function Calling 的底层原理(意图识别、参数提取),而是在工具的管理和集成层面带来了革命性的变化。
1. 工具的动态发现与组合
- 传统模式: 工具列表是静态的,在应用启动时就固定了。
- MCP 模式: Client 可以在运行时连接多个专门的 MCP Server。例如: 连接一个 Weather Server,提供全球天气查询工具。连接一个 Jira Server,提供项目管理工具(创建任务、查询进度)。连接一个 CompanyDB Server,提供内部数据库查询工具。
- 优势: 模型的能力可以像“插拔硬件”一样动态扩展。无需修改核心应用代码,只需让应用连接新的 Server,模型就能立即获得新工具。
2. 工具实现的专业化与隔离
- 传统模式: 所有工具的代码都写在同一个应用程序里,耦合度高。
- MCP 模式: 每个 MCP Server 都是一个独立的进程,专注于某一领域的工具实现(如 GitHub 操作、Slack 消息发送)。
- 优势: 安全: 工具运行在独立的沙箱中,即使某个 Server 被恶意利用或出现故障,也不会直接影响主应用。技术栈自由: 不同的 Server 可以用最适合的语言编写(Python, Go, JavaScript 等),只要遵守 MCP 协议即可。易于维护: 可以独立更新、部署和扩展每个工具 Server。
3. 资源(Resources)概念的引入
MCP 不仅定义了工具(可执行的操作),还定义了资源(Resources)——即只读的数据源。
- 示例: 一个 MCP Server 可以提供一个 read_file 工具,同时也可以将一个配置文件注册为一个 resource。模型可以直接请求读取这个 resource 的内容,而无需通过调用工具的间接方式。
- 优势: 为模型提供了更直接、更高效的数据访问通道,丰富了模型与外界交互的模式。
四、 MCP 的实践流程与示例
假设我们要构建一个智能助手,它可以管理日历和发送邮件。
没有 MCP 的时代:
- 在助手应用的代码里,定义 create_calendar_event 和 send_email 两个函数的 JSON Schema。
- 在代码里实现这两个函数的逻辑。
- 将函数列表和实现与主应用捆绑部署。
使用 MCP 的时代:
- 部署工具服务器:
- 部署一个 Calendar MCP Server,它向网络宣告自己提供 create_calendar_event 工具。部署一个 Email MCP Server,它向网络宣告自己提供 send_email 工具。
- 配置 MCP Client(智能助手应用):
- 配置应用启动时连接上述两个 Server 的地址。
- 运行时交互:
- 发现: 助手应用启动后,自动向两个 Server 请求工具列表。Server 返回工具的完整描述(JSON Schema)。注入: 助手应用将获取到的工具列表动态地注入到给大模型的提示词中。调用: 用户说:“帮我安排明天下午两点和客户的会议,并发邮件通知他。” 大模型识别意图,决定调用 create_calendar_event 和 send_email。生成参数,助手应用将调用请求路由到对应的 Calendar Server 和 Email Server。Server 执行具体操作(写入日历、调用 SMTP API),将结果返回给助手应用。助手应用将结果整合后,通过模型生成最终回复给用户。
五、 MCP 与现有技术栈的关系
- LangChain / LlamaIndex: 这些高级框架已经开始集成 MCP 支持。它们可以作为一个功能强劲的 MCP Client,让你更容易地管理和连接多个 MCP Server,从而构建复杂的 Agent 系统。
- 云服务商: AWS Bedrock、Google Vertex AI 等平台预计将提供托管的 MCP Server 仓库或更简单的集成方式。
- 开源生态: 社区正在为各种常见服务(Notion, Slack, GitHub, 数据库等)积极开发开箱即用的 MCP Server,未来可以实现“即插即用”的工具集成。
总结:MCP 的价值
MCP 是 Function Calling 能力的“操作系统”或“总线”。它没有取代 Function Calling,而是为其构建了一个更强劲、更灵活的基础设施。
|
特性 |
传统 Function Calling |
基于 MCP 的 Function Calling |
|
工具管理 |
静态、聚焦式 |
动态、分布式 |
|
集成复杂度 |
高(代码耦合) |
低(协议标准化) |
|
安全性与隔离性 |
低 |
高(进程隔离) |
|
可扩展性 |
差(需修改代码) |
强(即插即用) |
对于工程师而言,MCP 意味着:
- 模块化开发: 可以组建团队专门开发维护不同领域的工具 Server。
- 生态共享: 可以直接使用社区开发的高质量 MCP Server,无需重复造轮子。
- 未来适应性: 当需要为模型增加新能力时,只需寻找或开发一个对应的 MCP Server 并连接即可,大大降低了系统的演进成本。
MCP 协议正在成为构建下一代、可组合式 AI 应用的关键基石,它使大模型的工具调用能力变得更加企业级和工业化。
附录:
1、常用MCP Server列表
下面这个表格整理了一些常用且评价不错的 MCP Server,你可以根据自己的需求来选择。
|
分类 |
MCP Server 名称 |
主要功能简介 |
项目地址 |
|
开发与协作 |
GitHub MCP Server |
让 AI 助手能与 GitHub 仓库交互,访问代码、Issues 和 Pull Requests。 |
https://github.com/github/github-mcp-server |
|
Linear MCP Server |
与 Linear 项目管理 API 集成,支持问题跟踪和产品迭代周期管理。 |
https://github.com/jerhadf/linear-mcp-server |
|
|
Notion MCP |
安全地访问你的 Notion 工作区,获取文档、数据库等内容。 |
https://github.com/mcnijay/notion-mcp |
|
|
数据库与搜索 |
Neo4j MCP |
与 Neo4j 图数据库交互,执行查询和分析关系网络。 |
https://github.com/neo4j-contrib/mcp-neo4j |
|
Qdrant MCP Server |
访问和操作 Qdrant 向量数据库,执行语义搜索。 |
https://github.com/qdrant/mcp-server-qdrant |
|
|
Brave Search MCP Server |
使用注重隐私的 Brave 搜索引擎进行网络查询。 |
https://github.com/arben-adm/brave-mcp-search |
|
|
Meilisearch |
一个极速的开源搜索引擎,其官方 MCP Server 支持使用MCP调用。 |
https://github.com/meilisearch/meilisearch |
|
|
云服务与运维 |
Cloudflare MCP Server |
与 Cloudflare 服务集成,包括 Workers、KV、R2 和 D1。 |
https://github.com/cloudflare/mcp-server-cloudflare |
|
AWS MCP Server |
使 AI 助手能够在安全的 Docker 环境中执行 AWS CLI 命令。 |
https://github.com/alexei-led/aws-mcp-server |
|
|
Kubernetes MCP Server |
通过 MCP 操作 Kubernetes 集群,适合 AI 驱动的 DevOps 工具。 |
https://github.com/Flux159/mcp-server-kubernetes |
|
|
网络与自动化 |
Firecrawl |
将整个网站转换为适合 LLM 的 Markdown 或结构化数据。 |
https://github.com/mendableai/firecrawl |
|
browser-use |
一个浏览器自动化库,让 AI 智能体可以模拟人类操作浏览器。 |
https://github.com/browser-use/browser-use |
如何探索更多 MCP Server
除了上面列出的单个项目,互联网上还有许多社区和平台在持续收集和整理各类 MCP Server,是你寻找新工具的好去处:
- Awesome MCP Servers: 一个在 GitHub 上超级受欢迎的资源合集,由社区共同维护,收录了上千个 MCP Server。
- MCP.SO: 一个网站形式的目录,同样收集了超级多的 MCP Server,并且界面友善。
- Smithery: 一个协助开发者寻找和发布代理服务的平台。
使用入门提议
当你选好 MCP Server 后,一般需要在支持 MCP 的客户端(如 Cursor、Windsurf、Claude Desktop 等)中进行配置。一般步骤如下:
- 查看文档:前往该 MCP Server 的 GitHub 页面,仔细阅读它的安装说明和配置要求。
- 准备配置:多数客户端通过创建一个 mcp.json 文件来配置。你需要按照文档填写服务器地址、命令或所需的 API 密钥等信息。
- 放置文件:将配置好的 mcp.json 文件放在客户端指定的目录下。例如,在 Cursor 中,一般是项目根目录下的 .cursor 文件夹或用户主目录的 .cursor 文件夹。
2、常用MCP Client列表
目前主流的AI辅助编程工具和AI助手大多都已支持MCP(Model Context Protocol)协议,这意味着它们都可以作为MCP Client来使用。下面这个表格汇总了常见的MCP Client及其核心特点,方便你快速了解。
|
MCP Client 名称 |
类型 |
核心特点/集成服务 |
|
Cursor |
AI 辅助 IDE |
支持通过项目或全局的 mcp.json 配置文件集成 MCP Server。 |
|
Windsurf |
AI 辅助 IDE |
支持通过工作区内的 mcp.json 配置文件集成 MCP Server。 |
|
Claude Desktop |
桌面 AI 助手 |
通过编辑其配置文件来集成 MCP Server。 |
|
ChatGPT (开发者模式) |
网页 AI 助手 |
在设置中开启开发者模式后,可以连接 MCP Server。 |
|
Glama Chat |
多模态 AI 客户端 / AI 网关 |
一个支持 MCP 的多模态 AI 客户端,同时也是一个 AI 网关。 |
如何配置MCP Client
不同客户端的配置方式略有不同,但基本逻辑类似,核心是创建一个配置文件(一般是 mcp.json),并在其中填写你想要连接的 MCP Server 信息。
通用配置步骤
- 创建配置文件:在客户端指定的目录(一般是项目根目录或用户的全局配置目录)创建 mcp.json 文件。
- 编写配置内容:根据你要使用的 MCP Server,在配置文件中填写正确的连接方式(如URL或本地命令)和必要的认证信息(如API密钥)。下面是一个配置示例:
{ “mcpServers”: { “notion”: { “command”: “npx”, “args”: [“-y”, “mcp-remote”, “https://mcp.notion.com/mcp”] }, “linear”: { “url”: “https://mcp.linear.com”, “auth”: { “type”: “apiKey”, “key”: “YOUR_LINEAR_API_KEY_HERE” } } }}
- 启用与重启:在客户端的设置中确保已启用 MCP 服务器支持,有时配置后需要重启客户端才能生效。
客户端特定配置
- Cursor:将 mcp.json 放在项目根目录的 .cursor 文件夹内,或放在用户主目录的 .cursor 文件夹以实现全局配置。
- Windsurf:将 mcp.json 放在工作区或项目的根目录下。
- Claude Desktop:需要编辑其特定的配置文件(例如,在 macOS 上一般是 ~/Library/Application Support/Claude/claude_desktop_config.json)。
使用提议与注意事项
- 探索更多资源:除了上述客户端,网络上还有如 awesome-mcp-clients 等社区维护的资源列表,可以协助你发现更多选择。
- 注意上下文限制:连接的 MCP Server 并非越多越好。每个服务器都会占用模型的一部分上下文窗口,过多可能会导致核心对话可用的上下文减少。
- 安全第一:在配置 MCP Server,尤其是涉及写操作或敏感数据的服务时,请务必使用权限最小化的 API 密钥,并保护好你的认证信息。


