GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Spring Boot example that exposes SpringDoc OpenAPI operations as safe MCP tools.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"swagger-bridge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add swagger-bridge -- docker run -i --rm ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"swagger-bridge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"swagger-bridge": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/neo1228/swagger-mcp-bridge-example:0.1.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Neo1228 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.0) เข้า registry 6 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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.
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.
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.
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_headers filteringINVALID_ARGUMENT, SECURITY_DENIED, WORKFLOW_ERROR, and HTTP_DISPATCH_FAILED_confirm, blocked paths, role checks, audit logs, and structured client errorsgraph 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]
Use:
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.
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); } }
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_
./gradlew bootRun or ./mvnw spring-boot:runhttp://localhost:8080/v3/api-docshttp://localhost:8080/mcpGenerated tool names follow (example: api_gethello).
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_capabilities returns API catalog stats, available gateway tools, orchestration features, safety policy, and response controls.meta_list_api_groups summarizes the exposed API catalog by OpenAPI tag/group.meta_discover_api_tools finds relevant operations for a natural-language request.meta_describe_api_tool returns the selected tool's method/path, parameters, required arguments, request body schema, risk flags, and full MCP input schema.meta_validate_api_call validates one generated API tool call without dispatching HTTP, including required arguments, risky-operation confirmation, and dispatch preview.meta_plan_api_workflow turns a workflow goal into a deterministic candidate step plan with contracts and risk flags.meta_invoke_api_workflow dry-runs or executes multiple generated API tools sequentially.meta_invoke_api_by_intent can 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:
api_meta_get_api_capabilities once to learn the gateway features and safety policy.api_meta_discover_api_tools or api_meta_list_api_groups to find candidate operations.api_meta_describe_api_tool for exact argument schema.api_meta_validate_api_call before risky or generated calls.api_meta_plan_api_workflow, then api_meta_invoke_api_workflow with dryRun=true, then execute with dryRun=false only after validation is clean.Workflow execution is intentionally safe by default:
meta_validate_api_call and meta_invoke_api_workflow dry-runs validate tool names, arguments, required fields, dispatch paths, and risk flags before dispatching HTTP.{ "id": "...", "toolName": "...", "arguments": { ... } }.${create:$.order.id}._confirm token 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.
If the artifact is not published to a remote registry yet:
./gradlew publishToMavenLocalmavenLocal() repository0.1.0-SNAPSHOT (or your chosen local version)swagger.mcp.enabled: enable/disable bridge (default true)swagger.mcp.api-docs-path: OpenAPI docs path (default /v3/api-docs)swagger.mcp.tool-name-prefix: tool name prefix (default api_)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 (default true; safely falls back on Java 17)swagger.mcp.execution.allowed-argument-headers: optional allowlist for dynamic _headers passed by MCP clientsswagger.mcp.execution.blocked-argument-headers: denylist for dynamic _headers; defaults block hop-by-hop/transport-sensitive headers like Host, Content-Length, Connection, and Transfer-Encodingswagger.mcp.security.require-confirmation-for-risky-operations: require _confirm token for risky methodsFor 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.
| Starter | Java | Spring Boot | springdoc-openapi | Spring AI BOM |
|---|
| 0.1.
ตัดมาแค่ช่วงต้น อ่านต่อใน repo