一、环境准备
- 依赖配置
- Spring AI方案(推荐企业级应用):
<!-- Spring AI MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webflux-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
<!-- LangChain4j方案 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>1.0.0-beta2</version>
</dependency>
- 工具准备
- 客户端工具:Claude Desktop、Cursor、Cherry Studio(需配置MCP服务器地址)
- 本地调试:Java JDK 17+,IDE(IntelliJ/VS Code)
二、服务器开发
1. Spring AI方案(SSE模式)
步骤:
-
配置application.yml:
spring: ai: mcp: server: name: my-java-server version: 1.0.0 server: port: 8080
-
定义工具方法:
@Service public class WeatherService { @Tool(description = "查询天气") public String getWeather(@ToolParameter("城市名") String city) { // 调用第三方天气API return "北京今日晴,28℃"; } }
-
注册工具:
@Configuration public class McpConfig { @Bean public ToolCallbackProvider weatherTools(WeatherService service) { return MethodToolCallbackProvider.builder() .toolObjects(service) .build(); } }
-
启动服务:
@SpringBootApplication public class McpServerApplication { public static void main(String[] args) { SpringApplication.run(McpServerApplication.class, args); } }
2. LangChain4j方案(Stdio模式)
步骤:
-
构建客户端:
McpTransport transport = new StdioMcpTransport.Builder() .command(List.of("java", "-jar", "mcp-server.jar")) .build(); McpClient client = new DefaultMcpClient.Builder() .transport(transport) .build();
-
调用工具:
String result = client.execute("获取北京天气"); System.out.println(result); // 输出:北京今日晴,28℃
三、客户端集成
- Cherry Studio配置
- 图形化界面:
- 进入
Settings > MCP Servers
,添加服务器:{ "mcpServers": { "java-server": { "isActive": true, "command": "java", "args": ["-jar", "/path/to/mcp-server.jar"] } } }
- 进入
- 测试工具:输入“北京天气”触发调用。
- Spring Boot客户端调用
@Autowired
private McpClient mcpClient;
public String queryWeather(String city) {
return mcpClient.execute("查询" + city + "天气");
}
四、传输模式对比与选择
模式 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
Stdio | 本地开发、轻量级服务 | 配置简单,无需网络依赖 | 仅支持单进程,不适用分布式 |
SSE | 远程服务、高并发场景 | 支持多客户端、长连接 | 需HTTP服务器配置 |
五、常见问题与优化
-
依赖冲突:
- 使用Maven的
dependency:tree
检查冲突,优先升级Spring AI至最新版(1.0.0-M7+)。
- 使用Maven的
-
性能优化:
- 连接池:配置
McpClient
连接池参数(如最大连接数、超时时间)。 - 异步调用:使用
CompletableFuture
处理高并发请求。
- 连接池:配置
-
安全增强:
- 添加JWT认证:
.header("Authorization", "Bearer " + token)
- 添加JWT认证:
六、实战案例
案例1:Gitee仓库管理
-
集成Gitee MCP Server:
chmod +x mcp-gitee 赋予执行权限
-
Java客户端调用:
McpTransport transport = new StdioMcpTransport.Builder() .command(List.of("/path/to/mcp-gitee", "-token", "GITEE-TOKEN")) .build(); GiteeAiService service = AiServices.builder(GiteeAiService.class) .mcpClient(new DefaultMcpClient(transport)) .build(); String result = service.createRepository("test-repo"); // 创建仓库
案例2:天气服务调用
通过Claude Desktop直接调用Java开发的MCP服务:
用户输入:北京天气如何?
Claude响应:北京今日晴,28℃
七、总结
Java通过Spring AI和LangChain4j框架可高效实现MCP协议,支持本地开发与远程服务部署。推荐企业级项目使用Spring AI的SSE模式,开发者可快速集成工具链(如数据库、API)并实现自动化任务。更多高级功能(如权限控制、日志追踪)可参考Spring AI官方文档。