ð OpenAPI to MCP Server Code Generator
ããŒã«ã«ð OpenAPI to MCP Server Code Generator ã«ã€ããŠ
OpenAPI to MCP Server Code Generator ã¯ãJSON ãŸã㯠YAML ã® OpenAPI 仿§ã Python 補㮠MCP ãµãŒããŒããã±ãŒãžã«å€æããã³ãŒãçæããŒã«ã§ããããŒã«ã¢ãžã¥ãŒã«ãAPI ã¯ã©ã€ã¢ã³ããèšå®ãã¡ã€ã«ãçæããLangGraph ãšãŒãžã§ã³ããA2A ãµãŒããŒãè©äŸ¡çšã®æ§æãä»»æã§åºåã§ããŸãã
äž»ãªæ©èœ
- 01OpenAPI 仿§ããã® MCP ãµãŒããŒçæ
- 02ãšã³ããã€ã³ãããšã®ããŒã«ã¢ãžã¥ãŒã«äœæ
- 03httpx ããŒã¹ã® API ã¯ã©ã€ã¢ã³ãã³ãŒãçæ
- 04LangGraph ãšãŒãžã§ã³ããš A2A ãµãŒããŒã®ä»»æçæ
- 05LangFuse ãçšããè©äŸ¡ã¢ãŒãã®ä»»æçæ
掻çšã·ãŒã³
- 01æ¢åã® REST API ã MCP ãµãŒããŒãšããŠè¿ éã«ã©ãããã
- 02OpenAPI 仿§ãããšãŒãžã§ã³ãã®ãããã¿ã€ããæ§ç¯ãè©äŸ¡ãã
MCP 察å¿
æ¬ããŒã«ã¯ FastMCPïŒmcp>=1.9.0ïŒã§å®è£ ããã MCP ãµãŒããŒãçæããŸããæ¢å®ã§ã¯ STDIO ã¢ãŒãã§åäœããAPI ãšã³ããã€ã³ããã倿ããããŒã«ã AI ã¢ã·ã¹ã¿ã³ãã«å ¬éããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
uvx 'git+https://github.com/cnoe-io/openapi-mcp-codegen.git'ããŒã«ã«ãµãŒããŒã«ã¯ãã·ã³äžã®å®è¡ç°å¢ïŒNode.js 18 以äžãªã©ïŒãå¿ èŠã§ããèšå®ãã¡ã€ã«ã®å Žæã¯ã¯ã©ã€ã¢ã³ãããšã«ç°ãªããŸãã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
ð OpenAPI ãã MCP ãµãŒããŒãžã®ã³ãŒãçæããŒã«
æŠèŠ
ãã®ããŒã«ã¯ãOpenAPI 仿§ãã Model Context ProtocolïŒMCPïŒãµãŒããŒãçæããAI ã¢ã·ã¹ã¿ã³ãã API ãšããåãããããã«å©çšã§ãã Python ããã±ãŒãžãäœæããŸããäžæ žãšãªãã¢ãŒããã¯ãã£ã§ã¯ãOpenAPI 仿§ãããŒã«ãã¢ãã«ãã¯ã©ã€ã¢ã³ãã³ãŒããåããæ§é åããã MCP ãµãŒããŒã«å€æããŸãã
ã¯ã€ãã¯ã¹ã¿ãŒã
- uv ãã€ã³ã¹ããŒã«ããŸã
- ãµãŒããŒãçæããŸãïŒå¿
èŠã«å¿ããŠãšãŒãžã§ã³ãïŒè©äŸ¡æ©èœãçæããŸãïŒïŒ
uvx --from git+https://github.com/cnoe-io/openapi-mcp-codegen.git openapi_mcp_codegen \ --spec-file examples/petstore/openapi_petstore.json \ --output-dir examples/petstore \ --generate-agent \ --generate-eval
âš æ©èœ
- â¡ OpenAPI 仿§ãã MCP ãµãŒããŒãèªåçæ
- ð JSON ããã³ YAML 圢åŒã«å¯Ÿå¿
- ð ïž å API ãšã³ããã€ã³ãçšã®ããŒã«ã¢ãžã¥ãŒã«
- ð€ API ã¯ã©ã€ã¢ã³ãã³ãŒãã®çæ
- ð ãã®ã³ã°ãšãšã©ãŒåŠçã®ã»ããã¢ãã
- âïž èšå®ãã¡ã€ã«ïŒ
pyproject.tomlã.env.exampleïŒ - ð å æ¬çãªããã¥ã¡ã³ãã®çæ
- ð --generate-agent ãã©ã° â çæããã MCP ãµãŒããŒãšãšãã«ãLangGraph React ãšãŒãžã§ã³ãïŒA2A ãµãŒããŒãMakefileãREADMEã.env.example ãå«ãïŒã远å çæ
- ð --generate-evalïŒå¯Ÿè©±åè©äŸ¡ã¢ãŒããšèªåè©äŸ¡ã¹ã€ãŒãã远å
- ð§ --generate-system-promptïŒèšå®æžã¿ã® LLM ã䜿çšããŠããšãŒãžã§ã³ãçšã® SYSTEM ããã³ãããçæ
- ð ãªãã·ã§ã³ã§ SLIM ãã©ã³ã¹ããŒãã«å¯Ÿå¿ããŠããŸãïŒå®éšçãªæ©èœã®ã»ã¯ã·ã§ã³ãåç §ïŒ
ä»çµã¿
- OpenAPI 仿§ïŒJSON ãŸã㯠YAMLïŒãæå®ããŸãã
- ãžã§ãã¬ãŒã¿ãŒããã¹ããªãã¬ãŒã·ã§ã³ãã¹ããŒããè§£æããJinja2 ãã³ãã¬ãŒããã¬ã³ããªã³ã°ããŠãæ§é åããã Python MCP ãµãŒããŒãçæããŸãã
- ãªãã·ã§ã³ã§ãçæããã MCP ããŒã«ãåŒã³åºãã LangGraph ãšãŒãžã§ã³ããš A2A ãµãŒããŒã©ãããŒãçæã§ããŸãã
- LangFuse ã䜿çšãããã¬ãŒã·ã³ã°ãšè©äŸ¡ã«ã察å¿ããŠããŸãã
éçº
ããŒã«ã«éçºã³ãã³ã
# Setup venv
uv venv && source .venv/bin/activate
# Initial setup (requires uv CLI)
uv sync
CLI ãªãã·ã§ã³
- --generate-agent
- çæããã MCP ãµãŒããŒãã©ãããã LangGraph React ãšãŒãžã§ã³ããçæããŸã
- A2A ãµãŒããŒãMakefileãREADMEã.env.example ãå«ãŸããŸã
- --generate-eval
- 以äžã远å ããŸãïŒ
- eval_mode.pyïŒãã¬ãŒã¹ã eval/dataset.yaml ã«ä¿åãã察話åããŒã¿ã»ãããã«ããŒïŒ
- eval/evaluate_agent.pyïŒæ£ç¢ºæ§ããã«ã·ããŒã·ã§ã³ãè»è·¡ã®ç²ŸåºŠãè©äŸ¡ãã LangFuse 察å¿ã®è©äŸ¡æ©èœïŒ
- 以äžã远å ããŸãïŒ
- --generate-system-prompt
- èšå®æžã¿ã® LLM ã䜿çšããŠãçæãããããŒã«ã«åããã SYSTEM ããã³ãããäœæããŸã
- --enhance-docstring-with-llm
- ãªãã·ã§ã³ã§ãLLM ã䜿çšããŠããŒã«ã® docstring ãæžãæããŸã
- --enable-slim
- çæããã A2A Starlette ã¢ããªã±ãŒã·ã§ã³ã AgntcyFactory çµç±ã§ SLIM ã«æ¥ç¶ãããµãŒãã¹ãèµ·åãã docker-compose ãã¡ã€ã«ãçæããŸã
çæãããã¢ãŒããã¯ãã£
ðïž ã¢ãŒããã¯ãã£
flowchart TD
subgraph Client Layer
A[User Client A2A]
end
subgraph Agent Transport Layer
B[Google A2A]
end
subgraph Agent Framework Layer
C[LangGraph ReAct Agent]
end
subgraph Tools/MCP Layer
D[Petstore MCP Server]
E[Petstore API Server]
end
A --> B
B --> C
C -.-> D
D -.-> C
D -.-> E
E -.-> D
çæãããã¢ãŒããã¯ãã£ã«ã¯ãSTDIO ã¢ãŒãã® MCP ãµãŒããŒãšãçµã¿èŸŒã¿ãŠãŒãã£ãªãã£ããŒã«ã® get_current_time ããã³ iso8601_to_unix ãå«ãŸããŸãã
äŸïŒPetstore A2A LangGraph ãšãŒãžã§ã³ãïŒMCP ãµãŒããŒ
- ãšãŒãžã§ã³ããšè©äŸ¡ãçæããŸã
uvx --from git+https://github.com/cnoe-io/openapi-mcp-codegen.git openapi_mcp_codegen \
--spec-file examples/petstore/openapi_petstore.json \
--output-dir examples/petstore \
--generate-agent \
--generate-eval
- ãšãŒãžã§ã³ããš LLM ãèšå®ããŸãïŒLLM ãããã€ããŒã®ããã¥ã¡ã³ããšãLangfuse ã®docker-compose ã䜿ã£ããããã€ãAPI ããŒã®äœæã«é¢ããããã¥ã¡ã³ããåç §ããŠãã ããïŒã
cat > .env << 'EOF'
# Petstore API
PETSTORE_API_URL=http://0.0.0.0:10000
PETSTORE_TOKEN=foo
# LLM provider (configure per your provider)
LLM_PROVIDER=openai
OPENAI_API_KEY=<your-openai-api-key>
OPENAI_ENDPOINT=https://api.openai.com/v1
OPENAI_MODEL_NAME=gpt-5
# Langfuse (optional)
LANGFUSE_HOST=http://localhost:3000
LANGFUSE_PUBLIC_KEY=<your-langfuse-public-key>
LANGFUSE_SECRET_KEY=<your-langfuse-secret-key>
EOF
ãŸãã倿°ãã·ã§ã«ã«ãšã¯ã¹ããŒãããŸãïŒ
# Exports each line of the .env ignoring lines starting with #
export $(grep -v '^#' .env | xargs)
- ãšãŒãžã§ã³ãã®ãã£ã¬ã¯ããªã«ç§»åããã¢ãã¯ãµãŒããŒãå®è¡ããŸãïŒ
cd examples/petstore
uv run python petstore_mock_server.py
- Git ãªããžããªã®ã«ãŒããããæ°ããã¿ãŒããã«ãéããŠå®è¡ããŸãïŒ
cd examples/petstore
make run-a2a
- Git ãªããžããªã®ã«ãŒããããæ°ããã¿ãŒããã«ãéããŠå®è¡ããŸãïŒå ã«Docker ãã€ã³ã¹ããŒã«ããŠãã ããïŒïŒ
cd examples/petstore
make run-a2a-client
ããã§ãšãŒãžã§ã³ããšã¯ã©ã€ã¢ã³ãããããã€ãããŸãããããšãã°ãList my available pets ãšå°ããŠã¿ãŠãã ãããæå¹ã«ãªã£ãŠããå Žåã¯ãLangFuseïŒhttp://localhost:3000ïŒã§ãã¬ãŒã¹ã確èªã§ããŸãããšãŒãžã§ã³ããè©äŸ¡ããã«ã¯ãæ¬¡ã®æé ã«é²ã¿ãŸãïŒ
- æ°ããã¿ãŒããã«ã§ãè©äŸ¡ã¢ãŒãã§ãšãŒãžã§ã³ããèµ·åããŸããããŒã«ã®äžèЧãåºåããããããããè©äŸ¡ããŠ
eval/dataset.yamlã«ããŒã¿ã»ãããäœæããããæ±ããããŸãã
make run-a2a-eval-mode
- ããŒã¿ã»ããã®äœæãå®äºããããè©äŸ¡ãéå§ããŸãïŒ
make eval
ããã«ãããLangFuse ã«æ°ããããŒã¿ã»ãããäœæãããè©äŸ¡ãå®è¡ãããŸãã
æ¡åŒµæ©èœïŒSLIM
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãhost.docker.internal ã«ã¢ã¯ã»ã¹ã§ããå¿
èŠããããŸããåé¡ãçºçããå Žåã¯ããã® GitHub ã® issueãåç
§ããŠãã ããã
- --enable-slim ãæå®ããŠçæããå Žåã¯ãSLIM äžã§ A2A ãµãŒããŒãå®è¡ããdocker-compose ã§ããŒã«ã«ã® SLIM ããŒã¿ãã¬ãŒã³ãèªåèµ·åããããšãã§ããŸãïŒ
export PETSTORE_API_URL=http://host.docker.internal:10000 # Needed so that the MCP server can talk to the mock API server running on the host
make run-a2a-and-slim
ãã® docker-compose ã§ã¯ïŒ
- 2 ã€ã®ã³ã³ãããå®è¡ããŸããäžæ¹ã¯ HTTP çµç±ã® A2Aãããäžæ¹ã¯ SLIM ã«ããªããžããã A2A ã§ãã
- slim-config.yaml ã§å®çŸ©ããã slim-dataplane ãµãŒãã¹ãèµ·åããŸãã
- äž¡æ¹ã®ã³ã³ããã« Langfuse ãæ¥ç¶ããŸãïŒ
host.docker.internalã«ã¢ã¯ã»ã¹ã§ããããšãåæã§ããå¥ã®æ¹æ³ãšããŠãçæããã docker-compose ãã¡ã€ã«ã« langfuse ã³ã³ããŒãã³ãã远å ããLANGFUSE_HOSTç°å¢å€æ°ãhttp://langfuse-web:3000ã«æŽæ°ããŸãïŒã
- æ°ããã¿ãŒããã«ã§ã¯ã©ã€ã¢ã³ããã SLIM ããªããžçµç±ã®ãšãŒãžã§ã³ãã«æ¥ç¶ããã«ã¯ã次ãå®è¡ããŸãïŒ
make run-slim-client
A2A ã€ã³ã¹ãã¯ã¿ãŒããŒã«
A2A ã€ã³ã¹ãã¯ã¿ãŒã¯ãA2A ãµãŒããŒã®æ€æ»ãšãããã°ã«äœ¿ããŠãŒãã£ãªãã£ã§ãããšãŒãžã§ã³ãã«ãŒãã調ã¹ããããšãŒãžã§ã³ããåŒã³åºãããããããã®ããžã¥ã¢ã«ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãããããžã§ã¯ãããŒãžã®æé ã«åŸã£ãŠã€ã³ã¹ãã¯ã¿ãŒããã«ãããŠå®è¡ããŠãã ãããlocalhost:8080 ã§å©çšã§ããŸãããã®åŸãlocalhost:8000/.well-known/agent.json ã§å®è¡äžã®ãšãŒãžã§ã³ãã«æ¥ç¶ã§ããŸãã
ãããžã§ã¯ãåºæã®èŠçŽ
èšå®ãã¡ã€ã«
- åãµã³ãã«ã«ã¯ãèªå¯ããããŒãªã©ã®ã¡ã¿ããŒã¿ãå«ã
config.yamlãå¿ èŠã§ãã - çæããã
pyproject.tomlã«ã¯ããšãŒãžã§ã³ãåºæã®äŸåé¢ä¿ãå«ãŸããŸãã .env.exampleãã³ãã¬ãŒãã«ã¯ããšãŒãžã§ã³ãåºæã®ç°å¢å€æ°ãå«ãŸããŸãã
ã³ãŒãçæã®ãã¿ãŒã³
- Operation ID 㯠Python ã®é¢æ°åã«ãªããŸãïŒsnake_case ã«å€æïŒã
- OpenAPI ã®ãã©ã¡ãŒã¿ãŒã¯ãåãã³ãä»ãã®é¢æ°åŒæ°ã«ãããã³ã°ãããŸãã
- çæãããããŒã«ã¯ã次ã®ãã¿ãŒã³ã«åŸããŸãïŒ
async def operation_id(params) -> Any - API ã¯ã©ã€ã¢ã³ãã¯ãèšå®å¯èœãªããŒã¹ URL ãšããããŒã䜿çšãã
httpxã§æ§æãããŸãã
çµ±åãã€ã³ã
å€éšäŸåé¢ä¿
- MCP ãããã³ã«ïŒFastMCP ãµãŒããŒã®å®è£
ã«
mcp>=1.9.0ã䜿çšããŸãã - uv ããã±ãŒãžãããŒãžã£ãŒïŒäŸåé¢ä¿ã®ç®¡çãšå®è¡ã«å¿ èŠã§ãã
- Jinja2ïŒã³ãŒãçæçšã®ãã³ãã¬ãŒããšã³ãžã³ã§ãã
- RuffïŒã³ãŒãã®ãã©ãŒããããšãªã³ãã£ã³ã°ãè¡ããŸãïŒçæã³ãŒãã«èªåé©çšïŒã
çè§£ããããã®äž»èŠãã¡ã€ã«
openapi_mcp_codegen/mcp_codegen.pyïŒäžæ žãšãªãçæããžãã¯ãšãã³ãã¬ãŒãã®ã¬ã³ããªã³ã°openapi_mcp_codegen/templates/ïŒãã³ãã¬ãŒãæ§é ã¯åºåæ§é ãåæ ããŠããŸããexamples/petstore/ïŒOpenAPI 仿§ãšèšå®ãå«ããå®å šã«åäœãããµã³ãã«tests/test_mcp_codegen.pyïŒæåŸ ãããçæãããŒã瀺ãçµ±åãã¹ã
å®éšç
SLIM ã®ãµããŒã
--enable-slim ã䜿çšããŠãSLIM ãã©ã³ã¹ããŒãçµç±ã§ A2A ãµãŒããŒãå®è¡ã§ãããšãŒãžã§ã³ãããã«ãããŸãã
--enable-slimãæå®ããŠçæãããšãdocker-compose ã§slim-dataplaneãµãŒãã¹ãèµ·åãããšãŒãžã§ã³ãã SLIM çµç±ã§æ¥ç¶ããŸãã- ãšãŒãžã§ã³ãã® A2A ãµãŒããŒã¯ã
AgntcyFactoryãä»ã㊠SLIM äžã§å®è¡ãããŸãã make run-a2a-and-slimã䜿çšãããšãHTTP A2A ãšslim-dataplaneãå«ã SLIM ããªããžã¹ã¿ãã¯ã®äž¡æ¹ãèµ·åã§ããŸãã- ã¯ã©ã€ã¢ã³ããã SLIM ããªããžçµç±ã®ãšãŒãžã§ã³ãã«æ¥ç¶ããã«ã¯ãæ¬¡ã®æé ã«åŸããŸãã
make run-slim-client - åèè³æïŒ
- SLIM CoreïŒhttps://docs.agntcy.org/messaging/slim-core/
A2A ãããã·
--with-a2a-proxy ãã©ã°
- å€éšã® a2a-proxy ã®èåŸã«é 眮ããããšãæ³å®ãããæå°éã® WebSocket ã¢ããã¹ããªãŒã ãµãŒããŒãçæããŸãã
- å€éšã® a2a-proxy ãå¥éãããã€ããWS ã¢ããã¹ããªãŒã ïŒws://host:portïŒã«æ¥ç¶ããããèšå®ããŸãããããã·ã¯ãã¯ã©ã€ã¢ã³ãåãã« A2A HTTP APIïŒäŸïŒ/a2a/v1ïŒãå ¬éããŸãã
--generate-agentãšçµã¿åããããšãWS ã¢ããã¹ããªãŒã ãããŒã«ã«ã§èµ·åãã Makefile ã¿ãŒã²ããïŒäŸïŒmake run-with-proxyïŒãçšæãããå ŽåããããŸãã- ãã®æ¹åŒã¯å®é𿮵éã§ããã倿Žãããå¯èœæ§ããããŸããè©äŸ¡ãšãããã¿ã€ãã³ã°ã«ã®ã¿äœ¿çšããŠãã ããã
ãããããããã°ãã¿ãŒã³
- çæãããã³ãŒãã«ã¯ãPython ã® logging ã¢ãžã¥ãŒã«ã䜿ã£ã詳现ãªãã°ãå«ãŸããŸãã
render_template()ã® Jinja2 ã³ã³ããã¹ããããã³ãã¬ãŒã倿°ã«ã¢ã¯ã»ã¹ã§ããŸãã--dry-runãã©ã°ã䜿çšãããšããã¡ã€ã«ãæžã蟌ãŸãã«çæçµæããã¬ãã¥ãŒã§ããŸãã
ð¯ OpenAPI Overlay ã«ããããã¥ã¡ã³ãã®åŒ·å
æŠèŠ
ãã®ããŒã«ã¯ãOpenAPI Overlay Specification 1.0.0 ã䜿çšãã LLM ã«ããããã¥ã¡ã³ã匷å ã«å¯Ÿå¿ããŸããããšãŒãžã§ã³ããçè§£ãããããããæé©åããã docstring ãåãã AI ãã¬ã³ããªãŒãª MCP ãµãŒããŒãçæã§ããŸãã
ã¯ã€ãã¯ã¹ã¿ãŒãïŒåŒ·åãããçæ
# One-command enhanced MCP server generation
python -m openapi_mcp_codegen.enhance_and_generate \
examples/argo-workflows/openapi_argo_workflows.json \
examples/argo-workflows/mcp_server \
examples/argo-workflows/config.yaml \
--save-overlay overlay.yaml \
--save-enhanced-spec enhanced_openapi.json
ãã®ã³ãã³ãã§ã¯ã次ã®åŠçãè¡ãããŸãã
- AI ãã¬ã³ããªãŒãªèª¬æãå«ããªãŒããŒã¬ã€ãçæããŸãïŒå©çšå¯èœãªå Žå㯠LLM ã䜿çšïŒã
- ãªãŒããŒã¬ã€ãé©çšããŠã匷åããã OpenAPI 仿§ãäœæããŸãã
- æé©åããã docstring ãå«ã MCP ãµãŒããŒãçæããŸãã
匷åãã€ãã©ã€ã³
flowchart LR
A[OpenAPI Spec] -->|1. Analyze| B[Overlay Generator]
B -->|2. LLM Enhance| C[overlay.yaml]
A -->|3. Apply| D[Overlay Applier]
C --> D
D -->|4. Enhanced| E[enhanced_openapi.json]
E -->|5. Generate| F[MCP Server]
style B fill:#e1f5ff
style C fill:#fff4e6
style E fill:#e8f5e9
style F fill:#f3e5f5
äž»ãªæ©èœ
1. LLM ã«ãã説æã®åŒ·å
- OpenAI äºæ ã®åœ¢åŒïŒ250 æåæªæºïŒ
- ãã¬ãŒã³ããã¹ã â Markdown ãç¹æ®ãªæžåŒã¯äœ¿çšããŸãã
- ãŠãŒã¹ã±ãŒã¹ã®ã³ã³ããã¹ã âã䜿çšããå Žé¢ïŒ<ã·ããªãª>ã
- ã¢ã¯ã·ã§ã³æå â æç¢ºãªåè©ã§å§ããŸã
2. ã¹ããŒããªãã©ã¡ãŒã¿ãŒåŠç
- è€éãªã¹ããŒãã èªåæ€åº
- ãã¹ãããããã©ã¡ãŒã¿ãŒã 10 åãè¶ ããã¹ããŒãåãã® èŸæžã¢ãŒã
- ãã£ãããã颿°ã·ã°ãã㣠â 1000 åãè¶ ãããã©ã¡ãŒã¿ãŒãæã€é¢æ°ã¯äžèŠã«ãªããŸã
- çµæïŒè€éãªæäœã§ã¯ã³ãŒããµã€ãºã 98% åæž
3. OpenAPI Overlay æšæº
- æ¥çæšæº ã® Overlay Specification 1.0.0
- ããŒã«ããã©ãããã©ãŒã éã§ åå©çšå¯èœ
- ããã¥ã¡ã³ãã®åŒ·åã ããŒãžã§ã³ç®¡ç
- å ã® OpenAPI 仿§ã ç Žå£ããŸãã
èšå®
config.yaml ã® title ãã£ãŒã«ãã§ãããã±ãŒãžåãèšå®ã§ããããã«ãªããŸããã
title: argo_workflows # â mcp_argo_workflows
description: Argo Workflows MCP Server
author: Your Name
email: [email protected]
version: 0.1.0
license: Apache-2.0
headers:
Authorization: Bearer {token}
Accept: application/json
ãªãŒããŒã¬ã€çæãªãã·ã§ã³
# Generate overlay only (with LLM)
python -m openapi_mcp_codegen.overlay_generator \
spec.json overlay.yaml --use-llm
# Apply existing overlay
python -m openapi_mcp_codegen.overlay_applier \
spec.json overlay.yaml enhanced_spec.json
# Full pipeline
python -m openapi_mcp_codegen.enhance_and_generate \
spec.json output/ config.yaml \
--save-overlay overlay.yaml \
--format yaml
äŸïŒåŒ·ååãšåŒ·ååŸ
匷åå
GET /api/v1/workflows:
description: "Get workflows"
LLM ã«ãã匷ååŸ
GET /api/v1/workflows:
description: "List all workflows in a namespace. Use when: you need to discover running workflows or check workflow status. Required: namespace"
çæããã颿°
async def workflow_service_list_workflows(
path_namespace: str,
param_listOptions_labelSelector: str = None
) -> Any:
"""
List all workflows in a namespace
OpenAPI Description:
List all workflows in a namespace. Use when: you need to
discover running workflows or check workflow status.
Args:
path_namespace (str): Kubernetes namespace to scope the operation
param_listOptions_labelSelector (str): Filter by labels
"""
ããã©ãŒãã³ã¹ãžã®åœ±é¿
| ææš | 倿Žå | 倿ŽåŸ | æ¹å |
|---|---|---|---|
| 颿°ã®ãµã€ãºïŒè€éãªãã®ïŒ | 5,735 è¡ | 82 è¡ | 98.6% â |
| ãã©ã¡ãŒã¿ãŒæ° | 1,000+ | 7 åã®ãã©ã¡ãŒã¿ãŒ | 99.3% â |
| 説æã®é·ã | 300+ æå | 250 æåæªæº | OpenAI æºæ â |
| ããŒã«éžæã®ç²ŸåºŠ | ããŒã¹ã©ã€ã³ | +35% | ãšãŒãžã§ã³ãã®ããã©ãŒãã³ã¹åäž |
ãã¡ã€ã«ç®¡ç
ããŒãžã§ã³ç®¡çã«ä¿åãããã¡ã€ã«ïŒ
- â
openapi.jsonâ å ã® OpenAPI 仿§ - â
config.yamlâ èšå® - ð€
overlay.yamlâ ä»»æïŒåçæã§ããŸãããã¬ãã¥ãŒãç·šéã«äŸ¿å©ã§ãïŒ
èªåçæãããããä¿åããªããã¡ã€ã«ïŒ
- â
enhanced_openapi.jsonâ å ã®ä»æ§ãšãªãŒããŒã¬ã€ããçæ - â
mcp_server/â çæãããã³ãŒãã®åºåå
LLM ãããã€ããŒã®èšå®
# Set LLM API keys
export OPENAI_API_KEY=your-key
export ANTHROPIC_API_KEY=your-key
export LLM_PROVIDER=openai # or anthropic
# The overlay generator will automatically use LLM if keys are set
# Falls back to rule-based generation if no LLM available
å¿çšïŒã«ã¹ã¿ã ãªãŒããŒã¬ã€
现ããªå¶åŸ¡ãè¡ãå Žåã¯ãoverlay.yaml ãæåã§ç·šéã§ããŸãã
overlay: 1.0.0
info:
title: Custom Enhancements
version: 1.0.0
actions:
- target: $.paths['/api/v1/workflows'].get.description
update: "Your custom description here"
- target: $.paths['/api/v1/workflows'].get.parameters[0].description
update: "Custom parameter description"
次ã«ãé©çšããŠåçæããŸãã
python -m openapi_mcp_codegen.overlay_applier \
original_spec.json overlay.yaml enhanced_spec.json
python -m openapi_mcp_codegen \
--spec-file enhanced_spec.json \
--output-dir mcp_server
ð 远å ãªãœãŒã¹
- ã¢ãŒããã¯ãã£ã¬ã€ãïŒã¢ãŒããã¯ãã£ã®è©³çްãªããã¥ã¡ã³ããšãArgo Workflows ã䜿ã£ãå®è£ ã¬ã€ãã«ã€ããŠã¯ãArchitecture.md ãåç §ããŠãã ãã
- ãªãŒããŒã¬ã€ä»æ§ïŒOpenAPI Overlay Specification 1.0.0
- MCP ãããã³ã«ïŒModel Context Protocol
- äŸïŒåäœããå®å
šãªäŸã«ã€ããŠã¯ã
examples/ãã£ã¬ã¯ããªã確èªããŠãã ãã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã