【附源码】用Spring AI通杀所有MCP客户端,简直离谱!
在上一章节中,我们讲解了MCP服务,并以Spring AI作为客户端和服务端进行示例说明。然而,当前市面上已经存在众多成熟的MCP客户端和服务端实现。那么,Spring AI在这些现有方案中的适配程度究竟如何?接下来,我们将深入探讨这一问题。
Spring AI客户端-第三方MCP
MCP市场
我们先看下目前流行的MCP服务都有哪些,当然我们不必去手动实现已有的服务端,现在有很多MCP市场,比如腾讯云、阿里都有这些市场,我们都来实验一下,在Spring AI客户端中的是否可以真正的使用起来。那么这里我们就以腾讯云为例开始演示。地址在这里:https://cloud.tencent.com/developer/mcp

腾讯位置服务 MCP Server
今天我们就举一个最常见的案例——地图服务,我们找到腾讯位置服务,然后根据他的文档快速的申请一下相关的秘钥信息等。

准备工作完成之后,我们开始接入,在配置文件中,我们引入必要的配置信息,如下:
spring.ai.mcp.client.sse.connections.server2.url=https://mcp.map.qq.com
spring.ai.mcp.client.sse.connections.server2.sse-endpoint=/sse?key=<申请的key>&format=0
OK。就这么简单,我们直接启动项目进行实时对话直接查看是否成功,效果如下:

新闻服务
除了常规使用SSE URL方式进行通信的MCP服务可以正常兼容外,在Studio模式下同样能够良好运行和适配。接下来,我们将以一个新闻服务的快速接入为示例进行演示。如图所示:

按照其配置说明添加在Spring AI项目的配置目录下。具体配置如下:
spring.ai.mcp.client.stdio.servers-configuration=classpath:mcp-servers.json
我们只需要将此文件内容换成官方的命令即可。随后我们正常启动项目,效果如下:

服务端常用的两种模式,这里全部正常。我们再看下第三方MCP客户端和Spring AI 服务端是否也可以正常兼容。
第三方MCP客户端-Spring AI 服务端
Claude Desktop
首先,我们要介绍的是当前最为流行的客户端工具之一 —— Claude Desktop。该工具支持本地运行,用户只需在本地下载安装完成后,便可通过选择相应的配置文件,直接加载并对接Spring AI所提供的MCP服务,实现快速接入与调试。具体操作流程如下图所示:

文件内容如下所示:
"spring-ai-mcp-weather": {
"command": "java",
"args": [
"-Dspring.ai.mcp.server.stdio=true",
"-Dspring.main.web-application-type=none",
"-Dlogging.pattern.console=",
"-Dmybatis-plus.global-config.banner=false",
"-jar",
"D:/project/spring-ai-courses/08-course-mcp/course-mcp-server/target/course-mcp-server-1.0-SNAPSHOT.jar"
]
}
配置完成后,请注意需要重启应用,使刚才的设置生效。
我们这边的 Spring AI 服务无需单独运行,只需打好 JAR 包即可被加载使用。下面我们直接来做一个简单的测试:

首先他会进行一次提示,询问是否调用MCP服务,说明基本成功了。我们再看下能够成功调用,效果如下:

n8n
接下来,我们将继续测试另一个近期非常热门的工具 —— n8n。该自动化平台原生支持与 MCP 服务的集成,且采用的是基于 SSE(Server-Sent Events)的通信模式。
如果本地尚未安装 n8n,可通过宝塔面板轻松获取并完成部署。只需在面板应用市场中搜索 “n8n”,即可一键安装并开始配置。如下图所示:

接下来要做的,是让 n8n 能访问到我们本地的 Spring AI 服务。你有两个选择:要么把服务部署到线上;要么就像我这样,用内网穿透把本地服务暴露出来。
我这里用的是内网穿透的方式,接下来我们就来配置一下:

这里的 /sse 是 Spring AI 默认提供的接口后缀,我们直接填这个就行了。如果你在服务端做了修改,那也可以用自定义的路径。
现在我们来看下最终的效果,看看能不能成功触发调用。如下图所示:

Codebuddy
最后一个环节是 IDE 插件的集成配置,这里我们以腾讯云出品的 Codebuddy 插件为例进行演示。
首先,在本地 IDE(如 IntelliJ IDEA 或 VS Code)中安装好 Codebuddy 插件。然后登录自己的腾讯云账号,登录完成后点击左侧的 “MCP 管理” 菜单,进入插件的 MCP 配置界面,如下图所示:

