mcpField
S
Server2MCP Spring Boot Starter

Server2MCP Spring Boot Starter

本地服务
theeterna.github.io开发工具113今天更新

关于 Server2MCP Spring Boot Starter

api2mcp4j(Server2MCP Spring Boot Starter)可将现有 Spring Boot 的 @RestController 自动暴露为 MCP 工具,无需为业务代码添加 @Tool 注解。它面向已有 Spring Boot 项目的 Java 团队,并基于 Spring AI MCP 构建。

主要功能

  1. 01自动扫描 @RestController 并注册为工具
  2. 02多种解析器链生成工具描述
  3. 03支持 MCP 工具、资源与提示词
  4. 04支持 2026-07-28 协议相关路由
  5. 05可自定义描述与参数解析器

适用场景

  1. 01将遗留 REST 控制器封装为 MCP 工具
  2. 02为多个 Agent 共享已有接口定义
  3. 03在已有服务上快速试验 AI 功能

MCP 相关

该项目是基于 Spring Boot 的 MCP 服务端框架,把 REST 控制器的方法以 MCP 工具、资源和提示词的形式暴露给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

api2mcp4j

将现有的 Spring Boot REST 控制器转为 MCP(Model Context Protocol)工具——无需重写,也不必到处添加 @Tool。

<dependency>
  <groupId>com.ai.plug</groupId>
  <artifactId>server2mcp-starter-webmvc</artifactId>
  <version>1.1.4-SNAPSHOT</version>
</dependency>

Java Spring Boot Spring AI MCP SDK MCP Protocol Tests End-to-End License

English · 中文 · 文档 · 集成矩阵


为什么选择 api2mcp4j?

大多数 MCP 集成都会要求你:

  • 为每个方法添加 @Tool / @McpTool
  • 将业务逻辑复制到一套独立的“MCP”代码路径中
  • 单独维护工具描述

api2mcp4j 会扫描现有的 @RestController Bean,并将其中的方法公开为 MCP 工具——业务代码无需任何改动。正如 MyBatis-Plus 增强 MyBatis,api2mcp4j 增强 Spring AI MCP。

// Your existing controller — unchanged
@RestController
public class OrderController {
    @GetMapping("/orders/{id}")
    public Order getOrder(@PathVariable Long id) { ... }
}

// Becomes an MCP tool: orders_get_order
// With auto-generated description from Swagger / Javadoc / Spring MVC / Jackson / Spring AI

✨ 主要功能

🎯 非侵入式interface 范围会自动注册所有控制器;无需 @Tool 注解
🔍 5 级解析链Swagger v3 / Swagger v2 / Javadoc / Spring MVC / Jackson / Spring AI——采用最佳描述
🛠️ 完整覆盖 MCP工具 / 资源 / 提示词 / 补全 / 引导 / 采样 / 根目录
🆕 Protocol 2026-07-28Wire schema + JSON-RPC 路由 + SSE 长轮询 + MRTR + OTel traceparent——100%
🔌 自定义解析器实现 AbstractDesParser / AbstractParamParser,接入解析链
🧪 TDD 规范JUnit5,双提交 [RED] 再 [GREEN],600 项测试全部通过
🚀 快速启动mvn spring-boot:run → MCP 端点就绪

🚀 快速开始(约 3 分钟)

1. 克隆并构建
git clone https://github.com/TheEterna/api2mcp4j.git
cd api2mcp4j
mvn clean install -DskipTests
2. 添加到你的 Spring Boot 项目
<dependency>
  <groupId>com.ai.plug</groupId>
  <artifactId>server2mcp-starter-webmvc</artifactId>
  <version>1.1.4-SNAPSHOT</version>
</dependency>
3. 配置
plugin:
  mcp:
    enabled: true
    scope: interface   # 'interface' = auto-register all controllers; 'custom' = @ToolScan only
    parser:
      des:    SWAGGER3, JAVADOC, TOOL, JACKSON, SWAGGER2
      param:  MCPTOOL, JAVADOC, TOOL, SpringMVC, JACKSON, SWAGGER2, SWAGGER3
4. 启动并测试
mvn spring-boot:run

你的 MCP 服务已在 http://localhost:8080/mcp/jsonrpc 上运行(HTTP 回退端点还包括 /mcp/discover、/mcp/tasks、/mcp/sse)。


📡 MCP Protocol 2026-07-28——100% 兼容

