mcpField
M
Mcpjungle Mcp Gateway

Mcpjungle Mcp Gateway

ローカル
docs.mcpjungle.comAI・エージェント1.3k2 日前に更新

Mcpjungle Mcp Gateway について

MCPJungle は、開発者やチームが複数の MCP サーバーを一度登録し、単一のエンドポイントから公開できるセルフホスト型の MCP ゲートウェイです。Claude や Cursor などのクライアントは、個々のサーバーではなくこのエンドポイントに接続します。個人のローカル利用にも、集中的な検出、アクセス制御、可観測性を備えた共有基盤としても使えます。

主な機能

  1. 01複数の登録済み MCP サーバーへの単一エンドポイント
  2. 02MCP サーバーの一元的な登録と管理
  3. 03ツール、プロンプト、リソースの統合された検出
  4. 04クライアントごとに表示するツールを絞るツールグループ
  5. 05可観測性のための OpenTelemetry 対応

活用シーン

  1. 01単一エンドポイント経由で Claude Desktop から複数のツールを利用
  2. 02チーム内での MCP サーバー共有と集中的なアクセス制御
  3. 03クライアント設定を重複させずにローカルの MCP 環境を再現

MCP 対応

MCPJungle 自体が MCP ゲートウェイであり、/mcp で streamable HTTP のエンドポイントを提供して、登録済み MCP サーバーのツール、プロンプト、リソースを集約します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mcpjungle-mcpjungle": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"pull"
]
}
}
}
起動コマンドdocker run -i --rm pull

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

パッケージ
ocipull

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCPJungle

すべての MCP サーバーを 1 つのエンドポイントの背後で実行

ドキュメント GHCR Discord

MCPJungle は、クライアント設定の分散、セットアップの重複、アクセス制御の不統一を避けながら複数の MCP サーバーを管理したい開発者やチーム向けの、セルフホスト可能な MCP ゲートウェイです。

個人用 MCP セットアップを整理するためにローカルで使用することも、検出、アクセス制御、可観測性を一元化したチーム向けの共有インフラストラクチャとして実行することもできます。

図

すべての MCP サーバーを各 AI クライアントに個別に接続する代わりに、サーバーを一度だけ MCPJungle に登録すれば、Claude、Cursor、Codex、または独自のエージェントから単一の MCP エンドポイントに接続できます。

MCPJungle を選ぶ理由

MCP は強力ですが、多数の MCP サーバーを管理するのはすぐに複雑になります。

ゲートウェイがない場合:

  • 🔌 各クライアントにそれぞれ独自の MCP サーバー設定が必要です
  • 🧩 ツール、プロンプト、リソースが異なるサーバーに分散します
  • 🔐 アクセス制御が重複していたり、設定されていなかったりします
  • 👥 チームで利用可能な MCP ツールを共有して確認できません
  • 🛠️ ローカルのセットアップを再現するのが難しくなります

MCPJungle は、管理を一元化する場所を提供します:

  • 🌐 Claude、Cursor、Copilot、カスタムエージェント向けの単一の MCP エンドポイント
  • 🗂️ MCP サーバーの登録と管理を行う場所を一本化
  • 🔎 ツール、プロンプト、リソースを統合して検出
  • 🎛️ クライアントに表示するツールだけを公開する、任意のツールグループ
  • 📊 共有環境向けのシンプルなアクセス制御と可観測性のフック

まずはローカル環境で始めましょう。必要に応じて、チームで共有するゲートウェイへ拡張できます。

MCPJungle ダッシュボード UI

ドキュメント

MCPJungle のドキュメントは、新しい場所に移動しました:https://docs.mcpjungle.com。

最新のガイド、リファレンス、運用に関する詳細については、この README ではなくドキュメントサイトをご覧ください。

AI クライアントからも、MCP サーバー https://docs.mcpjungle.com/mcp を使用してドキュメントにアクセスできます!

クイックスタート

このクイックスタートガイドでは、次の方法を説明します:

  1. docker compose を使用して mcpjungle サーバーをローカルで起動する
  2. mcpjungle に MCP サーバーを追加する
  3. Claude Desktop を mcpjungle に接続して MCP ツールにアクセスする
サーバーを起動する

docker-compose.yaml を取得し、mcpjungle サーバーを起動します:

curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml
docker compose up -d

デフォルトでは、mcpjungle のストリーム可能な HTTP MCP サーバーが http://localhost:8080/mcp で公開されます。

MCP サーバーを追加する
  1. brew を使用するか、リリースページから直接、ローカルマシンに mcpjungle CLI をダウンロードします。
