基于 Spring Boot + Spring AI Alibaba 的 MCP (Model Context Protocol) Server 实现。
| 组件 | 版本 |
|---|---|
| Java | 21 |
| Spring Boot | 3.5.8 |
| Spring AI | 1.1.2 |
| Spring AI Alibaba | 1.1.2.2 |
| Gradle | 8.14.5 |
- MCP Server: 支持 Streamable-HTTP 传输协议
- MCP Tool:
hello工具,返回 "Hello World" - MCP Resource: Gradle 项目脚手架模板资源
template://gradle/wrapper/gradle-wrapper.properties/{version}— Wrapper 配置(未指定版本时默认 8.14.5)template://gradle/settings.gradle/{projectName}— Settings 配置
- JDK 21+
- Gradle 8.14.5 (已内置 Wrapper)
./gradlew build./gradlew bootRun应用启动后,MCP Server 将在 http://localhost:4080 上运行。
- Streamable-HTTP:
POST /stream
scaffold/
├── build.gradle # Gradle 构建配置
├── settings.gradle # Gradle 设置
├── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
├── src/
│ ├── main/
│ │ ├── java/com/uid13/scaffold/
│ │ │ ├── ScaffoldApplication.java # 主入口
│ │ │ ├── config/
│ │ │ │ └── McpToolConfig.java # MCP 工具注册
│ │ │ ├── resource/
│ │ │ │ └── GradleTemplateResourceProvider.java # Gradle 模板资源
│ │ │ └── tool/
│ │ │ └── HelloTool.java # Hello 工具
│ │ └── resources/
│ │ ├── application.yml # 应用配置
│ │ └── templates/
│ │ └── gradle/
│ │ ├── gradle-wrapper.properties.template
│ │ └── settings.gradle.template
│ ── test/
│ └── java/com/uid13/scaffold/
│ └── ScaffoldApplicationTests.java # 测试
├── README.md
└── AGENTS.md
- 在
com.uid13.scaffold.tool包下创建新的工具类 - 使用
@Component和@Tool注解定义工具方法 - 在
McpToolConfig中注册工具
示例:
@Component
public class MyTool {
@Tool(description = "工具描述")
public String myMethod(String param) {
return "结果";
}
}- 在
com.uid13.scaffold.resource包下创建新的资源类 - 使用
@McpResource注解定义资源 URI - 模板文件放在
src/main/resources/templates/下
示例:
@Component
public class MyResourceProvider {
@McpResource(
uri = "template://my-category/my-resource/{param}",
name = "My Resource",
description = "资源描述"
)
public String myResource(String param) {
// 实现逻辑
return "内容";
}
}主要配置项 (application.yml):
spring:
ai:
mcp:
server:
name: scaffold-mcp-server # MCP Server 名称
version: 1.0.0 # 版本号
protocol: STREAMABLE # 传输协议
streamable-http:
mcp-endpoint: /stream # MCP 端点路径
server:
port: 4080 # 服务端口Apache License 2.0