🐰

MCPizerでREST API/gRPCをAIアシスタントから呼び出し可能にする

に公開

MCPizerでREST API/gRPCをAIアシスタントから呼び出し可能にする

こんにちは。今回は、拙作の MCPizer というMCPサーバーをご紹介します。

このMCPサーバーを使うと、既存のREST APIやgRPCサービスを、Claude DesktopなどのAIアシスタントから呼び出せるようになります。設定に従ってAPIのスキーマ(OpenAPI/Swagger、gRPC reflection)を検出し、MCP(Model Context Protocol)ツールに変換することで実現しています。

https://github.com/i2y/mcpizer

はじめに

最近、さまざまなAIアシスタントが開発現場や日常業務で活用されることが増えてきました。AIアシスタントは強力な言語理解能力を持っていますが、実際の業務では「社内のAPIを呼んで在庫を確認する」「顧客データベースを検索する」といった、AIアシスタントの外側にある外部システムとの連携が必要になることがよくあります。

しかし、その連携のためにAIアシスタントに外部APIを呼び出させるには、MCPサーバー(MCPツール)を作る必要があります。以下のような作業フローになるかと思います。

  • AIアシスタントから呼び出すためのMCPツール定義を作成し
  • APIの仕様に合わせてパラメータをマッピングし
  • エラーハンドリングを実装し
  • 認証情報を管理して…

というフローは、APIごとに実装が必要で手間がかかります。

そこで登場するのが、今回ご紹介する MCPizer です。
既存のAPIに変更を加えることなく、OpenAPIスキーマやgRPC reflectionから自動的にMCPツールを生成し、AIアシスタントから呼び出し可能にします。

MCPizerとは?

MCPizer は以下の特徴を持ったMCPサーバーです。

  • 自動スキーマ検出
    REST APIのOpenAPI/Swaggerスキーマ、gRPCサービスのreflectionを自動的に検出

  • MCPツールへの自動変換
    検出したAPIスキーマをMCP(Model Context Protocol)のツール定義に変換し、MCPツールとしてMCPクライアントに提供(MCPクライアントがそのツールを呼び出すとMCPizerが対応するAPIを呼び出してレスポンスをMCPクライアントに返す)

  • 型安全なAPI呼び出し
    パラメータの型チェックやエラーハンドリングを自動的に処理

  • 既存APIへの変更不要
    FastAPI、Spring Boot、Express、gRPCなど、スキーマを公開している任意のAPIに対応

  • GitHubとの統合
    GitHub上のOpenAPIスキーマや設定ファイルを直接読み込み可能

つまり、「既存のAPIがあれば、設定ファイルに追加するだけでAIアシスタントから呼び出せるようになる」という、シンプルな仕組みです。

動作イメージ

インストール

Go言語で実装されているため、go installコマンドでインストールできます。

# MCPizerをインストール
go install github.com/i2y/mcpizer/cmd/mcpizer@latest

# インストールの確認
mcpizer --help

今はしていないのですが、需要があれば実行可能バイナリをGitHub Actionsワークフローでビルドするようにするかもしれません。

使い方:Claude Desktopとの連携

Claude DesktopでMCPizerを使う例を見てみましょう。

1. 設定ファイルの作成

MCPizerは複数の方法で設定を管理できます。

# ~/mcpizer.yaml または任意の場所に作成
schema_sources:  
  # 直接スキーマURLを指定
  - https://api.example.com/openapi.json
  
  # GitHub上のスキーマを使用
  - github://myorg/api-specs/main/user-api.yaml
  - github://OAI/OpenAPI-Specification/examples/v3.0/petstore.yaml@v3.0.0
  
  # gRPCサービス(reflectionが有効な必要あり)
  - grpc://my-grpc-service:50051
  
  # FastAPIアプリ - /openapi.json を自動検出
  - http://my-fastapi-app:8000
  
  # ローカル開発用
  - http://localhost:3000

2. Claude Desktopの設定

Claude Desktopの設定ファイルにMCPizerを追加します。

{
  "mcpServers": {
    "mcpizer": {
      "command": "mcpizer",
      "args": ["-transport=stdio", "-config=/path/to/your/config.yaml"]
    }
  }
}

設定ファイルの場所:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

3. 動作確認

Claude Desktopを再起動し、以下のように質問してみましょう。

  • 「利用可能なAPIを教えて」
  • 「Fluffyという名前の新しいペットを作成して」
  • 「在庫状況を確認して」

MCPizerが設定したAPIを自動的に呼び出し、結果を返してくれます。

下記スクショはペットストアAPI(OpenAPI)と https://grpcb.in のHelloServiceを実際にMCPizerを使って呼び出している例です。

ペットストアには swaggerapi/petstore3:latest のイメージを使ったサーバーを使用しています。

ペットストア

Hello

少し進んだ使い方

認証が必要なAPIの場合

schema_sources:
  # オブジェクト形式でヘッダーを指定
  - url: https://api.example.com/openapi.json
    headers:
      Authorization: "Bearer YOUR_API_TOKEN"
      X-API-Key: "YOUR_API_KEY"

GitHub統合

MCPizerはgh CLIを使用してGitHub上のスキーマを直接読み込めます。

schema_sources:
  # プライベートリポジトリのスキーマも利用可能
  - github://mycompany/private-api-specs/services/billing-api.yaml
  
  # 特定のブランチやタグを指定
  - github://myorg/api-definitions/v2/order-api.yaml@release-2.0

設定ファイル自体もGitHubから読み込めます。

# GitHub上の設定ファイルを使用
mcpizer -config=github://myorg/configs/mcpizer-prod.yaml

# または環境変数で指定
export MCPIZER_CONFIG_FILE=github://myorg/configs/mcpizer.yaml
mcpizer

必要な準備:

  • GitHub CLIのインストール: brew install gh (macOS) または 公式ドキュメント参照
  • 認証: gh auth login

外部ホストのスキーマファイルを使用

APIサーバーとは別の場所にあるOpenAPIスキーマも利用できます。

schema_sources:
  # 架空のドキュメントサイトにあるスキーマ
  - https://docs.company.com/api/v1/openapi.yaml
  
  # ローカルのスキーマファイル
  - ./schemas/third-party-api.yaml

OpenAPIスキーマ内の servers セクションから実際のAPIサーバーURLを読み取り、そこにリクエストを送信します。

設定ファイルの管理

MCPizerは以下の優先順位で設定ファイルを探します。

  1. -config コマンドラインフラグ(最優先)
  2. MCPIZER_CONFIG_FILE 環境変数
  3. configs/mcpizer.yaml(デフォルト)
# コマンドラインで設定ファイルを指定
mcpizer -config=./my-config.yaml

# 環境変数で指定
export MCPIZER_CONFIG_FILE=/etc/mcpizer/production.yaml
mcpizer

# デバッグログを有効化
export MCPIZER_LOG_LEVEL=debug
mcpizer

トラブルシューティング

"No tools available" と表示される

  • APIが起動しているか確認
  • 直接スキーマURLを指定してみる
  • デバッグログを確認:MCPIZER_LOG_LEVEL=debug mcpizer -transport=stdio

gRPC "connection refused"

  • gRPCサーバーでreflectionが有効になっているか確認
  • grpcurlコマンドで確認:grpcurl -plaintext localhost:50051 list

"Schema not found at base URL"

  • 正確なスキーマパスを指定
  • APIがOpenAPIを公開しているか確認

GitHub URLが機能しない

  • gh auth status でGitHub CLIの認証状態を確認
  • プライベートリポジトリの場合、適切なアクセス権限があるか確認

まとめ

拙作の MCPizer をご紹介しました。既存のREST APIやgRPCサービスを、コードを変更することなくAIアシスタントから呼び出し可能にできるMCPサーバーです。

社内APIとAIアシスタントを連携させたい、開発中のAPIをすぐにAIから試したい、といったケースで活用いただけるかもしれません。

興味を持たれた方は、ぜひ MCPizerのGitHubリポジトリ をチェックしていただけると幸いです。
https://github.com/i2y/langchaingo-mcp-adapter と組み合わせて使用していただくのも面白いかもしれません。

Discussion