工程师科普系列之四:大模型工具集管理与应用(MCP协议)

内容分享1个月前发布 DunLing
0 0 0

一、 MCP 是什么?为什么需要它?

在标准的 Function Calling 模式中,一个核心痛点是:工具(函数)的定义和管理与应用程序代码强耦合

  • 传统方式: 开发者需要在应用程序代码中硬编码可用函数的列表(JSON Schema)。要增加、修改或删除一个工具,必须修改应用代码并重新部署。
  • 问题: 这种方式缺乏动态性模块化。想象一下,你为模型开发了一个“工具箱”,但每次想增加一把新“扳手”,都需要把整个工具箱返厂改造。

MCP(由 Anthropic 提出并开源)旨在解决这个问题。 它定义了一个标准化的协议,允许大模型应用程序(称为 MCP Client)以动态、安全的方式从外部的工具服务器(称为 MCP Server) 发现和调用工具。

核心思想: 将工具的提供者(Server)与工具的使用者(Client/Model)解耦

二、 MCP 的核心架构与组件

MCP 的架构遵循客户端-服务器模型,一般基于 WebSocket 或 STDIO 进行通信。

组件

角色

职责

MCP Client(客户端)

大模型应用程序

1. 连接一个或多个 MCP Server。
2. 从 Server 发现可用的工具(函数)和资源(如只读数据)。
3. 将发现的工具动态注入给大模型,供其调用。
4. 将模型的工具调用请求转发给对应的 Server 并返回结果。

MCP Server(服务器)

专门化的工具/数据提供者

1. 向 Client 注册自己提供的工具列表(包含完整的 JSON Schema 描述)。
2. 监听来自 Client 的工具调用请求。
3. 执行具体的工具逻辑(如调用 API、查询数据库、执行代码)。
4. 将执行结果返回给 Client。

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 的时代:

  1. 在助手应用的代码里,定义 create_calendar_event 和 send_email 两个函数的 JSON Schema。
  2. 在代码里实现这两个函数的逻辑。
  3. 将函数列表和实现与主应用捆绑部署。

使用 MCP 的时代:

  1. 部署工具服务器:
  • 部署一个 Calendar MCP Server,它向网络宣告自己提供 create_calendar_event 工具。部署一个 Email MCP Server,它向网络宣告自己提供 send_email 工具。
  1. 配置 MCP Client(智能助手应用):
  • 配置应用启动时连接上述两个 Server 的地址。
  1. 运行时交互:
  • 发现: 助手应用启动后,自动向两个 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 意味着:

  1. 模块化开发: 可以组建团队专门开发维护不同领域的工具 Server。
  2. 生态共享: 可以直接使用社区开发的高质量 MCP Server,无需重复造轮子。
  3. 未来适应性: 当需要为模型增加新能力时,只需寻找或开发一个对应的 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 等)中进行配置。一般步骤如下:

  1. 查看文档:前往该 MCP Server 的 GitHub 页面,仔细阅读它的安装说明和配置要求。
  2. 准备配置:多数客户端通过创建一个 mcp.json 文件来配置。你需要按照文档填写服务器地址、命令或所需的 API 密钥等信息。
  3. 放置文件:将配置好的 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 信息。

通用配置步骤

  1. 创建配置文件:在客户端指定的目录(一般是项目根目录或用户的全局配置目录)创建 mcp.json 文件。
  2. 编写配置内容:根据你要使用的 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” } } }}

  1. 启用与重启:在客户端的设置中确保已启用 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 密钥,并保护好你的认证信息。
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...