a-zara-n/openapi-spec-mcp-server
If you are the rightful owner of openapi-spec-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
OpenAPI MCP Server is a TypeScript-based server designed to bridge the gap between AI assistants and OpenAPI specifications.
OpenAPI Specification Docs MCP Server
| æ¥æ¬èª
OpenAPI 仿§ã®åæãæ€èšŒã管çã®ããã®ç¥çããŒã«ãæäŸãã TypeScript ããŒã¹ã® Model Context Protocol (MCP)ãµãŒããŒã§ãããã®ãµãŒããŒã«ãããAI ã¢ã·ã¹ã¿ã³ããæ§é åãããã€ã³ã¿ãŒãã§ãŒã¹ãéã㊠OpenAPI ããã¥ã¡ã³ããšå¯Ÿè©±ããããšãå¯èœã«ãªããŸãã
ç®æ¬¡
- æŠèŠ
- ã¢ãŒããã¯ãã£
- æ©èœ
- å©çšå¯èœãªããŒã«
- ã€ã³ã¹ããŒã«
- äœ¿çšæ¹æ³
- èšå®
- éçºã¬ã€ãã©ã€ã³
- API ãªãã¡ã¬ã³ã¹
- ãã©ãã«ã·ã¥ãŒãã£ã³ã°
æŠèŠ
OpenAPI MCP Serverã¯ãAIã¢ã·ã¹ã¿ã³ããšOpenAPI仿§ã®æ¶ãæ©ãšãªããµãŒããŒã§ãããã®ãµãŒããŒã䜿çšããããšã§ãAIã¢ãã«ã¯ä»¥äžã®ããšãã§ããããã«ãªããŸãïŒ
- ããŒã«ã«ãã¡ã€ã«ããã£ã¬ã¯ããªããOpenAPI仿§ãèªåçã«èªã¿èŸŒã¿ãè§£æ
- APIã®ãã¹ãã¹ããŒããã»ãã¥ãªãã£èšå®ãªã©ã®æ§é ã詳现ã«åæ
- ç¹å®ã®APIãšã³ããã€ã³ãããã©ã¡ãŒã¿ã«ã€ããŠèªç¶èšèªã§ã¯ãšãª
- OpenAPIæšæºã«æºæ ããŠãããã©ããã®æ€èšŒãå®è¡
- è€æ°ã®API仿§ãåæã«ç®¡çããçžäºåç §
Model Context Protocol (MCP)ãå®è£ ããããšã§ãClaudeã®ãããªAIéçºããŒã«ãšã·ãŒã ã¬ã¹ã«çµ±åã§ããAPIããã¥ã¡ã³ãã®çè§£ãšæŽ»çšãé£èºçã«åäžããŸãã
ã¢ãŒããã¯ãã£
ãã£ã¬ã¯ããªæ§é
openapi-mcp-server/
âââ src/ # ãœãŒã¹ã³ãŒã
â âââ index.ts # ã¡ã€ã³ãšã³ããªãŒãã€ã³ã
â âââ server.ts # MCPãµãŒããŒå®è£
â âââ config.ts # èšå®ç®¡ç
â âââ resources/ # MCPãªãœãŒã¹å®çŸ©
â âââ tools/ # ããŒã«å®è£
â âââ openapi-tool/ # OpenAPI仿§ç®¡ç
â âââ path-tool/ # APIãã¹åæ
â âââ response-tool/ # ã¬ã¹ãã³ã¹ã¹ããŒãåæ
â âââ schema-tool/ # ã¹ããŒãã³ã³ããŒãã³ã管ç
â âââ security-tool/ # ã»ãã¥ãªãã£ã¹ããŒã åæ
â âââ server-tool/ # ãµãŒããŒãšã³ããã€ã³ã管ç
â âââ tool-libs/ # å
±æããŒã«ã©ã€ãã©ãª
â â âââ core/ # ã³ã¢æ©èœ
â â âââ parsers/ # ãã¡ã€ã«ããŒãµãŒ
â â âââ services/ # ããžãã¹ããžãã¯ãµãŒãã¹
â â âââ types/ # TypeScriptåå®çŸ©
â â âââ utils/ # ãŠãŒãã£ãªãã£é¢æ°
â âââ shared/ # å
±æãŠãŒãã£ãªãã£
âââ data/ # ããŒã¿ã¹ãã¬ãŒãž
â âââ openapi/ # OpenAPIãã¡ã€ã«
â âââ openapi.db # SQLiteããŒã¿ããŒã¹
âââ build/ # ã³ã³ãã€ã«æžã¿JS
âââ docs/ # ããã¥ã¡ã³ã
âââ tests/ # ãã¹ããã¡ã€ã«
âââ package.json # Node.jsäŸåé¢ä¿
âââ tsconfig.json # TypeScriptèšå®
ã³ã¢ã³ã³ããŒãã³ã
1. ãµãŒããŒã³ã³ããŒãã³ã (server.ts
)
- MCP éä¿¡ã®ããã® Streamable HTTP ãã©ã³ã¹ããŒããå®è£
- ã¹ããŒãã¬ã¹æäœã®ããã® POST ãš GET ãªã¯ãšã¹ãã®äž¡æ¹ãåŠç
- ããŒã«ã®ç»é²ãšå®è¡ã管ç
- å æ¬çãªãªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ãã®ã³ã°ãæäŸ
- ãã¡ã€ã«å€æŽã®ããã® OpenAPI ãã£ã¬ã¯ããªãç£èŠ
2. ããŒã«ãããŒãžã£ãŒ (tools/index.ts
)
- éäžåããŒã«ã¬ãžã¹ããªãšå®è¡ãšã³ãžã³
- ããŒã«åããã³ãã©ãŒé¢æ°ã«ããã
- ãšã©ãŒåŠçãšå®è¡è¿œè·¡ãæäŸ
- çŸåš 6 ã€ã®ã«ããŽãªã«ããã 17 ã®ç°ãªãããŒã«ã管ç
3. ããŒã¿ããŒã¹ã¬ã€ã€ãŒ (tool-libs/core/database/
)
- OpenAPI 仿§ã®ããã® SQLite ããŒã¹ã®ã¹ãã¬ãŒãž
- 仿§ããã¹ãã¹ããŒããªã©ã®éã®é¢ä¿ã管ç
- å¹ççãªã¯ãšãªãšãã£ãã·ã³ã°ã¡ã«ããºã ãæäŸ
- å®å šãª CRUD æäœããµããŒã
4. OpenAPI ããã»ããµãŒ (tool-libs/services/openapi-processor.ts
)
- YAML ãš JSON OpenAPI ãã¡ã€ã«ãè§£æ
- OpenAPI æšæºã«å¯ŸããŠä»æ§ãæ€èšŒ
- API æ å ±ãæœåºããŠæ£èŠå
- ããã·ã³ã°ã«ãããã¡ã€ã«å€æŽæ€åºãåŠç
5. äŸåæ§æ³šå
¥ã³ã³ãã (tool-libs/core/di-container.ts
)
- ãµãŒãã¹ã®äŸåé¢ä¿ã管ç
- ãªããžããªã®ã·ã³ã°ã«ãã³ã€ã³ã¹ã¿ã³ã¹ãæäŸ
- ç°ãªãç°å¢ïŒæ¬çªããã¹ãïŒã«å¯ŸããŠèšå®å¯èœ
æ©èœ
ã³ã¢æ©èœ
- ãã«ããã©ãŒããã察å¿: YAML ãš JSON 圢åŒã® OpenAPI 3.0+仿§ãåŠç
- ãªã¢ã«ã¿ã€ã ç£èŠ: 倿ŽãšæŽæ°ã®ããã® OpenAPI ãã£ã¬ã¯ããªãç£èŠ
- ã¹ããŒãã¬ã¹ã¢ãŒããã¯ãã£: åãªã¯ãšã¹ãã¯ç¬ç«ããŠãããã¹ã±ãŒã©ããªãã£ã確ä¿
- å æ¬çãªæ€èšŒ: ã¹ãã¬ãŒãžåã« OpenAPI 仿§ãæ€èšŒ
- 詳现ãªãã®ã³ã°: ãããã°ãšç£èŠã®ããã®åºç¯ãªãã®ã³ã°
- ãšã©ãŒåŠç: 詳现ãªãšã©ãŒã¡ãã»ãŒãžã«ããå ç¢ãªãšã©ãŒç®¡ç
æè¡çç¹åŸŽ
- TypeScript: å®å šãªåå®å šæ§ãš IntelliSense ãµããŒã
- Express.js: HTTP ãµãŒããŒå®è£
- SQLite: 軜éãªçµã¿èŸŒã¿ããŒã¿ããŒã¹
- MCP SDK: å ¬åŒ Model Context Protocol å®è£
- ããããªããŒã: 仿§å€æŽã®èªåæ€åº
å©çšå¯èœãªããŒã«
ãµãŒããŒã¯ 6 ã€ã®ã«ããŽãªã«æŽçããã 17 ã®å°éããŒã«ãæäŸããŸãïŒ
1. OpenAPI 管çããŒã«
openapi_set_server_info
: OpenAPI 仿§ãããŒãããŠç»é²- åå¥ã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªå šäœããµããŒã
- ã¹ãã¬ãŒãžåã«ä»æ§ãæ€èšŒ
mcp_openapi_list_openapis
: ç»é²ããããã¹ãŠã® OpenAPI 仿§ããªã¹ã- ä»ã®ããŒã«ã§äœ¿çšããããã®ä»æ§åãè¿ã
2. ãµãŒããŒæ å ±ããŒã«
mcp_openapi_list_servers
: 仿§ã§å®çŸ©ããããã¹ãŠã®ãµãŒããŒããªã¹ãmcp_openapi_get_server_info
: ç¹å®ã®ãµãŒããŒã®è©³çްæ å ±ãååŸ
3. ãã¹åæããŒã«
mcp_openapi_list_paths
: 仿§å ã®ãã¹ãŠã® API ãã¹ããªã¹ãmcp_openapi_get_path_info
: ç¹å®ã®ãã¹ã®è©³çްæ å ±ãååŸmcp_openapi_get_path_parameters
: ãã¹ãã©ã¡ãŒã¿ãæœåºmcp_openapi_get_path_responses
: ãã¹ã®ã¬ã¹ãã³ã¹å®çŸ©ãååŸmcp_openapi_get_path_request_body
: ãªã¯ãšã¹ãããã£ã¹ããŒããååŸmcp_openapi_describe_path
: ãšã³ããã€ã³ãã®èªç¶èšèªèšè¿°ãååŸ
4. ã¹ããŒãæ€æ»ããŒã«
mcp_openapi_list_schemas
: å®çŸ©ããããã¹ãŠã®ã¹ããŒãããªã¹ãmcp_openapi_get_schema_info
: ã¹ããŒãã®è©³çްãååŸmcp_openapi_get_schema_definition
: å®å šãªã¹ããŒãå®çŸ©ãååŸmcp_openapi_get_schema_properties
: ã¹ããŒãããããã£ãæœåº
5. ã»ãã¥ãªãã£ããŒã«
mcp_openapi_list_security_schemes
: ã»ãã¥ãªãã£ã¹ããŒã ããªã¹ãmcp_openapi_get_security_scheme_info
: ã»ãã¥ãªãã£ã¹ããŒã ã®è©³çްãååŸ
6. ã¬ã¹ãã³ã¹ããŒã«
mcp_openapi_list_responses
: åå©çšå¯èœãªã¬ã¹ãã³ã¹å®çŸ©ããªã¹ãmcp_openapi_get_response_info
: ã¬ã¹ãã³ã¹å®çŸ©ã®è©³çްãååŸ
ã€ã³ã¹ããŒã«
åææ¡ä»¶
- Node.js 18+ ããã³ npm
- TypeScript 5.0+
- Git
ã»ããã¢ããæé
- ãªããžããªãã¯ããŒã³:
git clone <repository-url>
cd openapi-mcp-server
- äŸåé¢ä¿ãã€ã³ã¹ããŒã«:
npm install
- ãããžã§ã¯ãããã«ã:
npm run build
- ããŒã¿ãã£ã¬ã¯ããªãäœæïŒååšããªãå ŽåïŒ:
mkdir -p data/openapi
- OpenAPI ãã¡ã€ã«ã远å :
OpenAPI 仿§ãã¡ã€ã«ïŒ
.yaml
ã.yml
ããŸãã¯.json
ïŒãdata/openapi
ãã£ã¬ã¯ããªã«é 眮ããŸãã
äœ¿çšæ¹æ³
ãµãŒããŒã®èµ·å
ãµãŒããŒã¯è€æ°ã®å®è¡ã¢ãŒãããµããŒãããŠããŸãïŒ
# éçºã¢ãŒãïŒèªååèµ·åä»ãïŒ
npm run dev
# æ¬çªã¢ãŒã
npm start
# TypeScriptãã¡ã€ã«ããã«ã
npm run build
MCP ã¯ã©ã€ã¢ã³ããšã®çµ±å
Claude ãã¹ã¯ãããã¢ããªãŸã㯠MCP 察å¿ã¯ã©ã€ã¢ã³ãã§ïŒ
{
"mcpServers": {
"openapi-server": {
"command": "node",
"args": ["/path/to/openapi-mcp-server/build/index.js"]
}
}
}
ã¯ãŒã¯ãããŒã®äŸ
- OpenAPI 仿§ãããŒã:
{
"method": "tools/call",
"params": {
"name": "openapi_set_server_info",
"arguments": {
"path": "./data/openapi/petstore.yaml"
}
}
}
- å©çšå¯èœãª API ããªã¹ã:
{
"method": "tools/call",
"params": {
"name": "mcp_openapi_list_openapis",
"arguments": {}
}
}
- API ãã¹ãæ¢çŽ¢:
{
"method": "tools/call",
"params": {
"name": "mcp_openapi_list_paths",
"arguments": {
"name": "petstore"
}
}
}
- ç¹å®ã®ãšã³ããã€ã³ããæ€æ»:
{
"method": "tools/call",
"params": {
"name": "mcp_openapi_get_path_info",
"arguments": {
"name": "petstore",
"path": "/pets/{petId}",
"method": "get"
}
}
}
èšå®
ç°å¢å€æ°
ç°å¢å€æ°ã䜿çšããŠããã©ã«ãèšå®ãäžæžãã§ããŸãïŒ
PORT
: ãµãŒããŒããŒãïŒããã©ã«ã: 3000ïŒDB_PATH
: ããŒã¿ããŒã¹ãã¡ã€ã«ãã¹OPENAPI_DIR
: OpenAPI ãã¡ã€ã«ãã£ã¬ã¯ããª
éçºã¬ã€ãã©ã€ã³
æ°ããããŒã«ã®è¿œå
- ããŒã«ãã£ã¬ã¯ããªãäœæ:
src/tools/
ã®äžã«æ°ãããã£ã¬ã¯ããªãäœæ - ããŒã«ã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©: MCP ããŒã«å®çŸ©ã§
tool.ts
ãäœæ - ãã³ãã©ãŒãå®è£
: ããžãã¹ããžãã¯ã§
handler.ts
ãäœæ - æ€èšŒã远å : å
¥åæ€èšŒã®ããã®
validation.ts
ãäœæ - ããŒã«ãç»é²:
src/tools/index.ts
ã«è¿œå
ããŒã«æ§é ã®äŸïŒ
src/tools/my-tool/
âââ tool.ts # ããŒã«å®çŸ©
âââ handler.ts # ãªã¯ãšã¹ããã³ãã©ãŒ
âââ validation.ts # å
¥åæ€èšŒ
âââ types.ts # TypeScriptå
âââ index.ts # ãšã¯ã¹ããŒã
ã³ãŒãã¹ã¿ã€ã«
- TypeScript ã¹ããªã¯ãã¢ãŒãã䜿çš
- ESLint ã«ãŒã«ã«åŸã
- ãã¹ãŠã®ãããªã㯠API ã« JSDoc ã³ã¡ã³ãã远å
- ããžãã¹ããžãã¯ã®ãŠããããã¹ããæžã
- æå³ã®ãã倿°åãšé¢æ°åã䜿çš
ãã¹ã
ãã¹ããå®è¡ïŒ
npm test
ãã¹ãã¯src/tools/*/tests/
ãã£ã¬ã¯ããªã«ãããŸãã
ãã«ã
ãããžã§ã¯ãããã«ãïŒ
npm run build
åºåã¯build/
ãã£ã¬ã¯ããªã«çæãããŸãã
API ãªãã¡ã¬ã³ã¹
ããŒã«ãªã¯ãšã¹ã圢åŒ
ãã¹ãŠã®ããŒã«ã¯ MCP æšæºåœ¢åŒã«åŸããŸãïŒ
{
method: "tools/call",
params: {
name: string, // ããŒã«å
arguments: object // ããŒã«åºæã®åŒæ°
}
}
ã¬ã¹ãã³ã¹åœ¢åŒ
{
content: [
{
type: "text",
text: string, // ã¬ã¹ãã³ã¹ããŒã¿
},
];
}
ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããããåé¡
-
ãµãŒããŒãèµ·åããªã:
- ããŒã 3000 ãæ¢ã«äœ¿çšãããŠããªãã確èª
- ãã¹ãŠã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããŠããããšã確èª
- TypeScript ãã«ããæ£åžžã«å®äºããããšã確èª
-
OpenAPI ãã¡ã€ã«ãããŒããããªã:
data/openapi/
ã®ãã¡ã€ã«æš©éã確èª- ãã¡ã€ã«ãæå¹ãª YAML/JSON ã§ããããšã確èª
- æ€èšŒãšã©ãŒã®ãµãŒããŒãã°ã確èª
-
ããŒã¿ããŒã¹ãšã©ãŒ:
data/
ãã£ã¬ã¯ããªãååšããæžã蟌ã¿å¯èœã§ããããšã確èª- ããŒã¿ããŒã¹ããªã»ããããã«ã¯
openapi.db
ãåé€ - ãã£ã¹ã¯å®¹éã®å¯çšæ§ã確èª
-
ããŒã«å®è¡ã®å€±æ:
- ããŒã«åãæ£ããããšã確èª
- å¿ èŠãªåŒæ°ãæäŸãããŠããããšã確èª
- 詳现ãªãšã©ãŒã¡ãã»ãŒãžã®ãµãŒããŒãã°ã確èª
ãããã°ã¢ãŒã
詳现ãªãã®ã³ã°ãæå¹ã«ããïŒ
enableLogging: true; // æ§ã
ãªèšå®ãªããžã§ã¯ãã§
ãµããŒã
åé¡ã質åãããå ŽåïŒ
- 詳现ãªãšã©ãŒæ å ±ã®ãµãŒããŒãã°ã確èª
/docs
ã®æ¢åã®ããã¥ã¡ã³ãã確èª- 䜿çšäŸã®ãã¹ããã¡ã€ã«ã確èª
ã©ã€ã»ã³ã¹
ISC ã©ã€ã»ã³ã¹ - 詳现ã¯ãåç §ããŠãã ããã
ã³ã³ããªãã¥ãŒã·ã§ã³
ã³ã³ããªãã¥ãŒã·ã§ã³ã¯æè¿ããŸãïŒéçºã¬ã€ãã©ã€ã³ã«åŸãããã«ãªã¯ãšã¹ããéä¿¡ããåã«ãã¹ãŠã®ãã¹ããåæ Œããããšã確èªããŠãã ããã