brew install mcpjungle/mcpjungle/mcpjungle
  1. CLI を使用して、context7 MCP サーバーを mcpjungle に追加します:
mcpjungle register --name context7 --url https://mcp.context7.com/mcp

次のような出力が表示されます:

context7 の登録

mcpjungle に接続する

Claude Desktop で、mcpjungle MCP サーバーの設定を追加します。

{
  "mcpServers": {
    "mcpjungle": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8080/mcp",
        "--allow-http"
      ]
    }
  }
}

設定を追加したら、claude に簡単な質問をしてみましょう。

Use context7 to get the documentation for `/lodash/lodash`

Claude は MCPJungle 経由で context7__get-library-docs ツールを呼び出そうとします。このツールは Lodash ライブラリのドキュメントを返します。

claude が mcpjungle 経由で context7 ツールを呼び出す

これで、単一の統合エンドポイントを使った MCP 環境が動作するようになりました!

続いて、docs.mcpjungle.com の完全なドキュメントと公開ロードマップをご覧ください。


以前の README の参考情報

📋 目次

インストール

MCPJungle はスタンドアロンバイナリとして提供されています。

Releases ページからダウンロードするか、Homebrew を使ってインストールできます。

brew install mcpjungle/mcpjungle/mcpjungle

次のコマンドを実行して、インストールを確認します。

mcpjungle version

重要

MacOS では、コンパイル済みバイナリがまだ公証されていないため、Homebrew を使用する必要があります。

MCPJungle は、レジストリサーバーの実行に便利な Docker イメージを提供しています(詳細は後述します)。

docker pull ghcr.io/mcpjungle/mcpjungle

使い方

MCPJungle はクライアント・サーバーアーキテクチャを採用しており、バイナリを使ってサーバーとクライアントの両方を実行できます。

サーバー

MCPJungle サーバーは、登録されたすべての MCP サーバーを管理し、AI エージェントがそれらのサーバーで提供されるツールを検出して呼び出せるように、統合 MCP ゲートウェイを提供します。

ゲートウェイは Streamable HTTP トランスポートで動作し、/mcp エンドポイントからアクセスできます。

Docker 内での実行

MCPJungle サーバーをローカルで実行するには、docker compose を使う方法がおすすめです。

# docker-compose.yaml is optimized for individuals running mcpjungle on their local machines for personal use.
# mcpjungle will run in `development` mode by default.
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml

docker compose up -d

# docker-compose.prod.yaml is optimized for orgs deploying mcpjungle on a remote server for multiple users.
# mcpjungle will run in `enterprise` mode by default, which enables enterprise features.
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.prod.yaml

docker compose -f docker-compose.prod.yaml up -d

メモ

enterprise モードは以前、production モードと呼ばれていました。 わかりやすさのため、モード名が変更されました。それ以外に変更はありません。

これにより、MCPJungle サーバーと永続化された Postgres データベースコンテナーが起動します。

サーバーが実行中であることは、次のようにすばやく確認できます。

curl http://localhost:8080/health

npx または uvx に依存する stdio ベースの MCP サーバーを登録する場合は、代わりに mcpjungle の stdio タグ付き Docker イメージを使用してください。

MCPJUNGLE_IMAGE_TAG=latest-stdio docker compose up -d

メモ

docker-compose.yaml を使用している場合、これはすでにデフォルトのイメージタグです。 docker-compose.prod.yaml を使用している場合に限り、stdio イメージタグを指定する必要があります。

このイメージは大幅にサイズが大きくなります。ただし、stdio ベースの MCP サーバーを利用する場合、ローカルでの実行に非常に便利で、おすすめです。

たとえば、context7 や deepwiki などのリモート MCP サーバーだけを登録する場合は、標準の(最小構成の)イメージを使用できます。

一方、filesystem、time、github などの stdio ベースのサーバーも使用する場合は、代わりに stdio タグ付きイメージを使用してください。

メモ

stdio サーバーが npx や uvx 以外のツールに依存する場合は、それらの依存関係と mcpjungle バイナリを含むカスタム Docker イメージを作成する必要があります。

本番環境へのデプロイ

デフォルトの MCPJungle Docker イメージは非常に軽量で、最小限のベースイメージと mcpjungle バイナリのみを含みます。

そのため、本番環境へのデプロイに適しており、おすすめです。

データベースには、別途 Postgres DB クラスターをデプロイし、そのエンドポイントを mcpjungle に指定することをおすすめします(下記のデータベースのセクションを参照してください)。

標準の Docker イメージとstdio Docker イメージの定義を確認できます。

ホスト上で直接実行

