OpenAPI to MCP Server

Official

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Includes functionality for forking and customizing the repository on GitHub, with workflow configurations for automatic publishing to npm.

  • Provides a configured GitHub Actions workflow for automatic building and publishing of customized MCP packages to npm when a tag is pushed.

  • Enables running the MCP server that transforms OpenAPI specifications into tools accessible to AI assistants, with specific support for Node.js environments including installation via npm.

OpenAPIからMCPサーバーへ

OpenAPI/Swagger仕様からMCP(Model Context Protocol)サーバーを作成し、AIアシスタントがAPIを操作できるようにするツールです。特定のAPIやサービス向けに**、独自のブランドでカスタマイズされたMCPを作成できます**

概要

このプロジェクトは、OpenAPI仕様をMCPツールに変換する動的MCPサーバーを構築します。モデルコンテキストプロトコル(MCP)を介してREST APIとAIアシスタントをシームレスに統合し、あらゆるAPIをAIがアクセス可能なツールに変換します。

特徴

  • ファイルまたは HTTP/HTTPS URL からの OpenAPI 仕様の動的読み込み
  • ファイルまたは HTTP/HTTPS URL から読み込まれたOpenAPI オーバーレイのサポート
  • OpenAPI 操作と MCP ツールのマッピングをカスタマイズ可能
  • オペレーションIDとURLパスの両方にglobパターンを使用した高度な操作フィルタリング
  • フォーマットの保存と位置メタデータによる包括的なパラメータ処理
  • API認証処理
  • MCP サーバーを構成するために使用される OpenAPI メタデータ (タイトル、バージョン、説明)
  • 階層的な記述フォールバック(操作記述 → 操作概要 → パス概要)
  • 環境変数と CLI によるカスタム HTTP ヘッダーのサポート
  • APIリクエストの追跡と識別のためのX-MCPヘッダー
  • ツール名と説明を上書きするためのパス レベルでのカスタムx-mcp拡張機能のサポート

AIアシスタントと併用する

このツールは、AIアシスタントがOpenAPI仕様で定義されたAPIと連携できるようにするMCPサーバーを作成します。主な使用方法は、AIアシスタントをMCPツールとして直接実行するように設定することです。

Claude Desktopでの設定

  1. コンピュータにNode.jsがインストールされていることを確認してください
  2. Claude Desktopを開き、「設定」>「開発者」に移動します。
  3. 設定ファイルを編集します (存在しない場合は作成されます)。
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  4. 次の構成を追加します (必要に応じてカスタマイズします)。
{ "mcpServers": { "api-tools": { "command": "npx", "args": [ "-y", "@tyktechnologies/api-to-mcp", "--spec", "https://petstore3.swagger.io/api/v3/openapi.json" ], "enabled": true } } }
  1. Claudeデスクトップを再起動します
  2. チャット入力ボックスにハンマーアイコンが表示されます。クリックしてAPIツールにアクセスしてください。

設定のカスタマイズ

args配列を調整して、さまざまなオプションを使用して MCP サーバーをカスタマイズできます。

{ "mcpServers": { "my-api": { "command": "npx", "args": [ "-y", "@tyktechnologies/api-to-mcp", "--spec", "./path/to/your/openapi.json", "--overlays", "./path/to/overlay.json,https://example.com/api/overlay.json", "--whitelist", "getPet*,POST:/users/*", "--targetUrl", "https://api.example.com" ], "enabled": true } } }

カーソルでの設定

  1. 次のいずれかの場所に構成ファイルを作成します。
    • プロジェクト固有: プロジェクトディレクトリ内の.cursor/mcp.json
    • グローバル: ホームディレクトリの~/.cursor/mcp.json
  2. 次の構成を追加します (API に合わせて必要に応じて調整してください)。
{ "servers": [ { "command": "npx", "args": [ "-y", "@tyktechnologies/api-to-mcp", "--spec", "./path/to/your/openapi.json" ], "name": "My API Tools" } ] }
  1. カーソルを再起動するか、ウィンドウを再読み込みします

Vercel AI SDKを使用する

Vercel AI SDK の MCP クライアントを使用して、この MCP サーバーを JavaScript/TypeScript アプリケーションで直接使用することもできます。

import { experimental_createMCPClient } from 'ai'; import { Experimental_StdioMCPTransport } from 'ai/mcp-stdio'; import { generateText } from 'ai'; import { createGoogleGenerativeAI } from '@ai-sdk/google'; // Initialize the Google Generative AI provider const google = createGoogleGenerativeAI({ apiKey: process.env.GOOGLE_API_KEY, // Set your API key in environment variables }); const model = google('gemini-2.0-flash'); // Create an MCP client with stdio transport const mcpClient = await experimental_createMCPClient({ transport: { type: 'stdio', command: 'npx', // Command to run the MCP server args: ['-y', '@tyktechnologies/api-to-mcp', '--spec', 'https://petstore3.swagger.io/api/v3/openapi.json'], // OpenAPI spec env: { // You can set environment variables here // API_KEY: process.env.YOUR_API_KEY, }, }, }); async function main() { try { // Retrieve tools from the MCP server const tools = await mcpClient.tools(); // Generate text using the AI SDK with MCP tools const { text } = await generateText({ model, prompt: 'List all available pets in the pet store using the API.', tools, // Pass the MCP tools to the model }); console.log('Generated text:', text); } catch (error) { console.error('Error:', error); } finally { // Always close the MCP client to release resources await mcpClient.close(); } } main();

構成

構成は、環境変数、コマンドライン オプション、または JSON 構成ファイルを介して管理されます。

コマンドラインオプション

# Start with specific OpenAPI spec file @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json # Apply overlays to the spec @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json --overlays=./path/to/overlay.json,https://example.com/api/overlay.json # Include only specific operations (supports glob patterns) @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json --whitelist="getPet*,POST:/users/*" # Specify target API URL @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json --targetUrl=https://api.example.com # Add custom headers to all API requests @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json --headers='{"X-Api-Version":"1.0.0"}' # Disable the X-MCP header @tyktechnologies/api-to-mcp --spec=./path/to/openapi.json --disableXMcp

環境変数

