mcpField
M
mcp-anything

mcp-anything

ローカル
dror-bengal.github.io開発ツール310 週間前に更新

mcp-anything について

mcp-anything は、個別に設定せずに MCP サーバーを検索・呼び出したい人向けのメタ MCP サーバーです。公開レジストリを索引化し、検索・調査・呼び出しのツールを提供しながら、接続ポリシーを明示的に適用します。

主な機能

  1. 01索引化された MCP レジストリの検索
  2. 02サーバー情報とツールの確認
  3. 03下流サーバーのツール呼び出し
  4. 04レジストリエントリーの重複排除と順位付け
  5. 05接続と実行ポリシーの適用

活用シーン

  1. 01必要な機能を持つサーバーの検索
  2. 02接続前のサーバーツール確認
  3. 03単一の MCP 設定を介した下流ツールの呼び出し
  4. 04検索専用のレジストリエンドポイントのホスト

MCP 対応

MCP クライアントに、他の MCP サーバーを検索・調査・呼び出すメタツールを提供します。下流接続にはポリシーが適用され、セッションは再利用されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dror-bengal-mcp-anything": {
"command": "npx",
"args": [
"-y",
"mcp-anything"
]
}
}
}
起動コマンドnpx -y mcp-anything

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-anything0.2.0

ツール

5

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
limitintegerいいえ結果の最大数(デフォルトは 5)
querystringはい実行したい操作。例:'query postgres database' または 'send slack message'。

詳細

mcp-anything

CI npm License: MIT Node >= 20

世界中のほぼあらゆる MCP サーバーを検出して呼び出せる、単一の MCP サーバーです。

mcp-anything のデモ:ターミナルから MCP エコシステムを検索

mcp-anything はメタ MCP サーバーです。ホスト(Claude Desktop、Claude Code、Cursor など)に多数の MCP サーバーを設定する代わりに、1つだけ設定します。 公式 MCP レジストリ をローカルでインデックス化し、モデルがサーバーを検索、調査し、そのツールをその場で呼び出せる5つの小さなメタツールを提供します。数千ものツールスキーマをコンテキストウィンドウに読み込む必要はありません。

Host / LLM
    │  (5 meta-tools, constant context cost)
    ▼
mcp-anything ──── local BM25 index ◄──┬── official MCP registry   (moderated, richest metadata)
    │        (cross-source dedupe,    ├── PulseMCP    (~22k servers, stars & downloads)
    │         popularity-boosted      ├── npm         (~67k packages tagged mcp)
    │         ranking)                └── Glama       (~75k indexed servers)
    │
    │  security policy: SSRF guard · stdio allowlist · secrets injection · timeouts
    ▼
downstream MCP servers   (streamable-http / sse / stdio via npx·uvx)

概要

  • 検出:MCP サーバーは数千ありますが、ホストが認識するのは、手動で設定したものだけです。
  • コンテキスト:多数のサーバーを読み込むと、コンテキストウィンドウを消費します。メタツールを使えばコストを一定に保てます。モデルは2段階(検索 → 調査 → 呼び出し)で機能を探します。これは Anthropic の Tool Search が使うのと同じパターンです。
  • 設定は1つ:サーバーごとに設定する代わりに、MCP クライアントの設定に1つだけ項目を追加します。

クイックスタート

# Run directly (Node >= 20):
npx mcp-anything sync     # first-time index download (~few seconds)
npx mcp-anything serve    # start the meta-MCP server on stdio
Claude Code
claude mcp add anything -- npx -y mcp-anything serve
Claude Desktop/その他のホスト
{
  "mcpServers": {
    "anything": {
      "command": "npx",
      "args": ["-y", "mcp-anything", "serve"]
    }
  }
}

あとは、「Postgres に問い合わせできる MCP サーバーを探して、そのツールを一覧表示して」 のようにモデルに尋ねるだけです。モデルが自動的にメタツールを使います。

