什么是模型上下文协议 (MCP)?与 API 相比,它如何简化 AI 集成?

在这里插入图片描述
模型上下文协议(Model Context Protocol,简称MCP) 是一种新的开放协议,用于标准化应用程序向大型语言模型 (LLMs) 提供上下文的方式。

将 MCP 视为适用于 AI 代理的 USB-C 端口:它提供了一种将 AI 系统连接到各种工具和数据源的统一方法。

本文将清晰地解释MCP的价值、工作原理,以及它与传统API的关键区别。

什么是 MCP?

模型上下文协议 (MCP) 是一种标准化协议,可将 AI 代理连接到各种外部工具和数据源。可以将其想象为 USB-C 端口 - 但适用于 AI 应用程序。

在这里插入图片描述

模型上下文协议 (MCP) 是一种将 AI 代理连接到各种外部工具和数据源的标准化协议

正如 USB-C 简化了您将不同设备连接到计算机的方式一样,MCP 简化了 AI 模型与您的数据、工具和服务交互的方式。

为什么要使用 MCP 而不是传统 API?

传统上,将 AI 系统连接到外部工具需要集成多个 API。每个 API 集成都意味着单独的代码、文档、身份验证方法、错误处理和维护。

为什么传统 API 就像每扇门都有单独的钥匙

打个比方: API 就像是单独的门 - 每扇门都有自己的钥匙和规则:
在这里插入图片描述传统 API 要求开发人员为每个服务或数据源编写自定义集成

MCP 背后是谁?

MCP(模型上下文协议)最初是Anthropic的一个项目,目的在于让 AI 模型(如 Claude)更容易与工具和数据源进行交互。

但这已不再只是人类的事情。MCP 是开放的,越来越多的公司和开发人员正在加入其中。

它开始看起来很像人工智能工具交互的新标准。

想深入了解吗?官方 MCP 规范和正在进行的开发可以在modelcontextprotocol.io找到。

MCP 与 API:快速比较

特征MCP传统 API
整合工作单一、标准化的集成每个 API 单独集成
实时通信✅ 是的❌ 没有
动态发现✅ 是的❌ 没有
可扩展性简单(即插即用)需要额外的集成
安全与控制跨工具保持一致因 API 而异

MCP 与传统 API 之间的主要区别:

  • 单一协议: MCP 充当标准化的“连接器”,因此集成一个 MCP 意味着可以访问多种工具和服务,而不仅仅是一种
  • 动态发现: MCP 允许 AI 模型动态发现并与可用工具交互,而无需对每个集成进行硬编码
  • 双向通信: MCP 支持持久、实时的双向通信 - 类似于 WebSockets。AI 模型既可以检索信息,也可以动态触发操作

为什么要双向沟通?
MCP 提供实时、双向通信:

  • 拉取数据: LLM 向服务器查询上下文 → 例如检查日历
  • 触发操作: LLM指示服务器采取行动 → 例如重新安排会议发送电子邮件

MCP 的工作原理:架构

MCP 遵循简单的客户端-服务器架构:
在这里插入图片描述

  • MCP 主机:这些是需要访问外部数据或工具的应用程序(如 Claude Desktop 或 AI 驱动的 IDE)
  • MCP 客户端:它们与 MCP 服务器保持专用的一对一连接
  • MCP 服务器:轻量级服务器,通过 MCP 公开特定功能,连接到本地或远程数据源
  • 本地数据源: MCP 服务器安全访问的文件、数据库或服务
  • 远程服务:基于互联网的外部 API 或 MCP 服务器访问的服务

将 MCP 视为一座桥梁可以清楚地表明: MCP 本身并不处理繁重的逻辑;它只是协调 AI 模型和工具之间的数据和指令流。

提示
正如 USB-C 简化了你将不同设备连接到计算机的方式一样,MCP 简化了 AI 模型与数据、工具和服务交互的方式

实践中的 MCP 客户端

实际上,MCP 客户端(例如client.py中的 Python 脚本)与 MCP 服务器进行通信,后者管理与GmailSlack 或日历应用等特定工具的交互。

这种标准化消除了复杂性,使开发人员能够快速实现复杂的交互。

MCP 示例:何时使用 MCP?

请考虑以下情形:

1. 旅行计划助理

  • 使用 API:您需要为 Google 日历、电子邮件、航空公司预订 API 编写单独的代码,每个代码都有用于身份验证、上下文传递和错误处理的自定义逻辑
  • 使用 MCP:您的 AI 助手可以顺利检查您的日历是否有空档、预订航班和发送确认电子邮件- 全部通过 MCP 服务器完成,无需每个工具进行自定义集成

2. 高级 IDE(智能代码编辑器)

  • 使用 API:你可以手动将 IDE 与文件系统、版本控制、包管理器和文档集成
  • 使用 MCP:您的 IDE 通过单个 MCP 协议连接到这些,从而实现更丰富的情境感知和更强大的建议

3. 复杂数据分析

  • 使用 API:手动管理与每个数据库和数据可视化工具的连接
  • 使用 MCP:您的 AI 分析平台通过统一的 MCP 层自主发现并与多个数据库、可视化和模拟进行交互

实施 MCP 的好处

  • 简化开发:一次编写,多次集成,无需为每次集成重写自定义代码
  • 灵活性:无需复杂的重新配置即可切换 AI 模型或工具
  • 实时响应: MCP 连接保持活跃,实现实时上下文更新和交互
  • 安全性和合规性:内置访问控制和标准化安全实践
  • 可扩展性:随着 AI 生态系统的发展,轻松添加新功能 - 只需连接另一个 MCP 服务器即可

传统 API 何时更好?

如果您的用例需要精确、可预测且具有严格限制的交互,那么传统 API 可能是更好的选择。MCP 提供广泛的动态功能,非常适合需要灵活性和情境感知的场景,但可能不太适合高度受控的确定性应用程序。

在以下情况下,请坚持使用细粒度 API:

  • 需要细粒度的控制和高度特定、受限的功能
  • 您更喜欢紧密耦合以实现性能优化
  • 您希望以最小的上下文自主性实现最大的可预测性

MCP 入门:高级步骤

MCP 集成:

  1. 定义功能:明确概述您的 MCP 服务器将提供哪些功能
  2. 实现MCP层:遵循标准化的MCP协议规范
  3. 选择传输:在本地(stdio)或远程(服务器发送事件/WebSockets)之间选择
  4. 创建资源/工具:开发或连接您的 MCP 将公开的特定数据源和服务
  5. 设置客户端:在 MCP 服务器和客户端之间建立安全稳定的连接

概括

什么是 MCP?

  • MCP: AI代理与外部数据/工具动态交互的统一接口
  • API:传统方法,需要个性化集成和更多人工监督
    在这里插入图片描述
    MCP 提供了一种统一标准化的方法,将 AI 代理和模型与外部数据和工具进行集成

结论

MCP 提供了一种统一标准化的方式,可将 AI 代理和模型与外部数据和工具集成在一起。它不仅仅是另一个 API,而是一个强大的连接框架,可实现智能、动态且情境丰富的 AI 应用程序。


原文链接:https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/

### Spring AI MCP Java SDK 概述 Spring AI MCP 是一种基于 Model Context Protocol (MCP) 的 Java 实现,旨在简化模型上下文协议的应用开发过程。通过该 SDK,开发者可以轻松构建支持 MCP 协议的服务端和客户端应用程序[^1]。 #### 核心功能 - **多传输选项**:支持多种通信方式,便于灵活集成到不同的技术栈中。 - **三层架构设计**: - **MCP 客户端**:负责向服务端发送请求并处理响应。 - **MCP 服务器**:提供 API 接口供客户端调用,并管理模型上下文数据。 - **工具回调接口(ToolCallbackProvider)**:允许扩展自定义行为以适应特定需求[^2]。 --- ### 使用方法 以下是关于如何使用 Spring AI MCP Java SDK 构建服务端和客户端的具体指导: #### 1. 引入 Maven 依赖 在项目的 `pom.xml` 文件中添加以下依赖项来引入 Spring AI MCP SDK: ```xml <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp</artifactId> <version>1.0.0-M6</version> </dependency> ``` #### 2. 配置 YML 文件 创建或修改项目中的 `application.yml` 或 `application.properties` 文件,设置必要的参数。例如: ```yaml spring: ai: mcp: server-url: http://localhost:8080/mcp-server client-id: my-client-id secret-key: my-secret-key ``` #### 3. 编写服务端代码 服务端需要实现 ToolCallbackProvider 并将其注册到容器中。示例代码如下: ```java import org.springframework.ai.mcp.ToolCallbackProvider; import org.springframework.stereotype.Component; @Component public class MyToolCallbackProvider implements ToolCallbackProvider { @Override public String handleRequest(String requestPayload) { // 自定义逻辑处理接收到的数据 return "Response from tool callback provider"; } } ``` 同时,在控制器类中暴露 RESTful API 来接收来自客户端的请求: ```java import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/mcp-server") public class McpServerController { private final ToolCallbackProvider toolCallbackProvider; public McpServerController(ToolCallbackProvider toolCallbackProvider) { this.toolCallbackProvider = toolCallbackProvider; } @PostMapping("/process") public String process(@RequestBody String payload) { return toolCallbackProvider.handleRequest(payload); } } ``` #### 4. 编写客户端代码 客户端可以通过简单的 HTTP 请求服务端交互。下面展示了一个基本的 Controller 示例: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/mcp-client") public class McpClientController { private final RestTemplate restTemplate; @Value("${spring.ai.mcp.server-url}") private String serverUrl; public McpClientController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @GetMapping("/send-request") public ResponseEntity<String> sendRequest() { String url = serverUrl + "/process"; String requestBody = "{\"key\":\"value\"}"; return restTemplate.postForEntity(url, requestBody, String.class); } } ``` --- ### 总结 Spring AI MCP 提供了一套完整的解决方案,帮助开发者快速搭建基于 MCP 协议的应用程序。无论是作为服务提供商还是消费者角色,都可以借助其强大的功能模块完成复杂的业务场景需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

blues_C

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

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

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

打赏作者

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

抵扣说明:

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

余额充值