MCP对接Spring AI Alibaba遇到的坑

上一篇中我们简单介绍了MCP的内容。本期分享下Spring AI Alibaba给的demo

官方文档中给的流程图感觉不是太清晰,然后我画了一个流程图

因为流程很重要,这个流程图我再次发一下,python版本感觉DEMO比JAVA版本更能体会每步的流程(感觉java的封装的比较深吧

遇到的坑

  • 1.starter的选择问题(我想这是通用的就直接在网上找了个基础的demo跑没用ali的starter,一直报错连里面初始化的模型名字都不对,开始我还以为是配置文件的问题,后来我发现应该是每个模型都有自己的starter然后只用配置个API-KEY就可以了
  • 2.工具输出了springboot的logo导致mcp包解析数据报错(这个问题的发现是用了jaredit的插件改了包的内容打印了错误输出发现的,报错的原因后面会说开始我还以为是JACKSON的版本问题
  • 3.这两个地方浪费了好多时间,剩下的借用官方的demo就一路通行了。

愉快的运行个流程

  • 1.项目地址 github.com/springaiali...
  • 2.Spring AI 默认的JDK版本是17
  • 3.Client POM的一些文件(注意要找模型对应的starter实现
  • 4.demo中mcp例子是个天气预报
xml 复制代码
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.2.4</version>
        </dependency>
        <!--ollama的实现-->
        <!-- <dependency>
     <groupId>org.springframework.ai</groupId>
     <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
 </dependency>-->
        <!-- 这里每个模型会有个对应的 starter实现-->
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter</artifactId>
            <version>1.0.0-M6.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
            <version>1.0.0-M6</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>21</source>
                    <target>21</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0-M6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • 4.注意工具调用是(是通过命令的方式进行的
yaml 复制代码
spring:
  ai:
    mcp:
      client:
        request-timeout: 40s
        stdio:
          #servers-configuration: classpath:/mcp-servers-config.json
          # 直接配置
           connections:
             server1:
               command: D:/java/jdk-21.0.1/bin/java
               args:
                 - -Dspring.ai.mcp.server.stdio=true
                 - -Dspring.main.web-application-type=none
                 - -Dlogging.pattern.console=
                 - -jar
                 - D:/toolsInstall/McpServerTest/target/McpServerTest-1.0-SNAPSHOT.jar
  • 5.MCP server也是通过SpringBoot的方式进行开发的 引入了一个问题

SpringBoot在启动的时候会打印LOGO导致mcp的包解析接收工具数据的时候出现JSON解析异常

原因是:mcp按行解析输出的时候直接进行json解析导致出错了(logo不是json格式的

mcp挂掉的地方

处理办法是工具包在开始的时候屏蔽springbott的logog打印

arduino 复制代码
    public static void main(String[] args) {
        //SpringApplication.run(McpServerApplication.class, args);
        //获取SpringBoot入口类
        SpringApplication springApplication=new SpringApplication(McpServerApplication.class);
        //设置它的属性 屏蔽logo打印
        springApplication.setBannerMode(Banner.Mode.OFF);
        springApplication.run(args);
    }
  • 6.MCPServer声明很简单
typescript 复制代码
/**
 * 声明一个时间工具
 * 获取当前时间
 */
@Service
public class CurrentTimeService {
    @Tool(description = "获取当前时间")
    public String getCurrentTime() {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(System.currentTimeMillis());
    }
}
  • 7.效果
相关推荐
stanny3 分钟前
MCP(上)——function call 是什么
前端·mcp
win4r5 分钟前
🚀多维度测评OpenAI最新GPT-4.1模型!百万token上下文窗口!编程能力和指令遵循能力大幅提升!Cline+GPT-4.1十分钟零代码开发macOS
chatgpt·openai·ai编程
十分钟空间3 小时前
MCP(Model Context Protocol)技术与项目集成指南
ai编程·mcp
vil du3 小时前
c# AI编程助手 — Fitten Code
开发语言·c#·ai编程
磊叔的技术博客4 小时前
A2A 与 MCP:智能体协作的新纪元与AI工程化的思考
人工智能·开源·mcp
lcf_zhangxing4 小时前
Claude中调用mcp天气服务
mcp
AI小码4 小时前
期待的 A2A 和 MCP 的对比,谷歌与Anthropic联手打造的AI协作新时代,你准备好了吗?
人工智能·mcp
clarance20188 小时前
MCP技术革命:元控制协议如何重构AI与数据库的交互范式
mcp
黑心萝卜三条杠8 小时前
单目3D目标检测新突破:MonoTAKD如何用助教模型解决深度模糊难题
ai编程
玲小珑8 小时前
5分钟学会LLM开发系列教程(五)Agent的最终形态LangGraph
langchain·node.js·ai编程