Swagger MCP Bridge
Overview
Description from the maker (original English)
Spring Boot example that exposes SpringDoc OpenAPI operations as safe MCP tools.
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs on your computer
- Transport: Streamable HTTP
- Category: Developer tools
Install
Pick the AI app you use, then copy the settings.
Passed 2/2 checks · Runs on your computer
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
Install Docker on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
Install Docker
One time only; it works for every server that needs Docker
Open the Claude desktop app’s settings file
SettingsDeveloperEdit Config
Paste these settings and save the file
{ "mcpServers": { "swagger-bridge": { "command": "docker", "args": [ "run", "-i", "--rm", "ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0" ] } } }Quit Claude and open it again
Try it
Use Swagger MCP Bridge and tell me what you can do for me, then show me one thing✓ If Claude says it is using Swagger MCP Bridge or shows a Swagger MCP Bridge tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect Swagger MCP Bridge yet
Swagger MCP Bridge runs on your computer, but ChatGPT can only connect servers that run on the web
What you can do instead
A · Use an app that can connect Swagger MCP Bridge
- Install Docker on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
- Install Docker on your computer first (one time)
- Install Docker on your computer first (one time)
- Install Docker on your computer first (one time)
B · Others in Developer tools that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
- Sentry✓ ChatGPT
- Front-End Checklist✓ ChatGPT
- Compiler Explorer✓ ChatGPT
Works with Claude Code, with some setup first
Install Docker on your computer first (one time)
Install Docker
One time only; it works for every server that needs Docker
Open Terminal
Mac: press Command+Space and type Terminal · Windows: open PowerShell
Paste this command and press Enter
claude mcp add swagger-bridge -- docker run -i --rm ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0Type /mcp in Claude Code
You should see Swagger MCP Bridge listed as connected
Try it
Use Swagger MCP Bridge and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using Swagger MCP Bridge or shows a Swagger MCP Bridge tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
Install Docker on your computer first (one time)
Install Docker
One time only; it works for every server that needs Docker
Open the AI chat in Cursor in Agent mode
Try it
Use Swagger MCP Bridge and tell me what you can do for me, then show me one thing✓ If Cursor says it is using Swagger MCP Bridge or shows a Swagger MCP Bridge tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
Install Docker on your computer first (one time)
Install Docker
One time only; it works for every server that needs Docker
Open the AI chat in VS Code in Agent mode
Try it
Use Swagger MCP Bridge and tell me what you can do for me, then show me one thing✓ If VS Code says it is using Swagger MCP Bridge or shows a Swagger MCP Bridge tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
JSON settings are under “For developers” below
For developers: Terminal commands and JSON settings
Installed on your computer
Claude Code
claude mcp add swagger-bridge -- docker run -i --rm ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"swagger-bridge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"swagger-bridge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"swagger-bridge": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
At a glance
Which apps can use it
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Related guides
What it can do
Runs on your computer; the tool list appears in your AI app after you install it.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 11, 2026
- ✓ Pass
Maker matches the repo
The registry name was verified with the GitHub account Neo1228, which owns the repo
- ✓ Pass
Still maintained
Code last changed 3 months ago
- … Not checked yet
Has a licence
We have not read this repo from GitHub yet
- – Not applicable
Endpoint responds
This one runs on your computer; there is no internet endpoint
- – Not applicable
Sign-in with OAuth
Runs on your computer and uses local settings instead
- … Not checked yet
No hidden instructions in tool descriptions
Runs on your computer; we can only read tool lists from internet endpoints
Discussion
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
User reviews
No reviews yet
Compared with others in Developer toolsi
- More stars than 83% of the other 5755 servers in this category
- Published to the registry more recently than 10% of the other 5755 servers in this category
- Basic checks equal to or better than 100% of the other 5755 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is Swagger MCP Bridge safe?
It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
The registry does not list a required key, though some servers ask you to sign in on first use.
Does it run on my computer or in the cloud?
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
Is it still maintained?
The GitHub repo last changed 3 months ago, and the latest version (0.1.0) reached the registry 6 months ago.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
What can I use instead?
In the same category: REA, Netdata, Front-End Checklist
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Swagger MCP Bridge
Turn any SpringDoc-powered Spring Boot API into a production-ready MCP gateway.
Swagger MCP Bridge discovers your OpenAPI operations, publishes them as safe MCP tools, and adds a smart gateway layer for API discovery, validation, response shaping, and multi-step workflow orchestration.
Naming and Coordinates
This repository intentionally separates the public surfaces so each one reads naturally in its own ecosystem:
| Surface | Name |
|---|---|
| Project / docs | Swagger MCP Bridge |
| Maven dependency | io.github.neo1228:openapi-mcp-spring-boot-starter |
| Official MCP Registry server | io.github.Neo1228/swagger-mcp-bridge |
| Runnable example image | ghcr.io/neo1228/swagger-mcp-bridge-example: |
| Spring configuration prefix | swagger.mcp.* |
The project name keeps the established bridge branding, while the Maven artifact uses the neutral OpenAPI/Spring Boot starter coordinate expected by Java consumers. The registry server and GHCR image identify the packaged runnable example used by MCP directories.
Why Swagger MCP Bridge
Most MCP API bridges stop at a thin tool wrapper. Swagger MCP Bridge is designed as a runtime gateway: it exposes your existing Spring controllers to LLM clients while preserving contracts, guardrails, and operational visibility.
What You Get
- Zero-boilerplate discovery of SpringDoc OpenAPI operations from your running Spring app
- Automatic MCP tool registration for discovered API operations
- Smart-context gateway tools:
meta_get_api_capabilities,meta_validate_api_call,meta_discover_api_tools,meta_describe_api_tool,meta_list_api_groups,meta_plan_api_workflow,meta_invoke_api_workflow,meta_invoke_api_by_intent - API catalog and workflow layer for capability inspection, preflight validation, grouped exploration, dry-run planning, and sequential execution
- Rich MCP input schemas generated from OpenAPI constraints: required fields, enums, numeric/string/object limits, examples, and deprecation hints
- Response shaping with JSONPath projection and summarization controls
- Execution guardrails: required argument validation, unresolved path-template protection, and safe
_headersfiltering - Structured MCP error responses with stable codes such as
INVALID_ARGUMENT,SECURITY_DENIED,WORKFLOW_ERROR, andHTTP_DISPATCH_FAILED - Java 17 bytecode with CI coverage on Java 17, 21, and 25
- Optional virtual-thread HTTP dispatch on Java 21+ runtimes, with automatic platform-thread fallback on Java 17
- Production guardrails for dangerous operations:
_confirm, blocked paths, role checks, audit logs, and structured client errors
Architecture
graph TD
User([User / LLM Client]) <--> MCP[MCP Client / Claude Desktop] MCP <--> Bridge[Swagger MCP Bridge /starter/] Bridge --> Catalog[Operation Catalog /groups + contracts/] Bridge --> Workflow[Workflow Orchestrator /plan + dry-run + execute/] Bridge <--> Docs[SpringDoc OpenAPI /v3/api-docs] Bridge <--> API[Your Spring Controller /hello]
Quick Start
1. Create a Spring Boot app
Use:
- Java 17+
- Spring Boot 3.5.x
- Spring Web
2. Add dependencies
Gradle (build.gradle.kts):
plugins {
id("org.springframework.boot") version "3.5.14" id("io.spring.dependency-management") version "1.1.7" java }
java { sourceCompatibility = JavaVersion.VERSION_17 }
repositories { mavenCentral() }
dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springdoc:springdoc-openapi-starter-webmvc-api:2.8.17") implementation("io.github.neo1228:openapi-mcp-spring-boot-starter: ") }
The Maven artifact intentionally uses the neutral OpenAPI name rather than Swagger branding:
io.github.neo1228:openapi-mcp-spring-boot-starter
Maven (pom.xml):
<properties>
0.1.0-SNAPSHOT
org.springframework.boot spring-boot-starter-web
org.springdoc springdoc-openapi-starter-webmvc-api 2.8.17
io.github.neo1228 openapi-mcp-spring-boot-starter ${openapi-mcp.version}
Use a release version (for example 0.1.0) when consuming from a remote artifact repository.
3. Add one controller
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController public class HelloController {
@Operation(operationId = "getHello", summary = "Get greeting message") @GetMapping("/hello") public Map hello(@RequestParam(defaultValue = "world") String name) { return Map.of("message", "Hello " + name); } }
4. Add configuration (application.yml)
spring:
ai: mcp: server: protocol: STREAMABLE_HTTP streamable-http: mcp-endpoint: /mcp
swagger: mcp: enabled: true api-docs-path: /v3/api-docs tool-name-prefix: api_
5. Run and verify
- Start app:
./gradlew bootRunor./mvnw spring-boot:run - Verify OpenAPI:
http://localhost:8080/v3/api-docs - Verify MCP endpoint:
http://localhost:8080/mcp - Connect from an MCP client
Generated tool names follow (example: api_gethello).
MCP Client Workflow
This starter exposes direct API tools and a meta-tool layer so general MCP clients can work with large APIs without guessing tool names upfront:
meta_get_api_capabilitiesreturns API catalog stats, available gateway tools, orchestration features, safety policy, and response controls.meta_list_api_groupssummarizes the exposed API catalog by OpenAPI tag/group.meta_discover_api_toolsfinds relevant operations for a natural-language request.meta_describe_api_toolreturns the selected tool's method/path, parameters, required arguments, request body schema, risk flags, and full MCP input schema.meta_validate_api_callvalidates one generated API tool call without dispatching HTTP, including required arguments, risky-operation confirmation, and dispatch preview.meta_plan_api_workflowturns a workflow goal into a deterministic candidate step plan with contracts and risk flags.meta_invoke_api_workflowdry-runs or executes multiple generated API tools sequentially.meta_invoke_api_by_intentcan select and invoke the best matching operation when the client already has enough arguments.
The configured tool-name-prefix is still applied, so the default generated names are api_meta_get_api_capabilities, api_meta_validate_api_call, api_meta_list_api_groups, api_meta_discover_api_tools, api_meta_describe_api_tool, api_meta_plan_api_workflow, api_meta_invoke_api_workflow, and api_meta_invoke_api_by_intent.
When a tool call is rejected, the text content remains human-readable and structuredContent.error gives clients a stable machine contract:
{
"error": { "code": "INVALID_ARGUMENT", "message": "Missing required argument(s): path parameter: orderId", "status": 400, "retryable": false, "details": { "toolName": "api_getorder" } } }
Recommended client loop:
- Call
api_meta_get_api_capabilitiesonce to learn the gateway features and safety policy. - Use
api_meta_discover_api_toolsorapi_meta_list_api_groupsto find candidate operations. - Use
api_meta_describe_api_toolfor exact argument schema. - Use
api_meta_validate_api_callbefore risky or generated calls. - For multi-step work, call
api_meta_plan_api_workflow, thenapi_meta_invoke_api_workflowwithdryRun=true, then execute withdryRun=falseonly after validation is clean.
Workflow execution is intentionally safe by default:
meta_validate_api_callandmeta_invoke_api_workflowdry-runs validate tool names, arguments, required fields, dispatch paths, and risk flags before dispatching HTTP.- A workflow step has
{ "id": "...", "toolName": "...", "arguments": { ... } }. - Later steps can read previous structured results with JSONPath interpolation:
${create:$.order.id}. - If the whole argument value is a template, the resolved raw value is passed through. If a template is embedded in a longer string, the value is stringified.
- Recursive meta-tool orchestration is blocked; workflow steps can invoke generated API operation tools only.
- Risky HTTP methods still require the configured
_confirmtoken even inside a workflow.
Example validation payload:
{
"toolName": "api_getorder", "arguments": { "orderId": "order-1" } }
Example workflow payload:
{
"dryRun": false, "steps": [ { "id": "create", "toolName": "api_createorder", "arguments": { "body": { "id": "order-1", "item": "shoe" }, "_confirm": "CONFIRM" } }, { "id": "read", "toolName": "api_getorder", "arguments": { "orderId": "${create:$.order.id}" } } ] }
For larger APIs, set swagger.mcp.smart-context.gateway-only=true to expose only this gateway/meta layer instead of registering every operation as a top-level MCP tool.
Local Development Install
If the artifact is not published to a remote registry yet:
- Build and publish to local Maven cache:
./gradlew publishToMavenLocal
- In your consumer app:
- add
mavenLocal()repository - use version
0.1.0-SNAPSHOT(or your chosen local version)
Key Configuration
swagger.mcp.enabled: enable/disable bridge (defaulttrue)swagger.mcp.api-docs-path: OpenAPI docs path (default/v3/api-docs)swagger.mcp.tool-name-prefix: tool name prefix (defaultapi_)swagger.mcp.smart-context.gateway-only: expose only meta toolsswagger.mcp.execution.virtual-threads-enabled: run outbound API dispatch through virtual threads when the current runtime supports them (defaulttrue; safely falls back on Java 17)swagger.mcp.execution.allowed-argument-headers: optional allowlist for dynamic_headerspassed by MCP clientsswagger.mcp.execution.blocked-argument-headers: denylist for dynamic_headers; defaults block hop-by-hop/transport-sensitive headers likeHost,Content-Length,Connection, andTransfer-Encodingswagger.mcp.security.require-confirmation-for-risky-operations: require_confirmtoken for risky methods
For risky HTTP methods (POST, PUT, PATCH, DELETE), default policy requires _confirm=CONFIRM. The adapter also validates missing required path/query/header/body arguments before dispatching HTTP, so MCP clients get a clear tool error instead of a malformed API call.
Compatibility Matrix
| Starter | Java | Spring Boot | springdoc-openapi | Spring AI BOM |
|---|
| 0.1.