バイナリを使って、ホストマシン上でサーバーを直接実行することもできます。

mcpjungle start

これにより、メインのレジストリサーバーと MCP ゲートウェイが起動します。デフォルトではポート 8080 でアクセスできます。

シャットダウン

適切にクリーンアップできるよう、mcpjungle サーバーを正常にシャットダウンすることが重要です。

サーバープロセスを停止するには、SIGTERM シグナルを送信する方法をおすすめします。

データベース

mcpjungle サーバーはデータベースを使用し、デフォルトでは現在の作業ディレクトリに SQLite DB ファイル mcpjungle.db を作成します。

ローカルで試すだけであれば、これで問題ありません。

PostgreSQL の設定またはカスタム SQLite パスを指定しない場合、mcpjungle は ./mcpjungle.db を使用します。

SQLite DB ファイルのカスタムパスを設定することもできます。

mcpjungle start --sqlite-db-path ./.mcpjungle.db

# or
export SQLITE_DB_PATH=/path/to/.mcpjungle.db
mcpjungle start

注意:この SQLite ファイルを削除すると、登録済みのサーバーデータと、ファイルに保存されているその他すべての MCPJungle の状態が削除されます。

より本格的なデプロイでは、mcpjungle は Postgresql にも対応しています。接続用の DSN を指定できます。

# You can supply the database DSN as an env var
export DATABASE_URL=postgres://admin:root@localhost:5432/mcpjungle_db

#run as container
docker run ghcr.io/mcpjungle/mcpjungle:latest

# or run directly
mcpjungle start

DSN を使わない場合は、Postgres 固有の環境変数またはファイルを指定することもできます。

# host is mandatory if you're using postgres-specific env vars
export POSTGRES_HOST=localhost
export POSTGRES_PORT=5432

export POSTGRES_USER=admin
export POSTGRES_USER_FILE=/path/to/user-file

export POSTGRES_PASSWORD=secret
export POSTGRES_PASSWORD_FILE=/path/to/password-file

export POSTGRES_DB=mcpjungle_db
export POSTGRES_DB_FILE=/path/to/db-file

mcpjungle start

クライアント

サーバーが起動したら、mcpjungle CLI を使って操作できます。

MCPJungle は現在、stdio と Streamable HTTP のトランスポートを使用する MCP サーバーに対応しています。

メモ

SSE(server-sent events)にも対応していますが、現時点ではまだ成熟していません。

mcpjungle に登録する方法を見ていきましょう。

ストリーミング可能な HTTP ベースのサーバーの登録

すでに、http://127.0.0.1:8000/mcp でローカルにストリーミング可能な HTTP MCP サーバーを実行していて、add、subtract などの基本的な数学ツールを提供しているとします。

この MCP サーバーは、次のように MCPJungle に登録できます。

mcpjungle register --name calculator --description "Provides some basic math tools" --url http://127.0.0.1:8000/mcp

docker compose を使ってサーバーを実行していて、Linux 以外の環境を使用している場合は、ローカルのループバックアドレスの代わりに host.docker.internal を使用する必要があります。

mcpjungle register --name calculator --description "Provides some basic math tools" --url http://host.docker.internal:8000/mcp

レジストリは、この MCP サーバーの追跡を開始し、ツールを読み込みます。

MCPJungle での MCP サーバーの登録

設定ファイルを指定して MCP サーバーを登録することもできます。

cat ./calculator.json
{
  "name": "calculator",
  "transport": "streamable_http",
  "description": "Provides some basic math tools",
  "url": "http://127.0.0.1:8000/mcp"
}

mcpjungle register -c ./calculator.json

このサーバーが提供するすべてのツールに、MCPJungle 経由でアクセスできるようになりました。

mcpjungle list tools

# Check tool usage
mcpjungle usage calculator__multiply

# Call a tool
mcpjungle invoke calculator__multiply --input '{"a": 100, "b": 50}'

MCPJungle プロキシ MCP サーバー経由でのツール呼び出し

メモ

MCPJungle 内のツールは、<mcp-server-name>__<tool-name> のパターンに従う正式名称で参照する必要があります。 サーバー名とツール名は、二重アンダースコア __ で区切られます。

例:git_commit というツールを提供する MCP サーバー github を登録した場合、MCPJungle では github__git_commit という名前で呼び出せます。

MCP クライアントが MCPJungle 経由でツールを呼び出す際にも、この正式名称を使用する必要があります。

ストリーミング可能な HTTP ベースの MCP サーバーを登録するための設定ファイル形式は、次のとおりです。

