openapi-spec-mcp-server

a-zara-n/openapi-spec-mcp-server

3.3

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.

Tools
5
Resources
0
Prompts
0

OpenAPI Specification Docs MCP Server

| 日本語

OpenAPI 仕様の分析、怜蚌、管理のための知的ツヌルを提䟛する TypeScript ベヌスの Model Context Protocol (MCP)サヌバヌです。このサヌバヌにより、AI アシスタントが構造化されたむンタヌフェヌスを通じお OpenAPI ドキュメントず察話するこずが可胜になりたす。

目次

抂芁

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

セットアップ手順

  1. リポゞトリをクロヌン:
git clone <repository-url>
cd openapi-mcp-server
  1. 䟝存関係をむンストヌル:
npm install
  1. プロゞェクトをビルド:
npm run build
  1. デヌタディレクトリを䜜成存圚しない堎合:
mkdir -p data/openapi
  1. 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"]
        }
    }
}

ワヌクフロヌの䟋

  1. OpenAPI 仕様をロヌド:
{
    "method": "tools/call",
    "params": {
        "name": "openapi_set_server_info",
        "arguments": {
            "path": "./data/openapi/petstore.yaml"
        }
    }
}
  1. 利甚可胜な API をリスト:
{
    "method": "tools/call",
    "params": {
        "name": "mcp_openapi_list_openapis",
        "arguments": {}
    }
}
  1. API パスを探玢:
{
    "method": "tools/call",
    "params": {
        "name": "mcp_openapi_list_paths",
        "arguments": {
            "name": "petstore"
        }
    }
}
  1. 特定の゚ンドポむントを怜査:
{
    "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 ファむルディレクトリ

開発ガむドラむン

新しいツヌルの远加

  1. ツヌルディレクトリを䜜成: src/tools/の䞋に新しいディレクトリを䜜成
  2. ツヌルむンタヌフェヌスを定矩: MCP ツヌル定矩でtool.tsを䜜成
  3. ハンドラヌを実装: ビゞネスロゞックでhandler.tsを䜜成
  4. 怜蚌を远加: 入力怜蚌のためのvalidation.tsを䜜成
  5. ツヌルを登録: 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, // レスポンスデヌタ
        },
    ];
}

トラブルシュヌティング

よくある問題

  1. サヌバヌが起動しない:

    • ポヌト 3000 が既に䜿甚されおいないか確認
    • すべおの䟝存関係がむンストヌルされおいるこずを確認
    • TypeScript ビルドが正垞に完了したこずを確認
  2. OpenAPI ファむルがロヌドされない:

    • data/openapi/のファむル暩限を確認
    • ファむルが有効な YAML/JSON であるこずを確認
    • 怜蚌゚ラヌのサヌバヌログを確認
  3. デヌタベヌス゚ラヌ:

    • data/ディレクトリが存圚し、曞き蟌み可胜であるこずを確認
    • デヌタベヌスをリセットするにはopenapi.dbを削陀
    • ディスク容量の可甚性を確認
  4. ツヌル実行の倱敗:

    • ツヌル名が正しいこずを確認
    • 必芁な匕数が提䟛されおいるこずを確認
    • 詳现な゚ラヌメッセヌゞのサヌバヌログを確認

デバッグモヌド

詳现なロギングを有効にする

enableLogging: true; // 様々な蚭定オブゞェクトで

サポヌト

問題や質問がある堎合

  • 詳现な゚ラヌ情報のサヌバヌログを確認
  • /docsの既存のドキュメントを確認
  • 䜿甚䟋のテストファむルを確認

ラむセンス

ISC ラむセンス - 詳现はを参照しおください。

コントリビュヌション

コントリビュヌションは歓迎したす開発ガむドラむンに埓い、プルリク゚ストを送信する前にすべおのテストが合栌するこずを確認しおください。