Skip to main content
Glama
quiloos39

anyapi-mcp-server

by quiloos39

anyapi-mcp-server

APIがあるなら、MCPで接続できます。

従来のMCPサーバーは、限られたエンドポイントを手作業で選択して終わりというものが多く、誰かが「これで十分」と決めたサブセットに縛られてしまいます。APIのほんの一部で妥協する必要はありません。すべてを利用しましょう。

anyapi-mcp-serverは、あらゆるREST APIをClaudeやCursorなどのLLM搭載ツールに接続するための汎用MCPサーバーです。OpenAPI仕様やPostmanコレクションを指定するだけで、APIが提供するすべてのエンドポイントが即座に利用可能になります。GraphQL形式のフィールド選択と自動スキーマ推論により、カスタムサーバーコードや人為的な制限は不要です。

npm

クイックスタート

1. インストール

npm install -g anyapi-mcp-server

2. MCPクライアントに追加 (Cursor, Claude Desktopなど)

{
  "mcpServers": {
    "your-api": {
      "command": "npx",
      "args": [
        "-y",
        "anyapi-mcp-server",
        "--name", "your-api",
        "--spec", "path/to/openapi.json",
        "--base-url", "https://api.example.com",
        "--header", "Authorization: Bearer ${API_KEY}"
      ],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}

3. ツールを使用list_apiでエンドポイントを探索し、call_apiでスキーマを検査し、query_apiでデータを取得します。

Related MCP server: OpenAPI MCP Server

プロバイダーの例

主要なAPI向けのすぐに使える設定:

プロバイダー

認証

Cloudflare

APIトークンまたはキー + メールアドレス

Datadog

APIキー + アプリキー

GitHub

個人アクセストークン

Google Workspace

OAuth 2.0

Metabase

APIキー

PostHog

個人APIキー

Slack

ボット/ユーザートークン

これらはOpenAPIまたはPostman仕様を持つあらゆるAPIで動作します。上記は単なる例です。Stripe、Twilio、Shopify、HubSpotなど、REST APIを持つ他のサービスも同様に動作します。

CLIリファレンス

必須フラグ

フラグ

説明

--name

サーバー名 (例: cloudflare)

--spec

OpenAPI仕様 (JSON/YAML) またはPostmanコレクションへのパスまたはHTTPS URL。リモートURLはローカルにキャッシュされます。${ENV_VAR}をサポート。

--base-url

APIベースURL (例: https://api.example.com)。${ENV_VAR}をサポート。

オプションフラグ

フラグ

説明

--header

"Key: Value"形式のHTTPヘッダー (繰り返し可能)。値に${ENV_VAR}をサポート。

--log

NDJSON形式のリクエスト/レスポンスログへのパス。機密ヘッダーは自動的にマスクされます。

OAuthフラグ

静的トークンの代わりにOAuth 2.0を使用するAPI用です。3つの必須フラグのうちいずれかが提供された場合、すべてが必要となります。すべてのフラグは${ENV_VAR}をサポートしています。

フラグ

必須

説明

--oauth-client-id

はい*

OAuthクライアントID

--oauth-client-secret

はい*

OAuthクライアントシークレット

--oauth-token-url

はい*

トークンエンドポイントURL

--oauth-auth-url

いいえ

認可エンドポイント (利用可能な場合は仕様から自動検出)

--oauth-scopes

いいえ

カンマ区切りのスコープ

--oauth-flow

いいえ

authorization_code (デフォルト) または client_credentials

--oauth-param

いいえ

key=value形式の追加トークンパラメータ (繰り返し可能)

完全なOAuthの例については、Google Workspaceガイドを参照してください。

ツール

このサーバーは4つのツール(OAuth設定時はauthも追加)を公開します。

list_api — エンドポイントの閲覧

APIが提供する機能を確認します。引数なしで呼び出すとすべてのカテゴリを表示し、categoryを指定するとタグ内のエンドポイントを一覧表示し、searchを指定するとキーワードでエンドポイントを検索します。

call_api — エンドポイントの検査

実際のHTTPリクエストを行い、データそのものではなく推論されたGraphQLスキーマ (SDL) を返します。これを使用してレスポンスの形状を確認し、query_apiにコピーできるsuggestedQueriesを取得します。また、フィールドごとのトークンコスト (fieldTokenCosts) とキャッシュ再利用のためのdataKeyも返します。PUT/PATCHリクエストの場合、自動的に書き込み前のバックアップを作成します (backupDataKeyを返します)。大きなペイロード用のbodyFileをサポートし、プレースホルダー値が検出されたリクエストはブロックします。

query_api — データの取得

データを取得し、GraphQLクエリを通じて選択したフィールドのみを返します。読み取りと書き込み(POST/PUT/DELETE/PATCHのミューテーション)の両方をサポートします。call_apiから取得したdataKeyを渡すことで、HTTP呼び出しなしでキャッシュされたデータを再利用できます。

# Read
{ items { id name status } _count }

# Write
mutation { post_endpoint(input: { name: "example" }) { id } }

主要なパラメータ:

  • maxTokens — レスポンスのトークン予算。配列は収まるように切り詰められます。これまたはunlimitedを指定しない場合、約10kトークンを超えるレスポンスは拒否されます。

  • unlimitedtrueに設定すると、トークン予算の制限なしで完全なレスポンスを返します。

  • dataKey — 前回のcall_apiまたはquery_apiレスポンスからキャッシュされたデータを再利用します。

  • jsonFilter — GraphQLクエリ後のネストされた値を抽出するためのドットパス (例: "data[].attributes.name")。

  • bodyFile — リクエストボディとして使用するJSONファイルへの絶対パス (bodyと排他)。インラインで送信できない大きなペイロードに使用します。

  • skipBackup — PUT/PATCHリクエストの自動バックアップをスキップします (デフォルト: false)。

explain_api — ドキュメントの読み取り

HTTPリクエストを行わずに、エンドポイントの仕様ドキュメント(パラメータ、リクエストボディスキーマ、レスポンスコード)を返します。

auth — OAuth認証

--oauth-*フラグが設定されている場合のみ利用可能です。OAuthフローを管理します。

  • action: "start" — 認可URLを返します (またはclient_credentialsの場合は認証情報を交換します)

  • action: "exchange" — 認可コードフローを完了します (コールバックは自動的にキャプチャされます)

  • action: "status" — 現在のトークン状態を表示します

トークンは永続化され、自動的に更新されます。

一般的なワークフロー

list_api          → discover what's available
     ↓
explain_api       → read the docs for an endpoint
     ↓
call_api          → inspect the response schema (returns dataKey)
     ↓
query_api         → fetch exactly the fields you need (pass dataKey for zero HTTP calls)
     ↓
query_api         → re-query with different fields using the same dataKey

仕組み

OpenAPI/Postman spec
        │
        ▼
   ┌─────────┐  ┌─────────────┐  ┌──────────┐  ┌───────────┐
   │list_api │  │ explain_api │  │ call_api │  │ query_api │
   │(browse) │  │   (docs)    │  │ (schema) │  │  (data)   │
   └─────────┘  └─────────────┘  └──────────┘  └───────────┘
        │          │ no HTTP          │               │
        ▼          ▼ request          ▼               ▼
   Spec index   Spec index     REST API call    dataKey cache
   (tags,       (params,       (with retry)     hit → no HTTP
    paths)       responses,         │            miss → fetch
                 body schema)       ▼               │
                               Infer schema +       ▼
                               return dataKey   Execute GraphQL
                                                + token budget
                                                  truncation

機能

  • あらゆるREST API — OpenAPI (JSON/YAML) またはPostman Collection v2.x仕様をファイルまたはURLで提供

  • リモート仕様キャッシュ — HTTPS仕様は一度取得され、~/.cache/anyapi-mcp/にキャッシュされます

  • GraphQLフィールド選択 — あらゆるレスポンスから必要なフィールドのみをクエリ

  • スキーマ推論 — ライブAPIレスポンスからGraphQLスキーマを自動構築

  • マルチサンプルマージ — 最大10個の配列要素をサンプリングしてよりリッチなスキーマを作成

  • ミューテーションサポート — 書き込み操作はOpenAPIボディスキーマから型付きGraphQLミューテーションを取得

  • スマートな提案call_apiは推論されたスキーマに基づいたすぐに使えるクエリを返します

  • レスポンスキャッシュ — 5分TTLのファイルシステムベースのキャッシュ。dataKeyトークンによりquery_apiはHTTP呼び出しなしでデータを再利用可能

  • トークン予算query_apiはデフォルトで約10kトークンの安全制限を適用。maxTokensで最も深い大きな配列を切り詰めるか、unlimited: trueで完全なレスポンスを取得

  • フィールドごとのトークンコストcall_apifieldTokenCostsツリーを返し、LLMが情報に基づいたフィールド選択を行えるようにします

  • レート制限追跡X-RateLimit-*ヘッダーを解析し、制限が近づくと警告

  • ページネーション検出 — レスポンス内のカーソル、next-page-token、リンクベースのページネーションパターンを自動検出

  • JSONフィルターquery_apiはクエリ後の抽出用にjsonFilterドットパスを受け付けます (例: "data[].name")

  • バックオフ付きリトライ — 429/5xxエラーに対して指数バックオフとRetry-Afterサポートによる自動リトライ

  • マルチフォーマット — JSON、XML、CSV、プレーンテキストのレスポンスを解析

  • 安全な書き込み — PUT/PATCHリクエストは書き込み前にリソースを自動スナップショット (backupDataKey)。プレースホルダー値 (例: PLACEHOLDER, TODO, file://) は送信前に検出・ブロック

  • ファイルベースのボディbodyFileパラメータはJSONファイルへの絶対パスを受け付け、インライン送信できない大きなペイロードを可能にします

  • リッチなエラー — ステータス固有の提案と仕様コンテキストを含む構造化されたエラーメッセージ

  • OAuth 2.0 — 自動トークン更新を備えた認可コード (PKCE) およびクライアント資格情報フロー

  • 環境変数補間 — ベースURL、ヘッダー、仕様パス内での${ENV_VAR}

  • リクエストログ — 機密ヘッダーマスク付きのオプションのNDJSONログ

サポートされている仕様フォーマット

  • OpenAPI 3.x (JSONまたはYAML)

  • OpenAPI 2.0 / Swagger (JSONまたはYAML)

  • Postman Collection v2.x (JSON)

ライセンス

プロプライエタリ非商用。個人および教育目的は無料。商用利用には書面による許可が必要です。詳細はLICENSEを参照してください。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Automatically converts Swagger/OpenAPI specifications into MCP servers, enabling AI agents to interact with any REST API through natural language by exposing endpoints as AI-friendly tools.
    3
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A generic MCP server that dynamically converts OpenAPI-defined REST APIs into tools for LLMs like Claude. It supports multiple authentication methods and transport protocols, enabling seamless interaction with any OpenAPI-compliant API.
    20 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A generic MCP server that dynamically exposes any OpenAPI-documented REST API to LLMs by auto-discovering endpoints. It provides tools for exploring API capabilities and making authenticated requests directly through natural language interfaces.
    2
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A generic MCP server that converts any OpenAPI/Swagger specification into MCP tools, enabling AI assistants to search, explore, and execute REST APIs.
    MIT