api2mcp4j 是首个完整支持 2026-07-28 的 Java MCP 框架,尽管 Java MCP SDK 2.0 仅实现了 2025-11-25 wire。我们通过自定义 JSON-RPC 路由器、SSE 控制器和 wire schema 绕过了 SDK 的限制,同时不会破坏 SDK 升级兼容性(SDK ≥ 3.0.0 发布后,这些控制器仍会作为回退方案)。

8 个 RPC 路由,均为真实实现(非 HTTP 模拟)
RPCJSON-RPC 端点SSE 长轮询来源
server/discover✅ POST /mcp/jsonrpc—DiscoverEndpoint
tasks/create✅—TaskStore
tasks/get / list / cancel✅—TasksEndpoint
tasks/augmented-prompt✅—AugmentedPromptEndpoint
subscriptions/listen✅(轮询)✅ GET /mcp/sse + Last-Event-ID + 15s 心跳SseNotificationsController
input_required/respond(MRTR)✅ envelope—MrtrToolCallbackWrapper
Wire JSON 字段——100% 可达
2026-07-28 字段状态位置
tools.listChanged / resources.listChanged / prompts.listChanged✅ SDK 原生支持WireSchemaExporter.syncAll()
tools.subscription / completions.listChanged (2026-07-28 新增)✅ 自定义 wireWireServerCapabilities
experimental.io.modelcontextprotocol/tasks (新增)✅ 自定义 wire同上
_meta.resultType / ttlMs / cacheScope / cacheWrapperKey✅ 通过 meta map 自动注入@McpTool(...) + McpCallToolResultConverter
_meta.taskHandle / inputRequests / requestState✅ 自动识别InputRequiredResult / TaskHandle 返回值
_meta.traceparent / tracestate / baggage(W3C SEP-414)✅ 在 JSON-RPC 中自动生成MetaUtils
MRTR 状态机(跨轮合并 + 8 轮保护)✅MrtrDriver
outputSchema✅ SDK 字段McpSchema.Tool.builder().outputSchema()
能力健康检查 / 差异比较 / wire 验证✅CapabilitiesHealth + SnapshotCompareTool + WireSchemaValidator

完整集成矩阵 →


✅ 一行验证

演示应用使用 H2 内存数据库启动(无外部依赖),并通过真实的 HTTP/SSE wire 验证所有 2026-07-28 功能:

cd server2mcp-test && mvn spring-boot:run    # starts on :8888 (H2 in-memory)

# In another shell:
bash scripts/verify-protocol-2026-07-28.sh http://localhost:8888
== 0. liveness ==                       ✓ actuator reachable
== 1. server/discover (JSON-RPC) ==    ✓×7 (jsonrpc=2.0, preferredVersion=2026-07-28,
                                            tools.listChanged, tools.subscription,
                                            completions.listChanged, experimental.tasks,
                                            _meta.traceparent)
