前言

在AI Agent的世界里,主要面临两大互联领域的挑战:

  1. Agent与Tools(工具)的交互:Agent需要调用外部工具和API、访问数据库、执行代码等
  2. Agent与Agent(其他智能体或用户)的交互:Agent需要理解其他Agent的意图、协同完成任务、与用户进行自然的对话

MCP解决了第一个挑战,而A2A协议则解决了第二个挑战。

使用MCP的重点是理解MCP的工作机制!即文章的第四部分


 一、MCP是什么?

1.1 MCP的理解

MCP(Model Context Protocol,模型上下文协议),2024年11月底,由Anthropic推出的一种开放标准。旨在为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具之间进行通信。

传统AI集成的问题:这种为每个数据源构建独立连接的方式,可以被视为一个M*N问题。问题在于架构碎片化,难以扩展,限制了AI获取必要上下文信息的能力。

MCP解决方案:提供统一且可靠的方式来访问所需数据,克服了以往集成方法的局限性。

MCP作为一种标准化协议,极大地简化了大语言模型与外部世界的交互方式,使开发者能够以统一的方式为AI应用添加各种能力。

1.2 MCP推广时间线

时间 事件
2024年11月底 Anthropic推出MCP,目标是让大模型更便捷地调用外部工具
2025年2月 Cursor正式宣布加入MCP功能支持,将MCP推到全体开发人员面前
2025年3月27日 OpenAI智能体支持MCP,Sam Altman特意发文大赞MCP

1.3 哪些平台支持MCP查询

GitHub查看

其他平台

二、MCP能干什么?

2.1 对于程序员来说

举例1:开发部署

开发者通过自然语言指令"部署新版本到测试环境",触发MCP链式调用:

  • GitLab API(代码合并)
  • Jenkins API(构建镜像)
  • Slack API(通知团队)

举例2:SQL查询

开发者通过自然语言输入,比如"查询某集团部门上个季度销售额",就能查询出数据库的数据,并结合大模型进行回答,不再需要编写SQL,MCP自动转换为精准SQL语句并执行。

举例3:Manus智能体

Manus的每一次任务处理都至少需要调用网页搜索、网页访问、网页信息获取、本地文件创建、代码解释器等几十个外部工具。

这里暴露了两个问题:

  • 问题1:可供大模型调用的工具不足
  • 问题2:调用工作量很大

借助MCP,只要支持该协议,就能轻松将各种数据源和工具连接到LLM。