これらは.envファイルで設定することも、環境内で直接設定することもできます。

  • OPENAPI_SPEC_PATH : OpenAPI 仕様ファイルへのパス
  • OPENAPI_OVERLAY_PATHS : JSON ファイルをオーバーレイするためのコンマ区切りのパス
  • TARGET_API_BASE_URL : API呼び出しのベースURL(OpenAPIサーバーをオーバーライド)
  • MCP_WHITELIST_OPERATIONS : 含める操作IDまたはURLパスのカンマ区切りリスト( getPet*GET:/pets/*などのglobパターンをサポート)
  • MCP_BLACKLIST_OPERATIONS : 除外する操作IDまたはURLパスのカンマ区切りリスト(globパターンをサポート、ホワイトリストが使用されている場合は無視されます)
  • API_KEY : 対象APIのAPIキー(必要な場合)
  • SECURITY_SCHEME_NAME : APIキーを必要とするセキュリティスキームの名前
  • SECURITY_CREDENTIALS : 複数のスキームのセキュリティ資格情報を含むJSON文字列
  • CUSTOM_HEADERS : すべてのAPIリクエストに含めるカスタムヘッダーを含むJSON文字列
  • HEADER_* : HEADER_で始まる環境変数はカスタム ヘッダーとして追加されます (例: HEADER_X_API_Version=1.0.0ヘッダーX-API-Version: 1.0.0を追加します)
  • DISABLE_X_MCP : trueに設定すると、すべてのAPIリクエストにX-MCP: 1ヘッダーを追加できなくなります。
  • CONFIG_FILE : JSON設定ファイルへのパス

JSON構成

環境変数やコマンドラインオプションの代わりに、JSON設定ファイルを使用することもできます。MCPサーバーは以下の順序で設定ファイルを検索します。

  1. --configコマンドラインオプションで指定されたパス
  2. CONFIG_FILE環境変数で指定されたパス
  3. 現在のディレクトリのconfig.json
  4. 現在のディレクトリにあるopenapi-mcp.json
  5. 現在のディレクトリの.openapi-mcp.json

JSON 構成ファイルの例:

{ "spec": "./path/to/openapi-spec.json", "overlays": "./path/to/overlay1.json,https://example.com/api/overlay.json", "targetUrl": "https://api.example.com", "whitelist": "getPets,createPet,/pets/*", "blacklist": "deletePet,/admin/*", "apiKey": "your-api-key", "securitySchemeName": "ApiKeyAuth", "securityCredentials": { "ApiKeyAuth": "your-api-key", "OAuth2": "your-oauth-token" }, "headers": { "X-Custom-Header": "custom-value", "User-Agent": "OpenAPI-MCP-Client/1.0" }, "disableXMcp": false }

説明コメント付きの完全なサンプル構成ファイルは、ルート ディレクトリのconfig.example.jsonにあります。

構成の優先順位

構成設定は、次の優先順位(最高から最低)で適用されます。

  1. コマンドラインオプション
  2. 環境変数
  3. JSON設定ファイル

発達

インストール

# Clone the repository git clone <repository-url> cd openapi-to-mcp-generator # Install dependencies npm install # Build the project npm run build

ローカルテスト

# Start the MCP server npm start # Development mode with auto-reload npm run dev

独自のバージョンをカスタマイズして公開する

このリポジトリをベースに、OpenAPI to MCPサーバーを独自にカスタマイズして作成できます。このセクションでは、リポジトリをフォークし、特定のAPIに合わせてカスタマイズし、パッケージとして公開する方法について説明します。

フォークとカスタマイズ

  1. リポジトリをフォークする: GitHub でこのリポジトリをフォークして、カスタマイズできる独自のコピーを作成します。
  2. OpenAPI 仕様を追加します:
    # Create a specs directory if it doesn't exist mkdir -p specs # Add your OpenAPI specifications cp path/to/your/openapi-spec.json specs/ # Add any overlay files cp path/to/your/overlay.json specs/
  3. デフォルト設定を構成する: パッケージにバンドルされるカスタム構成ファイルを作成します。
    # Copy the example config cp config.example.json config.json # Edit the config to point to your bundled specs # and set any default settings
  4. package.json を更新します:
    { "name": "your-custom-mcp-server", "version": "1.0.0", "description": "Your customized MCP server for specific APIs", "files": [ "dist/**/*", "config.json", "specs/**/*", "README.md" ] }
  5. 仕様がバンドルされていることを確認する: package.json のfilesフィールド (上記に表示) により、公開されたパッケージに仕様と構成ファイルが含まれるようになります。

GitHubワークフローのカスタマイズ

このリポジトリには、npmへの自動公開のためのGitHub Actionsワークフローが含まれています。フォークしたリポジトリに合わせてカスタマイズするには、以下の手順を実行してください。

  1. ワークフロー名を更新します。必要に応じて.github/workflows/publish-npm.yamlを編集して名前を更新します。
    name: Publish My Custom MCP Package
  2. パッケージスコープを設定する (必要な場合) : npm 組織スコープで公開する場合は、ワークフロー ファイルのスコープ行のコメントを解除して変更します。
    - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "18" registry-url: "https://registry.npmjs.org/" # Uncomment and update with your organization scope: scope: "@your-org"
  3. npm トークンの設定: フォークされたリポジトリの設定で、 NPM_TOKENという名前の GitHub シークレットとして npm トークンを追加します。

カスタマイズしたパッケージの公開

リポジトリをカスタマイズしたら、次の操作を行います。

  1. タグを作成してプッシュする:
    # Update version in package.json (optional, the workflow will update it based on the tag) npm version 1.0.0 # Push the tag git push --tags
  2. GitHub Actions は次のようになります:
    • パッケージを自動的にビルドする
    • タグと一致するようにpackage.jsonのバージョンを更新します
    • バンドルされた仕様と設定をnpmに公開する

出版後の使用

カスタマイズされたパッケージのユーザーは、npm を使用してインストールして使用できます。

# Install your customized package npm install your-custom-mcp-server -g # Run it your-custom-mcp-server

構成セクションで説明されているように、環境変数またはコマンドライン オプションを使用してデフォルト設定を上書きできます。

ライセンス

マサチューセッツ工科大学

-
security - not tested
A
license - permissive license
-
quality - not tested

OpenAPI/Swagger 仕様から MCP (Model Context Protocol) サーバーを作成し、AI アシスタントが API と対話できるようにするツール。

  1. Overview
    1. Features
      1. Using with AI Assistants
        1. Setting Up in Claude Desktop
        2. Customizing the Configuration
        3. Setting Up in Cursor
        4. Using with Vercel AI SDK
      2. Configuration
        1. Command Line Options
        2. Environment Variables
        3. JSON Configuration
        4. Configuration Precedence
      3. Development
        1. Installation
        2. Local Testing
        3. Customizing and Publishing Your Own Version
      4. Usage After Publication
        1. License
          ID: i5336b36ae