== 2. tasks/* (JSON-RPC) ==            ✓×5 (create, get, list, cancel full lifecycle)
== 3. tasks/augmented-prompt ==         ✓×1
== 4. subscriptions/listen ==           ✓×3 (HTTP poll + text/event-stream + connected)
== 5. input_required/respond ==         ✓×2 (accepted + state echo)
== 6. HTTP legacy endpoints ==          ✓×2 (/mcp/discover + /mcp/notifications)
== summary ==                           passed: 21 / failed: 0
ALL ASSERTIONS PASSED — protocol 2026-07-28 wire verified

证据日志 →


🧪 测试与验证

层级数量状态
单元测试(server2mcp-core)575✅ 全部通过
集成测试(server2mcp-starter-webmvc)22✅ 全部通过
演示测试(server2mcp-test)3✅ 全部通过
端到端 curl 验证21/21✅
总计600+ 项测试,21/21 项端到端测试✅

测试理念:TDD 双重提交——先编写 [RED] 测试,再实现 [GREEN]。参见 docs/specs/TEST_SPEC.md。


🏗️ 架构

┌─────────────────────────────────────────────────────────────┐
│ Spring Boot Application                                     │
│                                                              │
│   ┌─── Your existing code (unchanged) ───┐                  │
│   │ @RestController                       │                  │
│   │ @Service                              │                  │
│   │ @Component                            │                  │
│   └────────────────┬─────────────────────┘                  │
│                    │                                        │
│   ┌────────────────▼─────────────────────┐                  │
│   │ api2mcp4j framework                   │                  │
│   │                                       │                  │
│   │  Scanner ──→ Parser chain ──→ Provider                 │
│   │    │            │              │                       │
│   │  Spring MVC   5 parsers    SyncMcpToolMethodCallback   │
│   │  discovery    (Swagger2/3,    (template method)        │
│   │                Javadoc,                              │
│   │                Jackson,                              │
│   │                Spring AI)                             │
│   │                                       │                  │
│   │  ── 2026-07-28 layer (new) ──                          │
│   │  • JsonRpcRouter + JsonRpcRoutes                       │
│   │  • WireServerCapabilities + JsonExporter               │
│   │  • SseNotificationsController                          │
│   │  • MrtrDriver + MrtrSessionStore                       │
│   │  • MrtrToolCallbackWrapper                             │
│   │  • MetaUtils (W3C traceparent mint)                    │
│   └────────────────┬─────────────────────┘                  │
│                    │                                        │
│   ┌────────────────▼─────────────────────┐                  │
│   │ Spring AI MCP SDK 2.0                 │                  │
│   │   (McpSyncServer / McpAsyncServer)    │                  │
│   └────────────────┬─────────────────────┘                  │
└────────────────────┼────────────────────────────────────────┘
                     │  wire: JSON-RPC 2.0 + SSE
                     ▼
            ┌────────────────────┐
            │ MCP Clients        │
            │ • Claude Desktop   │
            │ • Cursor / Cline   │
            │ • Your BFF / Agent │
            └────────────────────┘

详细架构 →


📦 模块

api2mcp4j/
├── server2mcp-common                  # Constants & utilities
├── server2mcp-core                    # Core engine: annotations, scanners, callbacks, providers
│   ├── com.ai.plug.core.annotation.*  # @McpTool, @McpResource, @McpPrompt, @McpArg
│   ├── com.ai.plug.core.parser.*      # 5-parser chain (des + param)
│   ├── com.ai.plug.core.callback.*     # Sync + Async template methods
│   ├── com.ai.plug.core.spec.*         # 2026-07-28 wire layer
│   └── com.ai.plug.core.provider.*     # Spring AI bridge
├── server2mcp-autoconfigure           # Spring Boot auto-configuration
├── server2mcp-spring-boot-starters/
│   ├── server2mcp-starter-webmvc      # ✅ Full endpoint wiring (JSON-RPC + SSE + HTTP)
│   └── server2mcp-starter-webflux     # ⚠️ Framework core only (no endpoint wiring yet)
└── server2mcp-test                    # ✅ Demo app + 21/21 e2e verification

🤔 何时使用 api2mcp4j?

✅ 适用场景❌ 不适用场景
快速将内部 REST API 暴露给 AI Agent从零开始、以 MCP 为先的项目(直接使用 Spring AI MCP)
将旧版控制器封装为 MCP 工具实时流式传输 / 仅支持 SSE 的 UI
多 Agent 系统共享工具定义尚未使用 Spring Boot 的应用
在生产服务中试验 AI 功能小型原型(开销不值得)

🆚 对比

功能api2mcp4jSpring AI MCP Official到处手动使用 @Tool
所需代码更改极少(仅配置)中到多多
从 @RestController 自动发现✅❌❌
5 解析器链(Swagger + Javadoc + …)✅有限手动
非侵入式★★★★★★★★★☆
协议 2026-07-28(RPC + wire)✅ 100%🟡 部分支持⚪
MRTR 多轮✅ 通过装饰器支持⚪⚪
SSE 长轮询 + Last-Event-ID✅ 内置🟡 通过 SDK 支持❌
W3C traceparent(SEP-414)✅ 自动生成❌❌
最适合现有项目✅新应用小型演示

📚 文档


🤝 参与贡献

欢迎提交 Issue、PR 和 ⭐。
这是一个新兴项目,你的反馈将塑造它的未来。

提交 PR 前,请阅读:


📄 许可证

Apache License 2.0


🗓️ 路线图

  • Protocol 2026-07-28 线路与 JSON-RPC 路由(2026-08-03)
  • MRTR 多轮状态机 + 8 轮保护机制
  • 支持通过 Last-Event-ID 恢复的 SSE 长轮询
  • 自动生成 W3C traceparent
  • WebFlux starter 端点接线(与 WebMVC 保持一致)
  • 发布到 Maven Central
  • OTel SDK 实际埋点(目前仅支持线路格式)
  • 多租户隔离(@McpTool(tenant = "..."))
  • 迁移到 SDK ≥ 3.0.0 原生路由器(由 scripts/trigger-phase3.sh 跟踪)

由 Han 用心打造 · Apache 2.0 · 100% 兼容 protocol 2026-07-28

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。