Spring AI MCP 客户端实战:轻松连接高德地图等工具

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 服务器。

前提条件

依赖

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

xml 复制代码
<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 配置应用程序:

常用属性
properties 复制代码
# 应用程序配置
spring.application.name=mcp
spring.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 服务器配置一个单独的、命名的配置:

properties 复制代码
spring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.command=npx
spring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.args=-y,@amap/amap-maps-mcp-server

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

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

properties 复制代码
spring.ai.mcp.client.stdio.servers-configuration=classpath:/mcp-servers-config.json

示例 mcp-servers-config.json:

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 为前缀:

properties 复制代码
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8080
spring.ai.mcp.client.sse.connections.server2.url=http://localhost:8081

工作原理

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

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

运行应用程序

  1. 设置所需的环境变量:

    bash 复制代码
    export OPENAI_API_KEY=your-api-key
    export AMAP_MAPS_API_KEY='your-brave-api-key-here'
  2. 构建应用程序:

    bash 复制代码
    ./mvnw clean install
  3. 运行应用程序:

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

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

更多资源

相关推荐
余俊晖几秒前
如何让多模态大模型学会“自动思考”-R-4B训练框架核心设计与训练方法
人工智能·算法·机器学习
hzp6661 分钟前
Magnus:面向大规模机器学习工作负载的综合数据管理方法
人工智能·深度学习·机器学习·大模型·llm·数据湖·大数据存储
hui梦呓の豚5 分钟前
YOLO系列目标检测算法全面解析
人工智能·计算机视觉·目标跟踪
一水鉴天13 分钟前
整体设计 逻辑系统程序 之27 拼语言整体设计 9 套程序架构优化与核心组件(CNN 改造框架 / Slave/Supervisor/ 数学工具)协同设计
人工智能·算法
Y_Chime17 分钟前
从AAAI2025中挑选出对目标检测有帮助的文献——第二期
人工智能·目标检测·计算机视觉
佛喜酱的AI实践39 分钟前
Claude Code配置指南已死,这个一键安装工具才是未来
人工智能·claude
还是大剑师兰特39 分钟前
Transformer 面试题及详细答案120道(91-100)-- 理论与扩展
人工智能·深度学习·transformer·大剑师
bytemaster41 分钟前
国内开发者如何流畅、低成本地用上 Claude Code?有哪些接入 Kimi、通义千问的靠谱方案?
人工智能·程序员
小白狮ww1 小时前
小米开源端到端语音模型 MiMo-Audio-7B-Instruct 语音智能与音频理解达 SOTA
人工智能·深度学习·机器学习
AI袋鼠帝1 小时前
最强开源0.9B级OCR模型!本地Agent、知识库都有救了~
人工智能