在人工智能飞速发展的今天,LLM 的能力令人叹为观止,但其局限性也日益凸显 —— 它们往往被困于训练数据的「孤岛」,无法直接触及实时信息或外部工具。
2024 年 11 月,Anthropic 推出了开源协议 MCP(Model Context Protocol,模型上下文协议),
旨在为 AI 模型与外部数据源和工具之间的交互提供一个通用、标准化的连接方式。
MCP 的开源性质也迅速吸引了开发社区的关注,许多人将其视为 AI 生态系统标准化的重要一步。
MCP 的好处之一是它们能让 AI 系统更安全。当大家都能用到经过严格测试的工具时,公司就不必「重复造轮子」,
这样既减少了安全隐患,也降低了恶意代码出现的可能。
随着 MCP 的逐渐普及,其影响力开始在行业内显现。2025 年 3 月 27 日,OpenAI 也开始支持 MCP 了。
谷歌似乎也在考虑是否加入 MCP 大家庭:
仔细看 MCP 的相关资料,会发现明显存在信息断层。
虽然有很多解释「它能做什么」的概述,但当你真想了解它是「怎么运作的」时,资料就变得稀少了 —— 特别是对非专业开发者来说。
目前的资料不是过于表面的介绍,就是太过深奥的源代码。
近日,一篇博客以浅显易懂的方式讲解了 MCP,让各种背景的读者都能理解它的概念和功能,读者还可以跟着代码进行实践。
博客链接:https://towardsdatascience.com/clear-intro-to-mcp/
让我们跟随博客一探究竟(注:本文代码截图可能不完整,详见原文)。
首先,让我们将 MCP 的概念想象成一家餐厅,其中:
现在,我们来看看这家餐厅的「岗位要求」:
主机(Host)
智能体运行的环境。类比餐厅建筑,在 MCP 中,它是智能体或 LLM 实际运行的位置。
如果在本地使用 Ollama,用户即为主机;若使用 Claude 或 GPT,则 Anthropic 或 OpenAI 为主机。
客户端(Client)
负责从智能体发送工具调用请求的环境。相当于将顾客订单传递至厨房的服务员。
实际上是智能体运行的应用程序或接口,客户端通过 MCP 将工具调用请求传递给服务器。
服务器(Server)
类似厨房,存储各种「食谱」或工具。集中管理工具,使智能体能够便捷访问。服务器可以是本地的(用户启动)或远程的(由提供工具的公司托管)。
服务器上的工具通常按功能或集成方式分组,例如,所有 Slack 相关工具可集中于「Slack 服务器」,或所有消息工具可集中于「消息服务器」。
这种组织方式取决于架构设计和开发者偏好。
智能体(Agent)
系统的「大脑」,由大语言模型驱动,决定调用哪些工具完成任务。当确定需要某工具时,向服务器发起请求。
智能体无需原生理解 MCP,因为它通过每个工具关联的元数据学习使用方法。工具关联的元数据指导智能体如何调用工具及执行方式。
需注意,平台或智能体必须支持 MCP 才能自动处理工具调用,否则开发者需编写复杂的转换逻辑,
包括从架构解析元数据、以 MCP 格式形成工具调用请求、将请求映射至正确函数、执行代码,并以符合 MCP 的格式将结果返回给智能体。
工具(Tools)
执行具体工作的函数,如调用 API 或自定义代码。工具存在于服务器上,可以是:
如何协同工作
下面详细介绍 MCP 的具体工作流程:
服务器注册工具:每个工具都需定义名称、描述、输入 / 输出模式及函数处理程序(执行代码),并注册到服务器。
这一过程通常通过调用特定方法或 API,向服务器声明「这是一个新工具及其使用方式」。
服务器暴露元数据:服务器启动或智能体连接时,通过 MCP 协议暴露工具元数据(包括模式和描述)。
智能体发现工具:智能体通过 MCP 查询服务器,了解可用工具集。智能体从工具元数据中学习如何使用每个工具。
这一过程通常在系统启动时或新工具添加时触发。
智能体规划工具使用:当智能体确定需要某个工具(基于用户输入或任务上下文)时,会按照标准化的 MCP JSON 格式构建工具调用请求,
包含工具名称、符合工具输入模式的参数及其他必要元数据。客户端作为传输层,通过 HTTP 将 MCP 格式的请求发送至服务器。
翻译层执行:翻译层接收智能体的标准化工具调用(通过 MCP),将请求映射到服务器上对应的函数,执行该函数,将结果格式化回 MCP 格式,
然后发送回智能体。抽象化 MCP 的框架可以完成所有这些工作,开发者无需编写翻译层逻辑(这听起来是个令人头疼的事情)。
MCP Brave 搜索服务器的 Re-Act 智能体代码示例
为了理解 MCP 的实际应用效果,我们可以使用 IBM 的 beeAI 框架,该框架原生支持 MCP 并为我们处理转换逻辑。如果你计划运行这段代码,你需要:
示例 .env 文件
示例 mcp_agent.ipynb
1. 导入必要的库
2. 加载环境变量并设置系统路径(如有需要)
3. 配置日志记录器
4. 加载辅助函数如 process_agent_events、observer,并创建 ConsoleReader 实例
它为每种事件提供有意义的输出,以帮助跟踪智能体活动。
5. 设置 Brave API 密钥和服务器参数。
Anthropic 有一个 MCP 服务器列表:https://modelcontextprotocol.io/examples
6. 创建一个 Brave 工具,它将启动与 MCP 服务器的连接,发现工具,并将发现的工具返回给智能体,以便它决定对于给定的任务应该调用哪个工具。
在此情况下,Brave MCP 服务器上可发现 2 个工具:
(可选)检查与 MCP 服务器的连接,并在将其提供给智能体之前确保它返回所有可用的工具。
输出
7. 编写创建智能体的函数
注意:您可能会注意到在系统提示词中添加了一句话:「If you need to use the brave_tool you must use a count of 5.」这是一个临时解决方案,
因为在 Brave 服务器的 index.ts 文件中发现了一个错误。用户将为该仓库贡献代码来修复它。
8. 创建主函数
输出:
MCP 凭借网络效应、标准化优势、降低开发成本和行业门槛以及增强互操作性,未来发展潜力巨大。
但它也面临挑战,包括工具发现依赖服务器、新增故障点、治理需求、安全考虑和延迟问题。
随着技术的不断发展,我们期待 MCP 能够克服这些挑战,充分发挥其潜力,为行业带来更多价值。
文章来自于微信公众号 “机器之心”,作者 :Sandi Besen
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0