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

AI的出现,是否能替代IT从业者? 10w+人浏览 1.6k人参与

部署运行你感兴趣的模型镜像

一、 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_eventsend_email 两个函数的 JSON Schema。
  2. 在代码里实现这两个函数的逻辑。
  3. 将函数列表和实现与主应用捆绑部署。

使用 MCP 的时代:

  1. 部署工具服务器:

    • 部署一个 Calendar MCP Server,它向网络宣告自己提供 create_calendar_event 工具。
    • 部署一个 Email MCP Server,它向网络宣告自己提供 send_email 工具。
  2. 配置 MCP Client(智能助手应用):

    • 配置应用启动时连接上述两个 Server 的地址。
  3. 运行时交互:

    • 发现: 助手应用启动后,自动向两个 Server 请求工具列表。Server 返回工具的完整描述(JSON Schema)。
    • 注入: 助手应用将获取到的工具列表动态地注入到给大模型的提示词中。
    • 调用: 用户说:“帮我安排明天下午两点和客户的会议,并发邮件通知他。”
      • 大模型识别意图,决定调用 create_calendar_eventsend_email
      • 生成参数,助手应用将调用请求路由到对应的 Calendar ServerEmail 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 应用的关键基石,它使大模型的工具调用能力变得更加企业级工业化

附录:

常用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 文件夹。

常用MCP Client列表

目前主流的AI辅助编程工具和AI助手大多都已支持MCP(Model Context Protocol)协议,这意味着它们都可以作为MCP Client来使用。下面这个表格汇总了常见的MCP Client及其核心特点,方便你快速了解。

MCP Client 名称类型核心特点/集成服务
CursorAI 辅助 IDE支持通过项目或全局的 mcp.json 配置文件集成 MCP Server。
WindsurfAI 辅助 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"
          }
        }
      }
    }
    
  3. 启用与重启:在客户端的设置中确保已启用 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 密钥,并保护好你的认证信息。

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探路者继续奋斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值