掘金 人工智能 04月03日 10:10
Spring AI MCP 客户端实战:轻松连接高德地图等工具
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文档介绍了如何在 Spring Boot 应用程序中使用 Spring AI MCP (模型上下文协议) 客户端启动器。它展示了如何连接到 MCP 服务器并将它们与 Spring AI 的工具执行框架集成。通过一个命令行应用程序示例,演示了如何使用 STDIO 和/或 SSE 传输连接到 MCP 服务器,并与 Spring AI 的聊天功能集成,实现工具执行。用户可以通过 -Dai.user.input 命令行属性自定义问题,方便地查询 MCP 服务器。该项目依赖于 spring-ai-starter-mcp-client 和 spring-ai-starter-model-openai,并提供了详细的配置说明,包括应用程序属性、STDIO 和 SSE 传输属性的设置,以及运行应用程序的步骤。

💡项目核心: 本项目基于 Spring Boot 和 Spring AI,创建了一个命令行应用程序,主要演示了 Spring AI MCP 客户端启动器的使用方法。

⚙️ 依赖项: 项目依赖于 spring-ai-starter-mcp-client 和 spring-ai-starter-model-openai,用于实现 MCP 客户端功能和与 AI 模型的交互。

📝 配置: 应用程序可以通过 application.properties 或 application.yml 文件进行配置,包括应用程序名称、AI 提供商配置(如 OpenAI API 密钥和基础 URL)以及 STDIO 和 SSE 传输属性的设置。

🖥️ 传输方式: 支持 STDIO 和 SSE 两种传输方式连接到 MCP 服务器。STDIO 传输可以通过配置命令和参数来连接到本地服务器,而 SSE 传输则通过配置 URL 连接到 SSE 服务器。

🚀 工作流程: 应用程序启动后,配置多个 MCP 客户端,使用配置的 MCP 工具构建 ChatClient,并将用户定义的问题发送给 AI 模型,最终显示 AI 的响应。

Spring AI - MCP 启动器客户端

本项目演示了如何在 Spring Boot 应用程序中使用 Spring AI MCP (模型上下文协议) 客户端启动器。它展示了如何连接到 MCP 服务器并将它们与 Spring AI 的工具执行框架集成。

请参考 MCP 客户端启动器 的参考文档。

概述

本项目使用 Spring Boot 和 Spring AI 创建一个命令行应用程序,演示了 MCP 服务器集成。该应用程序:

    使用 STDIO 和/或 SSE (基于 HttpClient) 传输连接到 MCP 服务器与 Spring AI 的聊天功能集成演示通过 MCP 服务器进行工具执行通过 -Dai.user.input 命令行属性接收用户定义的问题,该属性在代码中映射到一个 Spring @Value 注解

例如,使用 -Dai.user.input="Spring AI 是否支持 MCP?" 运行应用程序会将此问题通过 Spring 的属性注入注入到应用程序中,并且应用程序将使用它来查询 MCP 服务器。

前提条件

依赖

本项目使用以下主要依赖:

<dependencies>    <dependency>        <groupId>org.springframework.ai</groupId>        <artifactId>spring-ai-starter-mcp-client</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.ai</groupId>        <artifactId>spring-ai-starter-model-openai</artifactId>    </dependency></dependencies>

配置

应用程序属性

查看 MCP 客户端配置属性 文档。

可以通过 application.propertiesapplication.yml 配置应用程序:

常用属性
# 应用程序配置spring.application.name=mcpspring.main.web-application-type=none# AI 提供商配置spring.ai.openai.api-key=${OEPNAI_API_KEY}spring.ai.openai.base-url=https://api.chatanywhere.tech
STDIO 传输属性

请参考 STDIO 配置属性 文档。

为每个要连接的 STDIO 服务器配置一个单独的、命名的配置:

spring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.command=npxspring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.args=-y,@amap/amap-maps-mcp-server

这里,amap-maps-mcp-server 是您的连接名称。

或者,您可以使用 Claude Desktop 格式的外部 JSON 文件配置 STDIO 连接:

spring.ai.mcp.client.stdio.servers-configuration=classpath:/mcp-servers-config.json

示例 mcp-servers-config.json:

{  "mcpServers": {    "amap-maps": {      "command": "npx.cmd",      "args": [        "-y",        "@amap/amap-maps-mcp-server"      ],      "env": {        "AMAP_MAPS_API_KEY": ""      }    }  }}
SSE 传输属性

您还可以使用 HttpClient 连接到服务器发送事件 (SSE) 服务器。请参考 SSE 配置属性 文档。

SSE 传输的属性以 spring.ai.mcp.client.sse 为前缀:

spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8080spring.ai.mcp.client.sse.connections.server2.url=http://localhost:8081

工作原理

该应用程序演示了使用 MCP 工具与 AI 模型进行简单的命令行交互:

    应用程序启动并配置多个 MCP 客户端(每个提供的 STDIO 或 SSE 连接配置对应一个)它使用配置的 MCP 工具构建一个 ChatClient将预定义的问题(通过 ai.user.input 属性设置)发送给 AI 模型显示 AI 的响应自动关闭应用程序

运行应用程序

    设置所需的环境变量:

    export OPENAI_API_KEY=your-api-keyexport AMAP_MAPS_API_KEY='your-brave-api-key-here'

    构建应用程序:

    ./mvnw clean install

    运行应用程序:

    java -Dai.user.input='Spring AI 是否支持 MCP?' -jar target/mcp-starter-default-client-0.0.1-SNAPSHOT.jar

应用程序将执行问题 "Spring AI 是否支持 MCP?",使用提供的高德地图(或其他工具)来回答它,并显示 AI 助手的响应。

更多资源

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Spring AI MCP Spring Boot AI
相关文章