(对于Java开发:

2.2 对于大众用户来说

举例1:旅游规划

当我要去旅行时,旅行规划助手通过MCP同时调用:

  • 天气API(获取目的地气象)
  • 交通API(查询航班动态)
  • 地图API(规划路线)

AI自动生成带实时数据的行程方案。

举例2:联网搜索

我们在与LLM交互时,经常需要联网搜索最新信息以减少幻觉。然而,这里也存在问题:

  1. 并非所有聊天机器人都支持联网功能
  2. 即使支持联网,也可能不包含你习惯使用的搜索引擎

在没有MCP的情况下,用户只能等待开发者添加特定搜索引擎的支持。有了MCP后,只需简单配置,就能将所需服务接入当前使用的聊天机器人。

举例3:业绩查询

用户询问"查询上季度营业额",MCP自动组合调用:

  • CRM系统API(获取客户数据)
  • 财务系统API(调取报表)
  • 邮件API(发送总结报告)

    三、程序员如何使用MCP

    3.1 MCP应用场景

    MCP可应用于多种场景:

    3.2 使用前的准备工作

    ① MCP的通信机制

    根据MCP的规范,当前支持两种通信机制(传输方式):

    方式 适用场景 优点 缺点
    stdio(标准输入输出) 本地服务,操作本地软件或文件 简单、无需外部网络、通信速度快、可靠性高、易于调试 配置复杂、单进程通信、无法并行处理
    SSE(Server-Sent Events) 远程通信服务,有在线API的服务 配置简单,基本上就一个链接 需要网络依赖
    ② stdio的本地环境安装

    stdio的本地环境有两种:

    • Python编写的服务 → 使用 uvx 命令
    • TypeScript编写的服务 → 使用 npx 命令

    uvx安装方式

    第1种:若已配置Python环境:

    pip install uv
    

    第2种:在Windows下通过PowerShell安装:

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    

    验证安装:

    uv --version
    uvx --help
    

    npx安装方式

    Node.js下载官网:https://nodejs.org/zh-cn

    下载安装后,配置环境变量并测试。

    3.3 Cursor中使用MCP

    Cursor中国区官网:https://www.cursor.com/cn

    3.4 Cline中使用MCP

    Cline也支持MCP功能,配置方式类似。


    四、MCP的工作原理

    4.1 MCP的C/S架构

    MCP遵循客户端-服务器架构(client-server),包含以下5个核心概念:

    概念 说明
    MCP主机(MCP Hosts) 运行MCP的主应用程序,如Claude Desktop、Cursor、Cline或AI工具
    MCP客户端(MCP Clients) 嵌入在主机程序中,充当LLM和MCP Server之间的桥梁
    MCP服务器(MCP Servers) 提供特定工具,从本地数据或远程服务中检索信息
    本地资源(Local Resources) 本地的文件、数据库等
    远程资源(Remote Resources) 远程API、云服务等
    ① MCP Host

    作为运行MCP的主应用程序,为用户提供与LLM交互的接口,同时集成MCP Client以连接MCP Server。

    ② MCP Client

    MCP Client充当LLM和MCP Server之间的桥梁,主要负责:

    • 接收来自LLM的请求
    • 将请求转发到相应的MCP Server
    • 将MCP Server的结果返回给LLM

    常用的Clients

    • AI编程IDE:Cursor、Cline、Continue、Sourcegraph、Windsurf等
    • 聊天客户端:Cherry Studio、Claude、Librechat、Chatwise等

    更多Client参考:

    ③ MCP Server

    每个MCP服务器都提供了一组特定的工具,负责从本地数据或远程服务中检索信息。

    与传统的远程API服务器不同,MCP服务器既可以作为本地应用程序在用户设备上运行,也可部署至远程服务器。

    MCP Server的本质:本质是运行在电脑上的一个Node.js或Python程序。

    • 使用TypeScript编写的MCP Server可以通过 npx 命令来运行
    • 使用Python编写的MCP Server可以通过 uvx 命令来运行

    4.2 MCP工作流程

    API主要有两个:

    • tools/list:列出Server支持的所有工具
    • tools/call:Client请求Server去执行某个工具,并将结果返回

    工作流程示例

    1. 用户向LLM发送请求
    2. LLM判断需要调用工具
    3. MCP Client通过tools/list获取可用工具列表
    4. MCP Client通过tools/call调用相应工具
    5. MCP Server执行工具并返回结果
    6. LLM根据结果生成回复

    4.3 回顾:Cursor中使用MCP

    在MCP的概念中,Cursor属于一个MCP的宿主应用(Host-app),而Cursor之所以能使用MCP服务,是因为它内置安装了MCP Client。

    我们目前在配置Cursor中的MCP时,本质是在配置MCP Server,这些Server由不同的开发者提供,他们基于标准化的MCP协议,做了个小的服务,这些服务可能在本地也可能在云端。



    五、热门MCP Servers推荐

    推荐1:文件系统 filesystem

    Filesystem MCP旨在为大型语言模型(LLM)和AI助手提供对本地文件系统的安全、受控访问。

    主要功能

    • 文件读写:允许读取和写入文件内容,支持创建新文件或覆盖现有文件
    • 目录管理:支持创建、列出和删除目录,以及移动文件或目录
    • 文件搜索:能够在指定路径中搜索匹配特定模式的文件或目录
    • 元数据获取:提供获取文件或目录的详细元数据,包括大小、创建时间、修改时间等

    推荐2:数据库 mysqldb-mcp-server

    一种模型上下文协议(MCP)实现,支持与MySQL数据库进行安全交互。此服务器组件可促进AI应用程序(主机/客户端)与MySQL数据库之间的通信,提供安全的MySQL数据库操作。

    推荐3:高德地图 amap-maps

    高德地图是一个支持任何MCP协议客户端的服务器,允许用户轻松地利用高德地图MCP服务器进行各种基于位置的服务。

    主要特点

    • 支持多种位置服务,包括地理编码、天气和距离测量
    • 提供步行、驾车、公交等多种交通方式的API
    • 允许根据关键字或位置详细搜索兴趣点(POI)

    推荐4:网页数据采集 Firecrawl

    Firecrawl MCP工具是一款基于模型上下文协议(MCP)的企业级网页数据采集服务器。能够为大型语言模型(LLM)提供强大的网页抓取能力。

    主要功能

    • JavaScript渲染:能够处理动态网页内容
    • 批量处理:支持并行处理和队列管理
    • 智能限速:根据网络状况和任务需求智能调整抓取速度
    • 多种输出格式:支持Markdown、HTML等格式

    ⚠️ 去Firecrawl官网注册后即可查看自己的api_key

    推荐5:Github

    GitHub MCP服务器是一个模型上下文协议(MCP)提供与GitHub API无缝集成的服务器。

    使用案例

    • 自动化GitHub工作流程和流程
    • 从GitHub存储库中提取和分析数据
    • 构建与GitHub生态系统交互的AI驱动的工具和应用程序

    ⚠️ 去 https://github.com/settings/tokens 申请自己的token

    推荐6:Git

    直接的Git仓库操作,包括读取、搜索和分析本地仓库。用于Git存储库交互和自动化的模型上下文协议服务器。

    推荐7:记忆图谱 memory

    使用本地知识图谱的持久内存的基本实现。这使Claude可以在聊天中记住有关用户的信息。基于知识图谱的长期记忆系统用于维护上下文。

    推荐8:控制台 desktop-commander

    在计算机上无缝执行终端命令和管理流程。使用强大的命令执行和文件操作工具简化您的开发任务。

    推荐9:社交软件 Slack

    用于Slack API的MCP服务器,使LLM能够与Slack工作区进行交互,用于频道管理和消息传递。

    ⚠️ 去 https://app.slack.com/intl/zh-cn 注册并获取自己的team id


    六、A2A协议:开启Agent间自然协作

    6.1 A2A的发布

    在AI Agent的世界里,主要解决两大互联领域的挑战:

    1. Agent与Tools的交互 → MCP
    2. Agent与Agent的交互 → A2A

    谷歌于2025年4月10日发布开源的、应用层协议A2A(Agent-to-Agent协议)。其设计目的是使智能体(Agent)间能够以一种自然的模态进行协作,类似于人与人之间的互动。

    📖 Github地址:https://github.com/google/A2A

    6.2 A2A的设计意义

    基于不同底层框架和供应商平台创建的AI Agent之间可以实现:

    • 通信
    • 发现彼此的能力
    • 协商任务并开展合作

    企业可以通过专业的智能体团队处理复杂的工作流程。这无疑是其最为突出的贡献。

    6.3 举例

    举例1:阿里云 & 火山云

    阿里云上创建的AI Agent,通过A2A协议,可以与火山云上创建的AI Agent进行无缝的通信与协作。

    举例2:修理汽车

    用户(或代表用户的智能体)对修理店智能体说:"给我看看左前轮的照片,似乎漏液了,这种情况多久了?"

    • A2A协议使得人与智能体之间这种更自然、多轮次的对话式互动成为可能
    • 修理店智能体在诊断出问题后,可能需要向零件供应商智能体查询某个零件的库存和价格

    举例3:人才招聘

    利用A2A协议,招聘流程可以如此高效:

    1. 招聘经理向自己的智能体下达任务,让其寻找与职位描述相匹配的候选人
    2. 该智能体立即与其他专业智能体展开互动,寻找潜在候选人
    3. 用户收到推荐人选后,可以指示智能体安排面试
    4. 面试结束后,可以启动另一个智能体来协助进行背景调查
    Logo

    AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

    更多推荐