api2mcp4j

by TheEternaVerified

Spring Boot Starter: Auto-convert existing REST APIs (@RestController) to MCP Server with zero/low-code. Expose controllers as MCP Tools instantly.

110
Stars
16
Forks
Java
Language
8/23/2026
Added
View on GitHubDownload ZIP

⚠️ Third-Party Software Notice

This skill is third-party open-source software developed and hosted independently on GitHub. SkillTip is an informational directory and does not control or maintain the underlying repository. Any security checks displayed are automated and limited in scope. Review the source code before installing.

Read the Terms of Service

Installation

Add to your Claude Code skills directory:

# Add to your Claude Code skills
git clone https://github.com/TheEterna/api2mcp4j

Getting Started

Guides for using skills like api2mcp4j.

Security Report

Verified

Last scanned: —

{
  "status": "PASSED",
  "issues": []
}

README.md

api2mcp4j

Turn your existing Spring Boot REST controllers into MCP (Model Context Protocol) tools — no rewrites, no @Tool everywhere.

<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 · 中文 · Docs · Integration Matrix


Why api2mcp4j?

Most MCP integrations force you to:

  • Add @Tool / @McpTool to every method
  • Duplicate business logic into a parallel "MCP" code path
  • Maintain separate tool descriptions

api2mcp4j scans your existing @RestController beans and exposes their methods as MCP tools — zero changes to business code. Like MyBatis-Plus enhances MyBatis, api2mcp4j enhances 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

✨ Key Features

🎯 Non-intrusiveinterface scope auto-registers all controllers; no @Tool annotation needed
🔍 5-parser chainSwagger v3 / Swagger v2 / Javadoc / Spring MVC / Jackson / Spring AI — best description wins
🛠️ Full MCP coverageTools / Resources / Prompts / Completions / Elicitation / Sampling / Roots
🆕 Protocol 2026-07-28Wire schema + JSON-RPC routing + SSE long-poll + MRTR + OTel traceparent — 100%
🔌 Custom parsersImplement AbstractDesParser / AbstractParamParser, plug into the chain
🧪 TDD disciplineJUnit5, double commit [RED] then [GREEN], 600 tests all green
🚀 Quick startmvn spring-boot:run → MCP endpoint ready

🚀 Quick Start (≈ 3 minutes)

1. Clone & build

git clone https://github.com/TheEterna/api2mcp4j.git
cd api2mcp4j
mvn clean install -DskipTests

2. Add to your Spring Boot project

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

3. Configure

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. Start & test

mvn spring-boot:run

Your MCP server is live on http://localhost:8080/mcp/jsonrpc (and HTTP fallbacks on /mcp/discover, /mcp/tasks, /mcp/sse).


📡 MCP Protocol 2026-07-28 — 100% Compatible

api2mcp4j is the first Java MCP framework to ship full 2026-07-28 support, even though Java MCP SDK 2.0 only implements the 2025-11-25 wire. We bypassed SDK limitations with a custom JSON-RPC router, SSE controller, and wire schema — all without breaking SDK upgrade compatibility (controllers stay as fallbacks when SDK ≥ 3.0.0 lands).

8 RPC routes, all real (not HTTP simulations)

RPCJSON-RPC endpointSSE long-pollSource
server/discoverPOST /mcp/jsonrpcDiscoverEndpoint
tasks/createTaskStore
tasks/get / list / cancelTasksEndpoint
tasks/augmented-promptAugmentedPromptEndpoint
subscriptions/listen✅ (poll)GET /mcp/sse + Last-Event-ID + 15s heartbeatSseNotificationsController
input_required/respond (MRTR)✅ envelopeMrtrToolCallbackWrapper

Wire JSON fields — 100% reachable

2026-07-28 fieldStatusWhere
tools.listChanged / resources.listChanged / prompts.listChanged✅ SDK nativeWireSchemaExporter.syncAll()
tools.subscription / completions.listChanged (new in 2026-07-28)✅ Custom wireWireServerCapabilities
experimental.io.modelcontextprotocol/tasks (new)✅ Custom wireSame
_meta.resultType / ttlMs / cacheScope / cacheWrapperKey✅ Auto-injected via meta map@McpTool(...) + McpCallToolResultConverter
_meta.taskHandle / inputRequests / requestState✅ Auto-recognizedInputRequiredResult / TaskHandle return values
_meta.traceparent / tracestate / baggage (W3C SEP-414)✅ Auto-minted in JSON-RPCMetaUtils
MRTR state machine (cross-round merge + 8-round guard)MrtrDriver
outputSchema✅ SDK fieldMcpSchema.Tool.builder().outputSchema()
Capabilities health / diff / wire validationCapabilitiesHealth + SnapshotCompareTool + WireSchemaValidator

