摘要:

        本文旨在帮助新手快速了解MCP,MCP是Anthropic推出的标准化协议,旨在实现大型语言模型与外部工具的安全高效交互。它支持三种传输方式:标准输入输出(简单本地调试)、服务器发送事件SSE(已弃用)和可流式HTTP(双向通信)。SpringAI可通过引入依赖和配置yaml/json文件来调用MCP服务器,支持外部文件读取或直接配置参数。MCP解决了AI工具间的互操作性问题,被誉为"AI界的USB-C接口"。

一,MCP定义

MCP 即 Model Context Protocol,模型上下文协议,是由 Anthropic 公司于 2024 年 11 月推出并开源的一项创新标准。

1,MCP优势

        MCP 旨在实现大型语言模型与外部数据源、工具和服务之间的标准化、安全和高效交互,类似于 AI 界的 “USB-C 端口”。它定义了一套通用的消息格式和交互流程,让 AI 模型能够以统一的方式与各种外部工具进行 “对话”,打破了不同 AI 模型和工具之间的壁垒。

2,MCP与Tools

        MCP可以理解为一些公共独立部署的web服务与多个AI应用对接所需要遵守的协议,解决AI应用的Tools开发工作量以及单个AI应用的“信息孤岛问题”

二,MCP的三种传输方式

1,标准输入输出(stdio)

        这是最基础的传输方式,使用标准输入(stdin)和标准输出(stdout)进行通信,类似于 Python 的 subprocess.Popen,然后通过 write/read stdout 来实现。其实现简单,无需额外网络配置,适合本地调试和 CLI 工具开发,以及简单的进程间通信,但适用场景有限。

2,服务器发送事件(SSE,已弃用)

        SSE 模式利用 HTTP 长连接实现服务器向客户端的单向实时通信,它通过 HTTP POST 请求实现客户端到服务器通信,同时支持服务器到客户端流式传输。该方式适合大量客户端连接但只需服务器推送的场景,例如服务器需要向客户端实时推送消息通知等。

3,可流式 HTTP(Streamable HTTP)

        可流式 HTTP 模式提供了更灵活的 HTTP 双向通信能力,是一种有状态的实现方式,能够感知中断。它不像 SSE 那样必须一直保持连接,客户端和服务器可以随时相互发送消息,支持双向流式传输,适合需要双向互动和更复杂通信的远程场景,如复杂的 Web 应用程序中客户端与服务器之间的频繁交互

三,Spring AI调用公共MCP_Server

1,引入依赖(sse/stdio)

<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
</dependency>

2,配置yaml文件

(1)外部json文件读取(推荐)

spring:
  ai:
    mcp:
      client:
        enabled: true
        request-timeout: 60000
        stdio:
          servers-configuration: mcp-servers-config.json

(2)直接配置在yaml文件

spring:
  ai:
    mcp:
      client:
        enabled: true
        request-timeout: 60000
        stdio:
          connections:
            server1:
              command: "cmd"
              args:
                - "/c"
                - "npx"
                - "-y"
                .......
              env:
                API_KEY: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