{
  "name": "<name of your mcp server>",
  "transport": "streamable_http",
  "description": "<description>",
  "url": "<url of the mcp server>",
  "bearer_token": "<optional bearer token for authentication>",
  "headers": {
    "<custom http header>": "<value>"
  }
}
STDIO ベースのサーバーの登録

STDIO トランスポートを使用する MCP サーバーの設定ファイル(ここでは filesystem.json とします)の例を示します。

{
  "name": "filesystem",
  "transport": "stdio",
  "description": "filesystem mcp server",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}

設定ファイルを指定すると、この MCP サーバーを MCPJungle に登録できます。

# Save the JSON configuration to a file (e.g., filesystem.json)
mcpjungle register -c ./filesystem.json

STDIO ベースの MCP サーバーを登録するための設定ファイル形式は、次のとおりです。

{
  "name": "<name of your mcp server>",
  "transport": "stdio",
  "description": "<description>",
  "command": "<command to run the mcp server, eg- 'npx', 'uvx'>",
  "args": ["arguments", "to", "pass", "to", "the", "command"],
  "env": {
    "KEY": "value"
  }
}

STDIO ベースの MCP サーバーを登録する方法の短い動画もご覧いただけます。

ヒント

STDIO サーバーが何らかの理由で失敗したりエラーを出したりする場合は、mcpjungle サーバーのログを確認して、stderr の出力を表示してください。

JSON 設定ファイル内の環境変数

JSON 設定ファイルを使って MCP サーバーを登録したり、ツールグループなどのエンティティを作成したりする場合、CLI はサーバーにリクエストを送信する前に、文字列値内の環境変数プレースホルダーを解決できます。

  • ${VAR_NAME} の形式で記述されたプレースホルダーのみが解決されます。
  • プレースホルダーは、prefix-${VAR_NAME}-suffix のように文字列値のどこにでも記述できます。
  • 解決処理は CLI プロセス内で行われるため、コマンドの実行場所で環境変数を利用できる必要があります。
  • 参照先の環境変数が設定されていない場合、コマンドはエラーで失敗します。
  • これは、ネストされたオブジェクトや文字列配列を含む、JSON 設定内のすべての文字列フィールドに適用されます。

MCP サーバー設定の例:

{
  "name": "affine-main",
  "transport": "streamable_http",
  "description": "AFFiNE workspace MCP server",
  "url": "https://app.affine.pro/api/workspaces/${AFFINE_WORKSPACE_ID}/mcp",
  "bearer_token": "${AFFINE_API_TOKEN}",
  "headers": {
    "X-Workspace": "${AFFINE_WORKSPACE_ID}"
  }
}

STDIO 設定の例:

{
  "name": "my-stdio-server",
  "transport": "stdio",
  "command": "uvx",
  "args": ["my-server", "--workspace", "${WORKSPACE_ID}"],
  "env": {
    "API_TOKEN": "${API_TOKEN}"
  }
}

注意点 ⚠️

Docker 内で mcpjungle を実行する場合、filesystem MCP サーバーを実行するには追加の設定が必要です。

デフォルトでは、コンテナ内の mcpjungle からホストのファイルシステムにアクセスできません。

そのため、次の設定が必要です。

  • アクセスしたいホストディレクトリを、コンテナ内のボリュームとしてマウントする
  • filesystem MCP サーバーのコマンド引数で、マウント先のパスをディレクトリとして指定する

mcpjungle が提供する docker-compose.yaml は、現在の作業ディレクトリをコンテナ内の /host にマウントします。

そのため、filesystem MCP サーバーには次の設定を使用できます。

{
  "name": "filesystem",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "/host"]
}

これにより、MCP から /host、つまりホストマシン上の現在の作業ディレクトリにアクセスできます。

詳細については、DEVELOPMENT.md を参照してください。

Docker または Kubernetes のデプロイメントから CLI コマンドを実行する

MCPJungle サーバーがリモートの Docker コンテナまたは Kubernetes クラスターで実行されている場合は、コンテナ内で mcpjungle バイナリを直接実行することもできます。

docker exec -it <container_name> /mcpjungle
kubectl -n <namespace> exec -it po/<pod_name> -- /mcpjungle

メモ

標準イメージにはシェルが含まれていません。docker exec または kubectl exec から /mcpjungle を直接実行してください。

これは、サーバーが実行されている環境と同じ環境から CLI コマンドを実行する場合に便利です。

MCP サーバーの登録解除

mcpjungle から MCP サーバーを削除できます。

mcpjungle deregister calculator
mcpjungle deregister filesystem

削除すると、この MCP サーバーとそのツールは、あなたや MCP クライアントから利用できなくなります。