Full integration matrix →


✅ One-line verification

The demo app boots with H2 in-memory DB (zero external dependencies) and validates every 2026-07-28 feature against a real HTTP/SSE wire:

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

Evidence log →


🧪 Testing & Verification

LayerCountStatus
Unit tests (server2mcp-core)575✅ all green
Integration tests (server2mcp-starter-webmvc)22✅ all green
Demo tests (server2mcp-test)3✅ all green
End-to-end curl verification21/21
Total600+ tests, 21/21 e2e

Test philosophy: TDD double-commit[RED] test first, then [GREEN] implementation. See docs/specs/TEST_SPEC.md.


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ 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 │
            └────────────────────┘

Detailed architecture →


📦 Modules

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

🤔 When to use api2mcp4j?

✅ Use it for❌ Don't use it for
Exposing internal REST APIs to AI agents quicklyGreenfield MCP-first projects (use Spring AI MCP directly)
Wrapping legacy controllers as MCP toolsReal-time streaming / SSE-only UIs
Multi-agent systems sharing tool definitionsApps that don't already use Spring Boot
Prototyping AI features on production servicesTiny prototypes (overhead not worth it)

🆚 Comparison

Featureapi2mcp4jSpring AI MCP OfficialManual @Tool everywhere
Code changes requiredMinimal (config only)Medium–HighHigh
Auto-discover from @RestController
5-parser chain (Swagger + Javadoc + …)LimitedManual
Non-intrusive★★★★★★★★★☆
Protocol 2026-07-28 (RPC + wire)✅ 100%🟡 partial
MRTR multi-round✅ with decorator
SSE long-poll + Last-Event-ID✅ built-in🟡 via SDK
W3C traceparent (SEP-414)✅ auto-minted
Best for existing projectsNew appsTiny demos

📚 Documentation


🤝 Contributing

Issues, PRs, and ⭐ are very welcome.
This is a young project — your feedback shapes its future.

Before submitting a PR, please read:


📄 License

Apache License 2.0


🗓️ Roadmap

  • Protocol 2026-07-28 wire & JSON-RPC routing (2026-08-03)
  • MRTR multi-round state machine + 8-round guard
  • SSE long-poll with Last-Event-ID resume
  • W3C traceparent auto-mint
  • WebFlux starter endpoint wiring (parity with WebMVC)
  • Publish to Maven Central
  • OTel SDK real instrumentation (currently wire-format only)
  • Multi-tenant isolation (@McpTool(tenant = "..."))
  • SDK ≥ 3.0.0 native router migration (tracked by scripts/trigger-phase3.sh)

Built with care by Han · Apache 2.0 · 100% protocol 2026-07-28 compatible

Frequently Asked Questions

What is api2mcp4j?

api2mcp4j is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by TheEterna. Spring Boot Starter: Auto-convert existing REST APIs (@RestController) to MCP Server with zero/low-code. Expose controllers as MCP Tools instantly. It has 110 GitHub stars.

Is api2mcp4j safe to use?

Yes. api2mcp4j passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install api2mcp4j?

Clone the repository with "git clone https://github.com/TheEterna/api2mcp4j" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is api2mcp4j written in?

api2mcp4j is primarily written in Java. It is open-source under TheEterna on GitHub, so you can review or fork the full source.

Are there alternatives to api2mcp4j?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh api2mcp4j against similar tools.

Comments (0)

No comments yet. Be the first to share your thoughts!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI Agentsai-agentsanthropicclaude-code
View details
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI Agentsai-agentsbrainstorming
View details

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI Agentsai-agentsanthropicclaude-code
View details

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI Agentsclaude-codeai-tools
View details

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI Agents
View details

Developers Also Liked

Based on votes and bookmarks from developers who liked this skill

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI Agentsai-agentsanthropicclaude-code
View details
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI Agentsai-agentsbrainstorming
View details

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP Serversapisai-tools
View details

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI Agentsai-agentsanthropicclaude-code
View details

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI Agentsclaude-codeai-tools
View details