MCP服务器模板-Java(Spring AI)
使用Java实现模型上下文协议(MCP)服务器 春季AI.
关于
这是一个最小的MCP服务器框架,演示了如何使用Java和Spring AI构建MCP服务器。它提供了一个基本的工具实现,您可以将其用作自己的MCP服务器的起点。
特性
- 工具:返回模拟工作数据的示例工作搜索工具
- Spring Boot集成:基于Spring Boot构建,易于配置和部署
- Maven支持:使用Maven进行依赖管理和构建
- 最小设置:仅包括演示MCP功能所需的基本组件
⚠️ 重要SSE警告
SSE运输限制:此服务器当前使用服务器发送事件(SSE)传输,因为Spring AI尚不支持流式HTTP。SSE已知存在可靠性问题:
- 连接中断:SSE连接可能会在活动几分钟后中断
- 间歇性连接:您可能会遇到需要手动重新连接的周期性断开连接
- 弃用的协议:SSE已被正式弃用,转而支持流式HTTP
春季AI 1.1.0 (计划发布:2025年9月30日)将包括对Streamable HTTP的支持。一旦该版本可用,此模板将进行更新。
推荐:对于生产使用,考虑使用支持Streamable HTTP且没有这些可靠性问题的Python或TypeScript MCP模板。
跟随https://github.com/spring-projects/spring-ai/issues/3145Spring AI Streamable HTTP支持更新。
先决条件
- Java 17或更高版本
- Maven 3.6+(或使用附带的Maven包装器)
快速开始
使用Maven Wrapper(推荐)
./mvnw clean compile
./mvnw spring-boot:run使用Maven系统
mvn clean compile
mvn spring-boot:run配置
应用程序属性
您可以通过创建来配置应用程序 application-local.yml 在 src/main/resources/ 地方发展:
# Add your configuration here
logging:
level:
com.example.mcp: DEBUG使用示例
使用MCP检查器运行
- 启动服务器:
./mvnw spring-boot:run- 运行MCP检查器:
npx @modelcontextprotocol/inspector- 配置检查器:
- 集 Transport Type 到 Streamable HTTP - 集 URL 到 http://localhost:8080/mcp - 点击 Connect
- 从检查器界面测试可用工具
从VS代码连接
- 将此配置添加到游标代码中
mcp.json:
{
"mcpServers": {
"java-mcp": {
"url": "http://localhost:8082/mcp"
}
}
}- 首先构建JAR文件:
./mvnw clean package- 更新中的路径
settings.json指向您的JAR文件target/mcp-java-skeleton-1.0.0.jar
- 在VS Code中启动服务器,并使用GitHub Copilot Chat进行测试:
Show me a few Software Engineer jobs in Austin发展
项目结构
src/
├── main/java/com/example/mcp/java/skeleton/
│ ├── SkeletonMcpDaemon.java # Main application class
│ ├── tools/
│ │ ├── JobsToolsService.java # Tool implementations
│ │ └── dto/JobDto.java # Data transfer objects
│ └── configuration/
│ ├── JobsToolsConfiguration.java # Tool configuration
│ ├── PromptConfiguration.java # Prompt configuration
│ └── ResourceConfiguration.java # Resource configuration
└── test/ # Unit tests添加新工具
- 在中创建服务类
tools包裹 - 用注释方法
@Tool将它们作为MCP工具公开 - 在配置类中注册服务
例子:
@Service
public class MyToolsService {
@Tool(description = "My custom tool")
public String myTool(String input) {
return "Result: " + input;
}
}添加资源
- 创建一个新的配置类,类似于
JobsToolsConfiguration - 添加
SyncResourceSpecification豆子 - 实现资源处理程序
添加提示
- 为提示创建新的配置类
- 添加
SyncPromptSpecification豆子 - 实现提示处理程序
运行测试
./mvnw test生产大楼
创建JAR文件
./mvnw clean package可执行JAR将在 target/mcp-java-skeleton-1.0.0.jar.
运行JAR
java -jar target/mcp-java-skeleton-1.0.0.jar贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 提交拉取请求