カスタムレジストリ URL の設定

デフォルトでは、CLI は http://127.0.0.1:8000 の mcpjungle サーバーに接続します。

サーバーが別のホストまたはポート(例:リモート環境)で実行されている場合、次の 2 つの方法でレジストリ URL を設定できます。

オプション 1:--registry フラグを使用する

mcpjungle --registry http://my-server:9000 list tools

オプション 2:設定ファイルで設定する

~/.mcpjungle.conf を作成または編集します。

registry_url: http://my-server:9000

これにより、コマンドを実行するたびに --registry フラグを指定する必要がなくなります。

コールドスタート問題とステートフル接続

デフォルトでは、MCPJungle はツールが呼び出されるたびに、アップストリームの MCP サーバーへの新しい接続を作成します。

ツールの呼び出しが完了すると、接続は閉じられます。

これにより、システムがクリーンに保たれ、メモリーリークを防止できます。

ただし、レイテンシーのオーバーヘッドが発生する場合があります。たとえば、STDIO ベースの MCP サーバーのツールを呼び出すたびに、新しいプロセスが起動します。サーバーの起動に数秒かかる場合、ツールの呼び出しと対話全体が遅くなります。

この問題を解決するため、MCPJungle はステートフル接続もサポートしています。

MCP サーバーの設定で session_mode を stateful に設定できます(デフォルトは stateless です)。

{
  "name": "filesystem",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
  "session_mode": "stateful"
}

mcpjungle は、この MCP サーバーのツールを初めて呼び出したときに、新しい接続を作成します。

ツールの呼び出しが完了しても、この接続は閉じられません。それ以降にこのサーバーのツールを呼び出すと、同じ接続が再利用され、コールドスタートによるオーバーヘッドを回避できます。

接続が閉じられるのは、次の場合のみです。

  1. mcpjungle サーバーが停止したとき
  2. MCP サーバーが mcpjungle から登録解除されたとき
  3. 一定時間操作がない状態が続き、接続がタイムアウトしたとき。SESSION_IDLE_TIMEOUT_SEC 環境変数を使用して、mcpjungle サーバー全体のタイムアウト秒数を設定できます(デフォルト値は -1 で、タイムアウトしないことを意味します)。

可能な場合は、ステートレス接続(デフォルト設定)を使用することをお勧めします。

他の MCP クライアントとの統合

MCPJungle が http://localhost:8080 で実行されている場合、次の設定を使用して接続します。