HTTP モードとホスト型の検出
mcp-anything serve --http                    # streamable HTTP on :8080 (POST /mcp)
mcp-anything serve --http --discovery-only   # safe for public hosting: search/describe only

実行を有効にした公開インスタンスはオープンプロキシになってしまいます。インスタンス全体を公開でホストしないでください。 まさにこの理由から、Dockerfile はデフォルトで検出専用に設定されています。ホスト型の検出インスタンスを使えば、どの MCP クライアントからでもエコシステムを検索できます。実際に接続してツールを呼び出す場合は、ローカルインストールを使用してください。

CLI
mcp-anything sync             # refresh the registry index
mcp-anything search "weather" # search the index from your terminal
mcp-anything serve            # stdio MCP server (default command)

メタツール

ツール説明
search_mcp_serversインデックス化されたレジストリを対象に、キーワード検索(BM25 + あいまい検索)を行います。接続可否の判定とともに候補を返します。
describe_mcp_serverトランスポート、パッケージ、必須の環境変数/シークレット、ポリシー判定など、レジストリのメタデータ全体を返します。
list_mcp_toolsポリシーに従って実際に接続し、サーバーが提供するツールと JSON スキーマを一覧表示します。
call_mcp_tool下流サーバー上のツールを1つ実行します。セッションはプールされ、再利用されます。
sync_registryインデックスを強制的に更新します(それ以外の場合は、TTL の期限切れ時に自動更新されます)。

セキュリティモデル

公開レジストリにある任意のサーバーへ LLM を接続するのは、デフォルトでは危険です。mcp-anything は保守的なデフォルト設定を採用し、緩和する設定を明示できるようにしています。

  • リモートサーバー(streamable-http / sse):接続を許可しますが、プライベート/ループバック/リンクローカルアドレス(169.254.169.254 などのクラウドメタデータエンドポイントを含む)と、平文の http: はブロックされます。これにより、ネットワーク内を指すレジストリエントリを対象とした SSRF 対策を行います。remote.allowPrivateNetwork で無効にできます(ローカル開発時のみ使用してください)。
  • Stdio サーバー(npx / uvx プロセスの起動):デフォルトでは無効です。 公開レジストリからパッケージを実行すると、マシン上で任意のコードが実行されます。有効にする場合は、パッケージごとの許可リストを明示的に設定してください。
  • シークレット:API キーがインデックス化されたり、モデルに公開されたりすることはありません。設定でサーバーごとに割り当てると、接続時に注入されます(リモートの場合はヘッダー、stdio の場合は環境変数)。
  • 信頼できない出力:下流サーバーからの結果とツールの説明には、サードパーティのデータであることを示すラベルが付けられます。そのため、モデルはそれらを指示ではなくデータとして扱います。これによりプロンプトインジェクションのリスクは軽減されますが、なくなるわけではありません。SECURITY.md を参照してください。
  • 制限:接続/呼び出しのタイムアウト、応答サイズの切り詰め、上限付きのセッションプール。

設定

~/.config/mcp-anything/config.json(または --config <path>、あるいは MCP_ANYTHING_CONFIG):

{
  "registryUrl": "https://registry.modelcontextprotocol.io",
  "sources": ["official"],
  "qualityFilter": true,
  "cacheTtlHours": 24,
  "maxServers": 10000,
  "policy": {
    "remote": {
      "enabled": true,
      "allowPrivateNetwork": false,
      "headers": {
        "io.github.example/github": { "Authorization": "Bearer ghp_..." }
      }
    },
    "stdio": {
      "enabled": false,
      "allowPackages": ["@modelcontextprotocol/server-filesystem"],
      "env": {
        "io.github.example/postgres": { "DATABASE_URL": "postgres://..." }
      }
    },
    "limits": {
      "callTimeoutMs": 60000,
      "connectTimeoutMs": 20000,
      "maxSessions": 8,
      "maxResultChars": 100000
    }
  }
}

