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

导语:
本文通过一个小的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;
@Service
public 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为例,配置完成后显示效果是这样的:
在这里插入图片描述
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;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        System.out.println("Spring Boot Console Application is running!");
    }
@Bean
public ToolCallbackProvider readFileTools(FileReadService fileReadService)
    {
return MethodToolCallbackProvider.builder()
                .toolObjects(fileReadService)
                .build();
    }
}

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

三、Cline配置及调用

1、在VS Code中选择Cline插件,点击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"
    }

配置完成后,如果没有问题,就可以在已安装列表中显示了。
在这里插入图片描述
在这里插入图片描述
右上角小圆点为绿色,说明服务可用。

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

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

四、使用验证

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

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

### 配置MCP Servers与Cline的方法 #### 1. 安装环境准备 为了成功配置MCP Servers和Cline,需要先安装必要的开发环境。以下是具体的准备工作: - **Node.js 和 npm**: 确保已安装 Node.js 及其包管理器 npm。可以通过命令 `node -v` 和 `npm -v` 来验证是否正确安装[^2]。 - **Python 环境**: MCP Server 的实现通常基于 Python,因此需要确保 Python 已经安装可用。建议使用虚拟环境来隔离依赖项。 ```bash # 创建激活虚拟环境 (可选) python3 -m venv env source env/bin/activate ``` #### 2. 编写MCP Server代码 按照提供的示例代码,创建一个名为 `mymcp.py` 的文件,将其作为基础的 MCP Server 实现。 ```python from mcp.server.fastmcp import FastMCP mcp = FastMCP("Demo") # Demo 是 MCP Server 的名字 @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b if __name__ == "__main__": print("Starting MCP server...") mcp.run(transport='stdio') ``` 上述代码定义了一个简单的加法函数 `add` 注册到 MCP Server 中。启动该脚本即可运行服务器[^1]。 #### 3. 启动MCP Server 在终端中运行以下命令以启动 MCP Server: ```bash python mymcp.py ``` 这将在标准输入输出模式下启动服务器,等待来自客户端的任务请求。 #### 4. 配置Cline插件 Cline 插件用于通过 MCP 协议与服务器通信。以下是具体步骤: - **安装 TypeScript 版本的 Cline**: ```bash npm install -g @mcp/cli-typescript ``` 此命令会全局安装 MCP-TypeScript CLI 工具。 - **初始化项目**: 进入工作目录后,执行以下命令以初始化一个新的 TypeScript 项目: ```bash mcp init --typescript ``` 这将生成默认的项目结构以及所需的配置文件。 - **修改配置文件**: 编辑项目的 `config.json` 文件,指定本地 MCP Server 的地址和服务名称。例如: ```json { "server": { "address": "localhost", "port": 8080, "service_name": "Demo" } } ``` 注意:如果使用的是 `stdio` 模式的传输方式,则无需显式设置端口。 #### 5. 调试服务 完成以上配置后,可以在 VS Code 或其他支持的 IDE 中进行调试测试。确保以下条件满足: - MCP Server 正常运行。 - Cline 插件能够连接至指定的服务地址。 尝试调用 `add` 方法以验证功能正常: ```javascript const result = await client.call('add', { a: 5, b: 7 }); console.log(result); // 输出应为 12 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值