open-api-mcp について
open-api-mcp は、既存 API を MCP クライアントに公開したい開発者向けのコマンドラインツールです。OpenAPI 仕様から MCP サーバーを生成し、Zod ベースの型安全な API クライアントも作成します。
主な機能
- 01OpenAPI 仕様から MCP サーバーを生成
- 02JSON と YAML の仕様に対応
- 03Zod ベースの API クライアント生成
- 04環境変数または Docker Compose による設定
- 05認証方式のカスタマイズ
活用シーン
- 01既存の OpenAPI 操作を MCP ツールとして公開
- 02API リクエスト用の型安全なクライアントを生成
MCP 対応
OpenAPI 仕様から MCP サーバーを生成し、その API 操作を MCP クライアント向けのツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
open-api-mcp
Open API MCP は、OpenAPI 仕様に基づいて MCP(Model Context Protocol)サーバーを生成するコマンドラインツールです。
OpenAPI スキーマを活用し、Zod を使用して型安全なクライアントを生成することで、API クライアントとサーバーの作成プロセスを簡素化します。
機能
- OpenAPI 仕様から MCP サーバーを生成します。
- 型安全なやり取りを実現する、Zod ベースの API クライアントを自動作成します。
- JSON と YAML の両方の OpenAPI 仕様形式に対応しています。
- 環境変数または Docker Compose から簡単に設定できます。
仕組み
-
リポジトリをクローンします:
git clone https://github.com/nexpando-com/open-api-mcp.git cd open-api-mcp -
依存関係をインストールします:
bun install -
OpenAPI 仕様を準備します:
- OpenAPI スキーマをダウンロードします:
wget -q -O open-api.json https://fakestoreapi.com/fakestoreapi.json - または
curlを使用します:curl -o open-api.json https://fakestoreapi.com/fakestoreapi.json
- OpenAPI スキーマをダウンロードします:
-
環境変数を定義します:
cp .env.template .env -
MCP サーバーを起動します:
bun dev # or ./cli.sh open-api.json -
コンソール出力:
Tool loginUser added to OpenApi MCP server. Tool getAllCarts added to OpenApi MCP server. Tool addCart added to OpenApi MCP server. Tool getCartById added to OpenApi MCP server. Tool updateCart added to OpenApi MCP server. Tool deleteCart added to OpenApi MCP server. Tool getAllProducts added to OpenApi MCP server. Tool addProduct added to OpenApi MCP server. Tool getProductById added to OpenApi MCP server. Tool updateProduct added to OpenApi MCP server. Tool deleteProduct added to OpenApi MCP server. Tool getAllUsers added to OpenApi MCP server. Tool addUser added to OpenApi MCP server. Tool getUserById added to OpenApi MCP server. Tool updateUser added to OpenApi MCP server. Tool deleteUser added to OpenApi MCP server. [FastMCP info] server is running on HTTP Stream at http://localhost:3000/stream OpenApi MCP server 0.0.1 running as httpStream
Docker の設定
-
specs ディレクトリを作成します:
mkdir specs -
OpenAPI 仕様(
open-api.jsonまたはopen-api.yml)を specs ディレクトリに追加します。 -
docker-compose.yml ファイルを作成します。設定例:
services: open-api-mcp: image: nexpando/open-api-mcp container_name: open-api-mcp # ports: # - "3000:3000" volumes: - ./specs:/app/specs environment: - OPEN_API_FILE=/app/specs/open-api.json - API_URL= # Example: https://fakestoreapi.com # - API_KEY # - MCP_NAME=My MCP Server # - MCP_VERSION=1.0.0 # - MCP_TRANSPORT_TYPE=httpStream|sse|stdio -
API_URLとAPI_KEYを自身のデータに置き換えます。 -
MCP サーバーを起動します:
docker-compose up
Librechat の MCP サーバーの例
- https://github.com/danny-avila/LibreChat を参照してください。
librechat.yaml
version: 1.1.4
cache: true
...
mcpServers:
my-mcp:
type: streamable-http
url: http://my-mcp:3000/stream
mailgun:
type: streamable-http
url: http://mailgun-mcp:3000/stream
プロジェクト構成
.
├── cli.sh # CLI script to start the MCP server
├── generate-client.ts # Script to generate Zod-based API clients
├── get-input-output.ts # Utility functions for input/output paths
├── specs/ # Directory for OpenAPI specifications
├── mcp-servers/ # Example MCP server configurations
├── Dockerfile # Dockerfile for containerized deployment
├── docker-compose.yml # Example Docker Compose configuration
├── README.md # Project documentation
└── ...
認証のカスタマイズ
このプロジェクトでは HTTP リクエストに Axios を使用しており、デフォルトの認証方法は get-axios.ts ファイルで設定されています。デフォルトでは、API_KEY 環境変数から取得した Bearer トークンを使用します。
認証方法(別のヘッダー、トークンの種類、または認証方式など)をカスタマイズする必要がある場合は、get-axios.ts ファイルを上書きできます。例:
// filepath: [get-axios.ts](http://_vscodecontentref_/1)
import axios from 'axios'
export const getAxiosInstance = () => {
const options = {
headers: {
'X-Custom-Auth': 'YourCustomAuthValue',
'Content-Type': 'application/json',
},
}
const instance = axios.create(options)
return instance
}
Docker Compose での認証のカスタマイズ
このプロジェクトでは HTTP リクエストに Axios を使用しており、デフォルトの認証方法は get-axios.ts ファイルで設定されています。デフォルトでは、API_KEY 環境変数から取得した Bearer トークンを使用します。
Docker Compose を使用している場合は、カスタム版のファイルをボリュームとしてマウントすることで、get-axios.ts ファイルを上書きできます。これにより、元のソースコードを変更せずに認証方法をカスタマイズできます。
カスタマイズの手順
-
希望する認証ロジックを含むカスタム
get-axios.tsファイルを作成します。例:// filepath: ./custom/get-axios.ts import axios from 'axios' export const getAxiosInstance = () => { const options = { headers: { 'X-Custom-Auth': 'YourCustomAuthValue', 'Content-Type': 'application/json', }, } const instance = axios.create(options) return instance } -
docker-compose.ymlファイルを更新し、デフォルトのget-axios.tsファイルをカスタム版で上書きします:services: open-api-mcp: image: nexpando/open-api-mcp container_name: open-api-mcp volumes: - ./specs:/app/specs - ./custom/get-axios.ts:/app/get-axios.ts environment: - OPEN_API_FILE=/app/specs/open-api.json - API_URL= ... -
Docker Compose で MCP サーバーを起動します:
docker-compose up
get-axios.ts ファイルを上書きすることで、元のソースコードをそのまま保ちながら、API キーやカスタムヘッダーなど、さまざまな認証方式にプロジェクトを適応させることができます。
参考資料
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。