粉丝136获赞2070


我们正站在一个激动人心的时刻, ai 能力呈指数级增长,但随之而来的是一个严峻的挑战,如何让这些聪明的 ai 助手与我们现有的五花八门的系统高效对话? 传统的 rest api, 这位曾经的王者,如今在面对自主规划复杂任务执行的 ai agent 时,显得有些力不从心了。它就像一套古老的密码本,每个系统都用不同的方言。 ai agent 想要理解并操作它们需要大量的胶水代码, 这无疑是在无意中建造一座新的巴别塔。想想看,一个 ai 旅行助手,任务是帮你预定下周从上海到北京的行程,包括机票、酒店和当地交通。 如果用传统 rest api, ai agent 得先知道有哪些 api 可用,比如 a 公司的机票 api, b 公司的酒店 api, 然后他还得像学外语一样,逐个掌握每个 api 独特的 url 结构、请求格式、认证方式和错误码。更麻烦的是, rest 是 无状态的, agent 必须自己在脑子里记住,机票订好了,订单号是 x x x, 才能进行下一步定酒店。这整个过程的状态管理完全依赖 agent 自身,极易出错。 而且,如果 a 公司的 api 突然下线, agent 很 难自主切换到备选方案,除非开发者提前写好了融错逻辑。 这种模式下,开发者大量的精力都耗费在了编辑脆弱的胶水代码上,而不是专注于 agent 的 核心智能。 ai 的 潜力被集成的复杂性牢牢锁住了。 正是在这样的背景下,模型上下文协议 m c p 应运而生。它不是要取代所有 api, 而是为 ai agent 与外部世界交互提供了一个全新的、更高层次的抽象协议。 m c p 的 核心架构是一个客户端服务器模型。 mcp server 扮演了一个特殊的后端服务角色,它不直接暴露原始的业务逻辑,而是将内部系统、数据库甚至其他 a p i 统一封装成 ai agent 可以 理解和使用的工具和资源。 而 mcp client 则嵌入在 ai agent 或其宿主环境里,负责与 mcp server 通信。这就像给 ai agent 配备了一个翻译官和记忆助手,让他们能更自然、更高效地与外部系统打交道。 为了更清晰地展示两者的差异,我们来一场深度对话。 m c p server 的 设计哲学与传统 rest api 有 着本质的不同。设计目标上, m c p server 是 为 ai agent 提供一套标准化的工具级,让 agent 能自主交互。 而 rest api 主要是为人或应用程序提供对资源的增删改查操作。状态管理上, mcp 是 有状态连接, server 会为每个绘画维护上下文,支持多部任务流。 而 rest 是 无状态的,每次请求都得包含所有信息服务发现方面, m c p 内置了标准化的能力协商机制, agent 可以 直接问 server 你 能做什么? rest 通常依赖外部文档发现,是静态的。通信模型上, m c p 支持事件驱动,双向通信, server 可以 主动推送,而 rest 是 严格的客户端拉取模式啊。交互力度上, m c p 暴露的是预定机票、发送消息等高层级动作, 而 rest 暴露的是对底层资源的操作,比如 get 斜杠、 tickets。 这些差异直接决定了他们在 ai 时代适用场景的不同。 让我们回到旅行预定这个场景,用 mcp 来解决刚才 rest api 遇到的困境。 使用 mcp server, 企业可以构建一个旅行预定 mcp server, 它将内部的机票、酒店、租车等 api 封装成三个标准工具, book flight、 book hotel rent car。 ai agent 连接到该 server 后,通过能力协商得知这三个工具的存在及其用法。 agent 调用 book flight mcp server 执行预定,并在当前绘画中保存下机票的上下文信息。 接着, agent 调用 book hotel mcp server, 能自动从绘画上下文中获取航班到达时间,为 agent 推荐机场附近的酒店, 整个过程流畅连贯。 ai agent 无需关心底层 api 的 细节,只需专注于任务规划和决策。这不仅提升了开发效率,据说能提升百分之三十以上,还能优化网络开销和延迟。 更重要的是,这种封装为企业带来了前所未有的治理和安全能力,可以在 m c p server 层统一实现。认证、授权、审计等 理论终须实践。在二零二五年的今天, java 生态在 ai 领域的整合已相当成熟,特别是 vmware tanzhou 的 spring ai 团队维护的官方 mcp java sdk 已经成为社区标准。 接下来,我们就以它为基础,构建一个提供天气查询工具的最小 mcp 服务。 首先,确保你的开发环境准备好了 jdk 十七或更高版本 mevin 或 grado 作为构建工具,核心框架是 spring boot 三 x, 加上 spring ai, 我们会使用 spring a m c p s d k 这个 m c p s d k 以及大家熟悉的 intel j i d e 或 vs code。 我 们的目标是创建一个 m c p server, 它能暴露一个名为 get current weather 的 工具,让 ai agent 可以 调用它来查询指定城市的天气。 第一步,创建一个新的 spring boot 项目,选择 maven 或 grado java 十七,然后在 pom xml 中加入核心依赖。 除了标准的 spring web starter, 关键是要引入 spring imcp stock, 这就是我们用来构建 mcp 服务的魔法棒。另外, lambog 是 个好习惯,可以简化代码。 第二步,定义我们的 m c p 工具,创建一个 java 类,比如叫 weather two。 这里的关键在于使用 m c p s d k 提供的注解。 add component 是 标准的 spring bean 注解。 add mark two 是 核心,它将 weather two 类声明为一个工具级, name 属性是工具的名称。 description 是 描述。 在这个工具集里,我们用 at make two function 来标记具体的方法,比如 get current weather。 同样,它的 description 参数非常重要, ai agent 会依据这个描述来判断何时以及如何调用该函数 方法的参数也需要用 eight mac two function parameter 来描述说明参数的含义和要求。看,就这么简单几步,我们就把一个普通的 java 方法变成了一个 m c p 工具。 第三步,启动 m c p server, 创建一个标准的 spring boot 主应用程序类,比如 makeweather application。 这里有一个关键的魔法注解, enable mac server。 这个注解是由 spring ai m c p s d k。 提供的,它会启动一个内嵌的 m c p 协议处理器,这个处理器会监听特定的路径,比如默认的斜杠 m c p 处理进来的 jason r p c 请求,并将请求路由到正确的 mac 二 function。 有了这个注解, spring boot 应用就具备了 mcp server 的 功能。第四步,运行与测试。现在直接运行 macweather application 服务,启动后它就在八千零八十端口监听 mcp 路径。 我们可以用 curl 来模拟一个 mcp client 的 调用。首先, ai agent 通常会发送一个 mcp discover 请求,来了解这个 server 能做什么。 看这个 curl 命令,我们发送了一个 json rpc 二点零格式的请求。 method 是 mcp discover, 预期的响应是什么呢? server 会返回一个包含所有工具定义的 json, 告诉你有哪些工具,每个工具的功能和参数是什么, 这样 agent 就 知道了 weather get current weather 这个工具,并且了解了它的用法啊。当用户的提问是北京今天天气怎么样? 十、 ai agent 会分析这个问题,决定调用我们刚才定义的 weather 点 get current weather 工具。于是他会发送第二个客户请求。这次 method 变成了 weather 点 get current weather parameters 里包含了 location, 参数值是 beijing。 注意,这里的参数名和类型必须与我们在 m c p two 方式中定义的一致。预期的响应就是我们 weather two 方法返回的那个 map, 转换成 json 格式。 ai agent 得到这个结构化的 json 数据后,就能轻松生成一句自然语言的回答了。 至此,你已经成功构建并测试了一个符合 m c p 规范的 java 服务。它将一个简单的 java 方法无缝地转化为了一个可被全球任何兼容 m c p 的 ai agent 发现和调用的强大工具。 m c p 不 仅仅是一个技术协议,它代表了一种全新的思维方式,正在深刻影响企业 it 架构的未来。到了二零二五年底, m c p 的 生态系统已经相当繁荣, 主流的 ai agent 框架,比如 land chain、 拉玛 index、 auto gen 都已提供官方的 m c p 适配器,使得在这些框架中消费 m c p 工具变得非常容易。 各大模型提供商从 openai 到 google gemini, 都在其 agent 平台和工具调用功能中原生或间接支持 m c p 协议,使其成为事实上的行业标准。 围绕 m c p 的 开源社区也非常活跃,各种工具链、服务器实现和预构建的连接器层出不穷,极大地降低了企业构建私有 m c p 服务的门槛。 随着成千上万的 m c p。 服务器上线,安全和治理成为重中之重。最佳实践强调安全始于设计。 企业级 m c p server 必须集成强大的认证机制,比如 o a o s 二点零,并且能够对不同 ai agent、 不 同用户进行细力度的工具访问授权。 每一次 ai agent 的 工具调用都应该被详细记录,包括输入、输出和消耗的资源,这对于问题排查、成本分析和合规性审查直观重要。 同时还要防范恶意或被操纵的 ai agent 通过 m c p。 工具进行破坏性操作,比如删除数据、发起攻击。 因此,隔离、速率限制和危险操作、二次确认等机制正在成为 m c p。 安全机准的一部分。 m c p 的 终极愿景是实现 ai agent 的 智能编排。 未来我们看到的将不再是开发者手动将 agent 连接到固定的 m c p server, 取而代之的可能是一个动态的、提示感知的 m c p 服务网格。 想象一下,用户给出一个复杂的指令,比如下个季度销售额最高的产品的供应商最近有什么负面新闻? 整理一份报告发给法务团队一个顶层的编排 agent 接收到指令后,他不会直接执行,而是向企业内的 m c p。 服务注册中心查询。 他会发现需要销售数据 m c p。 服务、供应链 m c p。 服务、公开舆论 m c p。 服务和企业通讯 m c p。 服务。 然后,编排 agent 动态地为执行任务的子 agent 创建了一个临时的、包含这四个 m c p。 服务访问权限的上下文空间。 紫 a 诊在这个空间内自主地调用工具组合数据生成报告,并最终通过通讯工具发送出去。在这个模式中, m c p server 不 再是孤立的节点,而是构成了一个可被 ai 动态发现组合和编排的能力网络 开发者的角色也从编辑胶水代码的管道工转变为定义和治理这些能力的工具匠和架构师。 mcp server 与传统 api 的 差异,本质上是工业时代指令式思维与智能时代意图式思维的差异。 api 为我们提供了精确的螺丝刀,而 mcp 则给了 ai 一个能自主选用工具的瑞士军刀。 他并非要宣告 api 的 死刑,而是为其开辟了一条通往智能世界的进化之路。将现有 api 封装成 m c p。 工具,让沉淀了数十年的企业数字资产能够在新时代被 ai 重新激活, 创造出惊人的价值。作为开发者,拥抱 m c p 就 像二十年前拥抱 rest 一 样,不仅仅是学习一项新技术,更是拥抱一种构建未来的新范式。 用 java 和 spring ai 构建你的第一个 m c p server 吧,这或许就是你开启 ai 原生开发之旅的第一把钥匙。