Claude
{
  "mcpServers": {
    "mcpjungle": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8080/mcp",
        "--allow-http"
      ]
    }
  }
}
Cursor
{
  "mcpServers": {
    "mcpjungle": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

Cursor を MCPJungle に接続する方法の短い動画をご覧いただけます。

Copilot

Copilot のドキュメントにある手動で MCP サーバーを設定する方法に従ってください。

mcpjungle を追加した後の mcp.json 設定ファイルは、次のようになります。

{
  "servers": {
    "mcpjungle": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

メモ

Copilot が実際に mcpjungle との対話を開始するには、Start をクリックする必要がある場合があります。

ツールの有効化/無効化

特定のツール、または MCP サーバーが提供するすべてのツールを無効化および再有効化できます。

ツールが無効化されている場合、MCPJungle プロキシやツールグループから利用できないため、MCP クライアントはそのツールを表示したり呼び出したりできません。

プロンプトも無効化および有効化できます。

# disable the `get-library-docs` tool provided by the `context7` MCP server
mcpjungle disable tool context7__get-library-docs

# re-enable the tool
mcpjungle enable tool context7__get-library-docs

# disable all tools in context7
mcpjungle disable tool context7

# disable the whole `context7` MCP server (disables all tools & prompts)
mcpjungle disable server context7

# re-enable `context7`
mcpjungle enable server context7

# disable a prompt
mcpjungle disable prompt "huggingface_Model Details"

# disable all prompts in context7
mcpjungle disable prompt context7

無効化されたツールも mcpjungle の HTTP API からは引き続きアクセスできるため、人間は CLI(または他の HTTP クライアント)から管理できます。

メモ

MCPJungle に新しいサーバーを登録すると、そのすべてのツールとプロンプトはデフォルトで有効になります。

プロンプト

Mcpjungle はプロンプトをサポートしています。

新しい MCP サーバーを登録したとき、そのサーバーがプロンプトを提供していれば、それらも mcpjungle に登録されます。

CLI を使用してプロンプトを操作する方法を、いくつか例として紹介します。

# list all prompts provided by the huggingface mcp
$ mcpjungle list prompts --server huggingface

# Retrieve the "Model Details" prompt, supply custom arguments
$ mcpjungle get prompt "huggingface__Model Details" --arg model_id="openai/gpt-oss-120b"

ツールグループ

MCPJungle に MCP サーバーを追加するにつれて、ゲートウェイ経由で利用できるツールの数が大幅に増えることがあります。

MCP クライアントがゲートウェイ MCP 経由で数百ものツールに公開されていると、パフォーマンスが低下する可能性があります。

MCPJungle では、ツールグループを使って、利用可能なすべてのツールのうち一部だけを MCP クライアントに公開できます。

新しいグループを作成し、公開したい特定のツールだけを含めることができます。

グループが作成されると、mcpjungle はそのグループ専用の一意なエンドポイントを返します。

その後、メインのゲートウェイエンドポイントの代わりに、このグループ専用エンドポイントを使うように MCP クライアントを設定できます。

ツールグループの作成

create group コマンドに JSON 設定ファイルを渡すことで、新しいツールグループを作成できます。

グループに一意の name を指定し、以下のフィールドのうち1つ以上を使って含めるツールを定義する必要があります。

  • included_tools:含める特定のツール名のリスト(例:["filesystem__read_file", "time__get_current_time"])
  • included_servers:特定の MCP サーバーにあるすべてのツールを含めます(例:["time", "deepwiki"])
  • excluded_tools:除外する特定のツール(サーバー全体を含める場合に便利です)
例1:特定のツールを選択

ツールグループ設定ファイル(claude-tools-group.json)の例を示します。

{
  "name": "claude-tools",
  "description": "This group only contains tools for Claude Desktop to use",
  "included_tools": [
    "filesystem__read_file",
    "deepwiki__read_wiki_contents",
    "time__get_current_time"
  ]
}

このグループでは、利用可能なすべてのツールではなく、厳選した3つのツールだけを公開します。

例2:除外設定を使ってサーバー全体を含める

特定のサーバーにあるすべてのツールを含め、一部を任意で除外することもできます。

{
  "name": "claude-tools",
  "description": "All tools from time and deepwiki servers except time__convert_time",
  "included_servers": ["time", "deepwiki"],
  "excluded_tools": ["time__convert_time"]
}

これにより、time__convert_time を除く、time サーバーと deepwiki サーバーのすべてのツールが含まれます。

例3:方法を組み合わせる

柔軟性を最大限に高めるため、3つのフィールドすべてを組み合わせることができます。

{
  "name": "comprehensive-tools",
  "description": "Mix of manual tools, server inclusion, and exclusions",
  "included_tools": ["filesystem__read_file"],
  "included_servers": ["time"],
  "excluded_tools": ["time__convert_time"]
}

これにより、filesystem__read_file と、time__convert_time を除く time サーバーのすべてのツールが含まれます。

mcpjungle でこのグループを作成できます。

$ mcpjungle create group -c ./claude-tools-group.json

Tool Group claude-tools created successfully
It is now accessible at the following streamable http endpoint:

    http://127.0.0.1:8080/v0/groups/claude-tools/mcp

その後、Claude(またはその他の MCP クライアント)が MCP サーバーにアクセスする際に、このグループ専用エンドポイントを使うように設定できます。

クライアントにはこの3つのツールだけが表示され、使用できるようになります。MCPJungle に登録されているほかのツールは認識されません。

ヒント

mcpjungle list tools を実行すると、利用可能なすべてのツールを表示し、グループに含めるツールを選べます。

ツールグループの使用方法に関する動画もご覧ください。

メモ

除外は常に最後に適用されます。 そのため、ツールを included_tools に追加し、同時に excluded_tools にも指定した場合、そのツールは最終的なグループから除外されます。

制限事項 🚧

プロンプトは、現在ツールグループではサポートされていません。この問題の修正に取り組んでいます 🛠️

ツールグループの管理

現在、すべてのグループの一覧表示、特定のグループの詳細表示、グループの削除などの操作を実行できます。

# list all tool groups
mcpjungle list groups

# view details of a specific group
mcpjungle get group claude-tools

# delete a group
mcpjungle delete group claude-tools
グループ内のツールの操作

--group フラグを使って、特定のグループ内のツールを一覧表示したり、実行したりできます。

# list tools in a specific group
mcpjungle list tools --group claude-tools

# invoke a tool from a specific group context
mcpjungle invoke filesystem__read_file --group claude-tools --input '{"path": "README.md"}'

これらのコマンドを使うと、グループのスコープ内で操作できます。特定のコンテキスト内のツールを扱いやすくなり、グループでツールを利用できることも確認できます。

メモ

ツールがグループに含まれていても、後からグローバルに無効化されたり削除されたりすると、グループの MCP エンドポイント経由では利用できません。

ただし、そのツールが再度有効化または追加されると、グループ内で自動的に再び利用できるようになります。

制限事項 🚧

  1. 現在、既存のツールグループは更新できません。グループを削除し、変更した設定ファイルで新しいグループを作成する必要があります。
  2. enterprise モードでは、現在、ツールグループを作成できるのは管理者のみです。一般ユーザーも独自のグループを作成できるよう、対応に取り組んでいます。

認証

MCPJungle は現在、Streamable HTTP MCP サーバーが認証用の静的トークンを受け付ける場合に認証をサポートしています。

これは、認証に API トークンが必要な HuggingFace、Stripe などの SaaS 提供 MCP サーバーを使用する際に便利です。

MCP サーバーの登録時にトークンを指定できます:

# If you specify the `--bearer-token` flag, MCPJungle will add the `Authorization: Bearer <token>` header to all requests made to this MCP server.
mcpjungle register --name huggingface --description "HuggingFace MCP Server" --url https://huggingface.co/mcp --bearer-token <your-hf-api-token>

または、設定ファイルから指定できます

{
  "name": "huggingface",
  "transport": "streamable_http",
  "url": "https://huggingface.co/mcp",
  "description": "hugging face mcp server",
  "bearer_token": "<your-hf-api-token>"
}

Authorization ヘッダーにカスタム値を指定したり、追加のカスタムヘッダーを設定したりする必要がある場合は、設定ファイルの headers フィールドを使用できます:

{
  "name": "sourcegraph",
  "transport": "streamable_http",
  "url": "https://sourcegraph.mycompany.com/.api/mcp",
  "headers": {
    "Authorization": "token <your-sourcegraph-token>",
    "Custom-Header": "custom-value"
  }
}

OAuth フローのサポートは近日中に追加予定です!

エンタープライズ機能 🔒

組織内で MCPJungle を実行する場合は、サーバーを enterprise モードで実行することをおすすめします:

# enable enterprise features by running in enterprise mode
mcpjungle start --enterprise

# you can also specify the server mode as environment variable (valid values are `development` and `enterprise`)
export SERVER_MODE=enterprise
mcpjungle start

# Or use the enterprise-mode docker compose file as described above
docker compose -f docker-compose.prod.yaml up -d

デフォルトでは、mcpjungle サーバーは development モードで実行されます。このモードは、ローカルで実行する個人の利用に適しています。

エンタープライズモードでは、サーバーにより厳格なセキュリティポリシーが適用され、認証、ACL、可観測性などの追加機能が提供されます。

サーバーをエンタープライズモードで起動した後、クライアントマシンで次のコマンドを実行して初期化する必要があります:

mcpjungle init-server

これにより、サーバーに管理者ユーザーが作成され、その API アクセストークンがホームディレクトリ(~/.mcpjungle.conf)に保存されます。

その後、mcpjungle CLI を使用して、サーバーに認証済みリクエストを送信できます。

アクセス制御

development モードでは、すべての MCP クライアントが MCPJungle プロキシに登録されたすべての MCP サーバーにフルアクセスできます。

enterprise モードでは、どの MCP クライアントがどの MCP サーバーにアクセスできるかを制御できます。

エンタープライズモードの MCPJungle に、calculator と github という 2 つの MCP サーバーを登録したとします。

デフォルトでは、どの MCP クライアントもこれらのサーバーにアクセスできません。mcpjungle で MCP クライアントを作成し、アクセスを許可する MCP サーバーを明示的に指定する必要があります。

# Create a new MCP client for your Cursor IDE to use. It can access the calculator and github MCP servers
mcpjungle create mcp-client cursor-local --allow "calculator, github"

MCP client 'cursor-local' created successfully!
Servers accessible: calculator,github

Access token: 1YHf2LwE1LXtp5lW_vM-gmdYHlPHdqwnILitBhXE4Aw
Send this token in the `Authorization: Bearer {token}` HTTP header.

Mcpjungle はクライアント用のアクセストークンを作成します。 mcpjungle プロキシへのリクエスト時に、このトークンを Authorization ヘッダーで送信するようにクライアントまたはエージェントを設定してください。

ヒント

--access-token フラグを使用して、MCP クライアントやユーザーアカウントにカスタムアクセストークンを指定することもできます。 中央の ID サーバーを介してトークンを管理する場合など、トークンを独自に管理したいときに便利です。

たとえば、Cursor に次の設定を追加すると、MCPJungle に接続できます:

{
  "mcpServers": {
    "mcpjungle": {
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer 1YHf2LwE1LXtp5lW_vM-gmdYHlPHdqwnILitBhXE4Aw"
      }
    }
  }
}

この方法で特定のサーバーへのアクセス権を持つクライアントは、そのサーバーが提供するすべてのツールを表示して呼び出すことができます。

メモ

--allow フラグを指定しない場合、MCP クライアントはどの MCP サーバーにもアクセスできません。

設定ファイルからの MCP クライアントの作成

JSON 設定ファイルを指定して MCP クライアントを作成することもできます:

{
	"name": "foobar",
	"allowed_servers": ["deepwiki", "time"],
	"access_token": "my_secret_token_123",
    "access_token_ref": {
        "file": "/path/to/token-file.txt",
        "env": "ENV_VAR_NAME"
    }
}

設定ファイルからクライアントを作成する場合、mcpjungle は生成されたトークンをコンソールに出力できないため、カスタムアクセストークンを必ず指定してください。

設定ファイルでのカスタムアクセストークンの指定

設定ファイルでアクセストークンを指定する方法は 3 つあります:

  1. access_token フィールドに直接指定する方法:テスト目的に限って使用してください。本番環境では、特に設定ファイルをバージョン管理にコミットする場合はおすすめしません。
  2. access_token_ref.file フィールドを使用してファイルから読み込む方法:ファイルにはトークン文字列のみを含めてください。
  3. access_token_ref.env フィールドを使用して環境変数から読み込む方法:環境変数にはトークン文字列を設定してください。

同じ JSON 設定ファイル内の別の箇所でも、${VAR_NAME} プレースホルダーを使用できます。たとえば:

{
  "name": "${MCP_CLIENT_NAME}",
  "allowed_servers": ["${PRIMARY_SERVER}", "time"],
  "access_token_ref": {
    "env": "CLIENT_TOKEN_ENV_NAME"
  }
}
ユーザーアカウントの作成

MCP クライアントに加えて、人間のユーザー向けに mcpjungle でユーザーアカウントを作成することもできます。

エンタープライズモードでは、ユーザーが持つ権限は管理者と比べて非常に限られています。 たとえば、MCP サーバーの表示や使用はできますが、mcpjungle での書き込み権限はありません。

# Auto-generates a secret for user
mcpjungle create user bob
# Specify a custom access token for user
mcpjungle create user alice --access-token alice_token_123
# Create user from config file
mcpjungle create user --conf /path/to/user-config.json

ユーザーを作成するための設定ファイルの形式は、MCP クライアントのものと似ています。

{
    "name": "charlie",
    "access_token": "charlies_secret_token",
    "access_token_ref": {
        "file": "/path/to/token-file.txt",
        "env": "ENV_VAR_NAME"
    }
}

繰り返しになりますが、設定ファイルを使用する場合は、カスタムアクセストークンを必ず指定してください。

MCPJungle のほかの JSON 設定ファイルと同様に、ユーザー設定ファイルでも文字列フィールドに ${VAR_NAME} プレースホルダーを使用できます。

OpenTelemetry

MCPJungle は、可観測性のために Prometheus 互換の OpenTelemetry メトリクスをサポートしています。

  • enterprise モードでは、OpenTelemetry はデフォルトで有効です。
  • development モードでは、テレメトリーはデフォルトで無効です。有効にするには、サーバーを起動する前に OTEL_ENABLED 環境変数を true に設定します。
# enable OpenTelemetry metrics
export OTEL_ENABLED=true

# optionally, set additional attributes to be added to all metrics
export OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=enterprise

# start the server
mcpjungle start

mcpjungle サーバーを起動すると、/metrics エンドポイントでメトリクスを利用できます。

現在の制限事項 🚧

まだ完璧ではありませんが、改善に向けて懸命に取り組んでいます!

1. MCPJungle は認証用の OAuth フローをまだサポートしていません

現在対応を進めています。

MCP サーバーで OAuth をどのように利用しているか、皆さんからのフィードバックを集めています。ユースケースを共有するために、ディスカッションを始めたり、イシューを作成したりしてください。

貢献 💻

コミュニティからの貢献を歓迎します!

  • 貢献ガイドラインと基準については、CONTRIBUTION.md をご覧ください
  • 開発環境のセットアップと技術的な詳細については、DEVELOPMENT.md をご覧ください

Discord コミュニティに参加して、ほかのコントリビューターやメンテナーと交流しましょう。

コメント

MCP は初めてですか?

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

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