> 技术文档 > 基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp

基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp

导语:
本文通过一个小的demo来演示基于Spring AI开发MCP Server并使用Cline进行配置调用,帮助大家更好理解内部实现原理。文末附源码获取方式!

一、Spring AI MCP 扩展

Model Context Protocol(MCP)作为新一代 AI 服务交互协议,近期发布了 Java SDK 0.8 版本。新版本带来了更强大的会话管理能力和工具集成机制,但在使用原生 SDK 时,开发者仍面临以下挑战:
依赖注入和生命周期管理:需手动处理,操作繁琐。

工具注册流程:较为复杂,配置步骤多。

与 Spring 生态整合:缺乏深度整合,与现有 Spring 项目适配性差。

为解决这些问题,Spring 官方团队与 MCP 项目合作推出了 Spring AI MCP 扩展。通过 Spring Boot Starter,实现了一键式整合,显著降低了企业级 AI 服务的开发门槛,让开发者可以更轻松地在 Spring 项目中使用 MCP 功能。

二、开发过程

1、在Maven中添加如下配置:

<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId></dependency>

2、实现一个简单的业务逻辑:

package com.example.demo;import org.springframework.ai.tool.annotation.Tool;import org.springframework.ai.tool.annotation.ToolParam;import org.springframework.stereotype.Service;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Paths;@Servicepublic class FileReadService{ @Tool(description = \"根据文件路径读取文件内容\") public String readFile( @ToolParam(description = \"文件路径,例如:D:\\\\download\\\\kuake\\\\alipayPublicKey_RSA2.txt\") String fileName) { try {  return new String(Files.readAllBytes(Paths.get(fileName))); } catch (IOException e) {throw new RuntimeException(e); } } }

这里有两个关键的注解:
@Tool是描述了这个方法的详细信息,也是大模型识别方法意图的关键。
@ToolParam是描述了这个方法参数的详细信息。
以Cline为例,配置完成后显示效果是这样的:
基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp
3、将服务进行注册:

package com.example.demo;import org.springframework.ai.tool.ToolCallbackProvider;import org.springframework.ai.tool.method.MethodToolCallbackProvider;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); System.out.println(\"Spring Boot Console Application is running!\"); }@Beanpublic ToolCallbackProvider readFileTools(FileReadService fileReadService) {return MethodToolCallbackProvider.builder() .toolObjects(fileReadService) .build(); }}

由于本次开发demo是命令行形式,所以直接打成Jar包即可。由于是新特性,所以要使用Java17,否则会出现编译报错。

三、Cline配置及调用

1、在VS Code中选择Cline插件,点击MCP 服务器配置按钮
基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp
2、本次是命令行工具,所以配置如下,本质上就是配置上程序启动的各种参数:

 \"mcp-demo\":{ \"disabled\": false, \"timeout\": 60, \"command\": \"D:\\\\Java\\\\jdk-17.0.12\\\\bin\\\\java\", \"args\": [ \"-jar\", \"D:\\\\codework\\\\Test\\\\AI\\\\mcp-server-demo\\\\target\\\\spring-boot-console-demo-0.0.1-SNAPSHOT.jar\" ], \"transportType\": \"stdio\" }

配置完成后,如果没有问题,就可以在已安装列表中显示了。
基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp
基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp
右上角小圆点为绿色,说明服务可用。

同时可以注意到底部有“重启服务器”选项,针对本地类型(Stdio)的MCP Server,一般是以子进程的方式启动建立双向数据流。

在初始过程中,MCP Clinet端就会获取Server端注册的所有工具描述(如list_files工具的输入参数、返回格式)。也就是上文开发过程中@Tool注解相关内容。

四、使用验证

配置完成后就可以直接进行测试了。

这里可以看到接收到任务后,Cline进行了拆解,优先查看已连接的MCP服务器,发现匹配之后再去查看参数,进而组织参数进行调用,并返回结果。
基于Spring AI开发MCP Server并使用Cline进行配置调用_spring ai 调用mcp
关注【关于那些的个人观点】,发送“MCP源码”,获取完整demo源码示例