すべてのフィールドは省略可能です。上記のデフォルト値(例のヘッダーと環境変数を除く)は、設定ファイルがない場合に適用されます。registryUrl は、プライベート/セルフホスト型を含む、公式 REST API を実装する任意のレジストリを指定できます。

インデックスのソース — 対象範囲を広げる

sources は、インデックス化するエコシステムの範囲を制御します。

ソース規模追加される内容
official (デフォルト)数千件最も豊富なメタデータ(トランスポート、環境変数、バージョン)を備えた、審査済みのエントリー
pulsemcp約22,000件幅広いカタログと GitHub のスター数・ダウンロード数(ランキングに反映)
npmタグ付きパッケージ約67,000件stdio サーバーの最大規模の生データプールと月間ダウンロード数
glama約75,000件最も幅広いインデックス(ベストエフォートのアダプター)
{ "sources": ["official", "pulsemcp", "npm"] }

複数のカタログに掲載されているエントリーは、正規化したリポジトリ URL とパッケージ識別子によって重複排除されます。最も信頼性の高いソースが識別情報として採用され、ほかのソースからメタデータが補完され、スター数とダウンロード数が合算されます。その後、BM25 の関連度と対数スケールの人気度ブースト(および公式レジストリーのエントリーへのボーナス)を組み合わせてランキングを算出します。そのため、search_mcp_servers は、放棄されたクローンが何百と並ぶ中から、機能を実現するためのメンテナンスされている実装を見つけられます。qualityFilter(デフォルトで有効)は、接続手段がなく、利用可能な説明もないエントリーを除外します。幅広いソースを使う場合、不要なものが上位5件に入らないのであれば、件数が多いほど有用です。ソースの取得に失敗しても、同期処理はほかのソースから取得できたデータを保持し、失敗を報告するため、機能は段階的に低下します。

設計上の注記

  • 埋め込みではなく、字句検索を採用。 完全にローカルで動作し、API コストはゼロ、インデックス構築の手順も不要です。ツールの検索では、ファジーマッチングを組み合わせたキーワード検索が実際に同等の性能を発揮します(Anthropic の Tool Search も BM25/正規表現を採用しています)。
  • ステートレスな呼び出しではなく、セッションを採用。 MCP はセッション指向です(初期化ハンドシェイク、ケイパビリティのネゴシエーション)。下流の接続はプール化され、LRU 方式で退避しながら呼び出し間で再利用されます。
  • 段階的に機能を低下。 レジストリに接続できない場合も、最後に同期したキャッシュで動作し続けます。

先行事例と位置付け

この分野は活発です。MetaMCP などのゲートウェイは設定したサーバーを集約し、Composio の Rube は独自の厳選カタログへルーティングします。また、ホスト側でもネイティブのツール検索が広がりつつあります。mcp-anything の独自性は、公開レジストリをカタログとして使うこと、ローカル優先の単一バイナリであること、明示的なセキュリティポリシーを備えることを組み合わせた点にあります。クラウドアカウントは不要で、キュレーションによる囲い込みもなく、プライベートレジストリを使ったセルフホストにも対応します。

ロードマップ

  • ヘルスチェックのリアルタイム実行と、結果の品質を示すシグナルのランキングへの反映
  • 人気サーバーの tools/list をインデックス化し、サーバー単位だけでなくツール単位でも検索
  • OAuth フローを必要とするリモートサーバー向けのパススルー
  • 許可リスト方式の代替として、stdio サーバーをコンテナー/Wasm でサンドボックス化
  • フェデレーションと重複排除に対応した複数レジストリ
  • オプションの streamable-http サービングモード(チーム共有でのデプロイ向け)

開発

npm install
npm test              # unit + end-to-end (mock registry + real downstream MCP server)
npm run typecheck
npm run build
node scripts/smoke.mjs  # spawns the built CLI as a real stdio MCP server

CONTRIBUTING.md を参照してください。MIT ライセンスです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。