Java 从零开始:用 Spring Boot 创建你的第一个 MCP 服务
什么是 MCP?
MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 提出的一种开放协议,它让 AI 助手(如 Claude)能够安全地连接到外部工具、数据库、API 等资源。
你可以把 MCP 理解为 AI 的"插件系统"——通过 MCP,AI 不再局限于对话本身,而是可以调用你编写的工具来完成真实任务。本文将带你用 Java(Spring Boot)从零搭建一个可运行的 MCP 服务器。
准备工作
开始之前,请确保已安装以下环境:
- JDK 17+(推荐 JDK 21)
- Maven 3.8+
- IDE(推荐 IntelliJ IDEA)
第一步:创建 Spring Boot 项目
前往 https://start.spring.io 生成项目骨架,或直接使用下面的 pom.xml 配置:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-mcp-server</artifactId>
<version>1.0.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-spring-boot-starter</artifactId>
<version>0.8.1</version>
</dependency>
</dependencies>
</project>
第二步:编写 MCP 工具
MCP 服务的核心是定义"工具(Tool)"。下面创建一个工具类,包含两个简单功能:获取当前时间和整数求和。
2.1 创建工具类
package com.example.mcp;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Component
public class MyTools {
@Tool(description = "获取当前系统时间")
public String getCurrentTime() {
LocalDateTime now = LocalDateTime.now();
return now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
@Tool(description = "计算两个整数的和")
public int add(
@ToolParam(description = "第一个整数") int a,
@ToolParam(description = "第二个整数") int b
) {
return a + b;
}
}
2.2 注册工具到 MCP
package com.example.mcp;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class McpConfig {
@Bean
public ToolCallbackProvider myToolCallbackProvider(MyTools myTools) {
return MethodToolCallbackProvider.builder()
.toolObjects(myTools)
.build();
}
}
2.3 主启动类
package com.example.mcp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class McpServerApplication {
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
}
2.4 配置文件(application.properties)
spring.application.name=my-mcp-server
spring.ai.mcp.server.name=my-tools
spring.ai.mcp.server.version=1.0.0
spring.ai.mcp.server.type=SYNC
第三步:构建与启动
3.1 本地运行(开发调试)
mvn spring-boot:run
服务默认以标准输入输出(stdio)模式运行,适合直接与 Claude Desktop 等 MCP 客户端集成。
3.2 打包为 JAR
mvn clean package -DskipTests
# 生成文件:target/my-mcp-server-1.0.0.jar
第四步:接入 Claude Desktop
找到 Claude Desktop 的配置文件(macOS 在 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 在 %APPDATA%Claudeclaude_desktop_config.json),添加如下配置:
{
"mcpServers": {
"my-java-mcp": {
"command": "java",
"args": ["-jar", "/path/to/my-mcp-server-1.0.0.jar"]
}
}
}
保存后重启 Claude Desktop,即可在对话中直接使用你定义的工具!
验证效果
重启后在 Claude 对话框中输入:
帮我获取一下当前时间
Claude 会自动调用你的 getCurrentTime() 工具并返回结果。你也可以让它计算数字,它会调用 add() 方法。
总结
通过以上步骤,你已经完成了一个完整的 Java MCP 服务:
- 用 Spring Boot 搭建项目结构
- 用
@Tool注解快速定义工具方法 - 配置并注册 ToolCallbackProvider
- 打包后接入 Claude Desktop 使用
MCP 的强大之处在于它的扩展性——按照同样的模式,你可以接入数据库查询、文件操作、第三方 API 等各种功能,让 AI 真正成为你高效的开发助手。
如果你在实践中遇到问题,欢迎在评论区留言交流!
更多推荐

所有评论(0)