面向 Spring Boot 的非侵入式 MCP Server 生成器,自动将现有 REST Controller 转换为 MCP Tools,零/低代码接入 MCP 生态。
项目概述#
api2mcp4j 是一个基于 Spring Boot 的非侵入式 MCP Server 生成器,自动扫描项目中的 @RestController 和 @Service Bean,将其方法注册为 MCP 协议的 Tool、Resource 和 Prompt,无需修改业务代码即可将现有 REST API 暴露给 AI Agent 调用。
核心能力#
自动发现与注册#
- 自动扫描
@RestController/@ServiceBean,注册方法为 MCP Tools - 自动跳过
@Deprecated方法 - 提供
@ToolScan、@ResourceScan、@PromptScan注解进行细粒度扫描控制 - 支持
scope: interface(全量注册)与scope: custom(仅注解注册)两种模式
多解析器智能融合#
按配置的解析器优先级链逐级提取描述与参数 Schema,后者覆盖前者:
- Swagger/OpenAPI:支持 v2 与 v3,提取接口描述与参数信息
- Javadoc:通过 JavaParser 解析
.java源文件提取注释(需额外配置源码拷贝到 classpath) - Spring MVC 元数据:从
@RequestMapping等注解提取路径、方法等 - Jackson 序列化元数据:推导参数 JSON Schema
- Spring AI 原生描述:兼容 Spring AI 的
@Tool注解描述 - 自定义注解:支持自研
@McpTool注解提供描述
协议兼容性#
- 完整兼容 MCP Java SDK 最新特性:callbacks、resources、prompts
- 独立
McpTool注解体系,与 Spring AI@Tool解耦,可独立使用 - 兼容 Cursor、Continue 及任意标准 MCP Client
双栈支持#
server2mcp-starter-webmvc:面向 Spring MVCserver2mcp-starter-webflux:面向响应式 WebFlux
典型场景#
- 快速暴露内部管理系统 API 给 AI Agent — 现有 REST 接口直接变为 AI 可调用的工具
- 构建多 Agent 系统 — 将微服务自动转化为 MCP Tools,供多个 Agent 协作调用
- 遗留项目快速拥抱 MCP 生态 — 最低改造成本接入
- 原型化 AI 功能 — 避免在 REST 与 MCP 之间维护两套代码
不适用场景#
- 非 Spring Boot 的 Java 项目
- 需要脱离 HTTP 层的纯 Stdio MCP Server(当前通过 Web 端点暴露)
- 对 Tool 描述精度有极高要求、需要完全手写 Prompt 的场景
架构设计#
采用 Maven 多模块结构:
| 模块 | 职责 |
|---|---|
server2mcp-common | 公共工具类与基础设施 |
server2mcp-core | 核心逻辑:Bean 扫描、多解析器调度、MCP Tool/Resource/Prompt 注册 |
server2mcp-autoconfigure | Spring Boot 自动配置入口 |
server2mcp-starter-webmvc | Spring MVC Starter |
server2mcp-starter-webflux | Spring WebFlux Starter |
server2mcp-test | 测试模块 |
核心流程:自动配置触发 → Bean 扫描 → 多解析器融合 → MCP Tool 注册,暴露在默认 /mcp 端点。
设计理念:类比 MyBatis-Plus 对 MyBatis 的增强模式,通过自动配置与注解扫描,在不侵入业务代码的前提下桥接 REST 到 MCP。
关键配置#
plugin:
mcp:
enabled: true
parser:
params: SWAGGER3, SWAGGER2, SpringMVC, JACKSON, TOOL
des: SWAGGER3, SWAGGER2, JAVADOC, TOOL, JACKSON
scope: interface # 'interface' = 全量注册; 'custom' = 仅注解注册
| 配置路径 | 说明 |
|---|---|
plugin.mcp.enabled | 总开关(true/false) |
plugin.mcp.scope | 扫描范围模式 |
plugin.mcp.parser.params | 参数解析器优先级链 |
plugin.mcp.parser.des | 描述解析器优先级链 |
spring.ai.mcp.* | MCP 端点路径等底层配置 |
安装与上手#
⚠️ 项目尚未发布至 Maven Central,需从源码构建。
git clone https://github.com/TheEterna/api2mcp4j.git
cd api2mcp4j/server2mcp-starter-webmvc
mvn clean install
<dependency>
<groupId>com.ai.plug</groupId>
<artifactId>server2mcp-starter-webmvc</artifactId>
<version>1.1.4-SNAPSHOT</version>
</dependency>
WebFlux 用户替换为 server2mcp-starter-webflux。
待确认事项#
- Maven Central 发布时间:README 路线图提及计划发布,但截至调研时
1.1.4-SNAPSHOT尚未上线 - MCP SDK 版本稳定性:依赖
io.modelcontextprotocol.sdk 0.14.0-SNAPSHOT(非正式发布版),生产使用需注意 - Spring AI 版本兼容性:依赖
Spring AI 1.1.0-SNAPSHOT,与正式版兼容性待验证 - 文档站为 SPA(JS 渲染),内容无法完全提取验证
- 未见公开的生产部署案例或用户反馈
- 当前仅通过 Web 端点(SSE)暴露 MCP,Stdio 传输支持未明确