紧接着写好我们的配置文件内容,可以写sse模式也可以写studio模式的配置,这里以studio模式为例。如图所示:

一切调用成功。
小结
本文系统演示了如何在 Spring AI 架构下集成主流 MCP 服务和客户端工具,包括腾讯云地图、新闻服务、Claude Desktop、n8n 以及 Codebuddy 插件,全面验证了 Spring AI 的良好兼容性与扩展性。
本文源码已提交至 GitHub 仓库,可直接下载使用:https://github.com/StudiousXiaoYu/spring-ai-courses
【附源码】用Spring AI通杀所有MCP客户端,简直离谱!的更多相关文章
- spring学习笔记2---MVC处理器映射(handlerMapping)三种方式(附源码)
一.根据Beanname访问controller: 在springmmvc-servlet.xml的配置handlermapping中加入beanname,通过该beanname找到对应的contro ...
- ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
可以先看下列文章 目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文 ...
- 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)
在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...
- Mybatis+SpringMVC实现分页查询(附源码)
Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...
- javaweb异常提示信息统一处理(使用springmvc,附源码)
一.前言 后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适. 先不考虑代码实现,我们希望是这样的: (1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异 ...
- C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)
前段时间,有几个研究ESFramework通信框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关 ...
- (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)
干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- 详解SpringBoot集成jsp(附源码)+遇到的坑
本文介绍了SpringBoot集成jsp(附源码)+遇到的坑 ,分享给大家 1.大体步骤 (1)创建Maven web project: (2)在pom.xml文件添加依赖: (3)配置applica ...
- SpringCloud-服务注册与实现-Eureka创建服务提供者(附源码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
随机推荐
- 自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
博客地址:https://www.cnblogs.com/zylyehuo/ 成果图 STEP1 创建工作空间 mkdir -p car_ws/src cd car_ws catkin_make ST ...
- java的数据类型之基本类型
强类型语言 要求变量的使用要严格符合规定,所有变量都必须先定义后使用.如果没有按照指定要求使用变量,则该变量将报错.java就是强类型语言. java的两大数据类型 1.基本类型 2.引用类型 其中基 ...
- C# 中合并2个 Dictionary
内置方法 using System.Collections.Generic; using System.Linq; Dictionary<string, object> dicA = ne ...
- 掌握FastAPI与Pydantic的跨字段验证技巧
title: 掌握FastAPI与Pydantic的跨字段验证技巧 date: 2025/04/01 00:32:07 updated: 2025/04/01 00:32:07 author: cmd ...
- mybatis的mapper接口动态代理开发
一.必须遵守的四项原则 1:接口 方法名==xx.xml中的id名 2:方法返回值类型与Mapper.xml文件中返回值类型一致 3:方法的入参类型与Mapper.xml文件中入参值类型一致 4:命名 ...
- java基础之数据结构
一.栈:stack,又称堆栈[出口和入口在同一侧],特点:先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素) 例子:子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当 ...
- px转rem适配方案之postcss-pxtorem
一.安装 npm install postcss-pxtorem --save-dev 二.增加postcss.config.js文件 在目录文件下增加postcss.config.js并添加相关配置 ...
- 为什么 G1 垃圾收集器不维护年轻代到老年代的记忆集?
为什么 G1 垃圾收集器不维护年轻代到老年代的记忆集? 在 G1 垃圾收集器中,不维护年轻代到老年代的记忆集(Remembered Set, RSet)是因为其设计特点和优化策略使得这种记忆集的维护既 ...
- 『Plotly实战指南』--布局进阶篇
在数据可视化领域,Plotly的子图布局是打造专业级仪表盘的核心武器. 当面对多维数据集时,合理的子图布局能显著提升多数据关联分析效率,让数据的呈现更加直观和美观. 本文将深入探讨Plotly中子图布 ...
- CSharp_base
C# 基础篇 枚举(enum) 枚举是一个被命名的整形常量的集合 用于表示: 状态 类型 申明枚举:创建一个自定义的枚举类型 申明枚举变量:使用申明的自定义的枚举类型,来创建一个枚举变量 语法 //语 ...