mcpField
M
MCP-Compose-Proxy-Shim

MCP-Compose-Proxy-Shim

ローカル
github.com/phildougherty開発ツール377 週間前に更新

MCP-Compose-Proxy-Shim について

Claude Desktop などのローカル MCP クライアントを、Docker 上で稼働する MCP-Compose サーバーに接続する Node.js ブリッジです。ローカルのプロトコル要求を MCP-Compose プロキシ経由でコンテナ内のサーバーへ転送します。

主な機能

  1. 01ローカルクライアントとリモートサーバーを接続
  2. 02MCP-Compose プロキシ経由で要求を転送
  3. 03API キー認証に対応
  4. 04キャッシュ、再試行、ログの設定
  5. 05パスと要求サイズの制限

活用シーン

  1. 01Claude Desktop から Docker 上のサーバーを利用
  2. 02ローカルクライアントを MCP-Compose プロキシに接続
  3. 03デバッグログで転送要求を確認

MCP 対応

クライアントにはローカル MCP サーバーのインターフェースを提供し、要求を MCP-Compose プロキシへ転送します。プロキシが Docker 上の MCP サーバーと通信します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MCP-Compose-Proxy-Shim

Docker コンテナで実行されているリモート MCP-Compose サーバーに、ローカルの LLM クライアント(Claude Desktop など)を接続するブリッジです。

🚀 概要

MCP-Compose-Proxy-Shim を使うと、MCP サーバーをローカルで実行する想定の LLM クライアントから、コンテナ化された MCP サーバーを利用できます。透過的なブリッジとして動作し、ローカルの MCP サーバー呼び出しを受け取り、リモートの MCP-Compose プロキシに転送します。

主なメリット:

  • Docker コンテナで実行されている MCP サーバーを Claude Desktop で利用できます
  • 有料のリモート MCP サーバーの制約やコストを回避できます
  • Docker ベースの MCP サーバーのパワーと柔軟性を最大限に活用できます
  • filesystem、memory、weather など、さまざまな MCP サーバーで動作します

このプロジェクトは、Docker コンテナで Model Context Protocol(MCP)サーバーを実行するツールである MCP-Compose との連携を目的としています。

📋 必要条件

  • Node.js v14 以降
  • Claude Desktop またはその他の MCP 対応 LLM クライアント
  • プロキシを実行中の MCP-Compose(MCP-Compose を参照)

🔧 インストール

  1. このリポジトリをクローンします:

    git clone https://github.com/phildougherty/mcp-compose-proxy-shim.git
    cd mcp-compose-proxy-shim
    
  2. 依存関係をインストールします:

    npm install
    
  3. スクリプトを実行可能にします:

    chmod +x bin/npx lib/mcp-shim.js
    

🔌 設定

Claude Desktop の設定

「Import Servers」機能を利用するには Claude Max プランが必要なため、Claude の設定ファイルを手動で編集する必要があります。

  1. Claude Desktop の設定ディレクトリを確認します:

    • macOS:~/Library/Application Support/Claude
    • Windows:%APPDATA%\Claude
    • Linux:~/.config/Claude
  2. MCP サーバーの設定ファイルを作成または編集します:

    • 設定ディレクトリに claude_desktop_config.json というファイルを作成します
    • 次の内容を追加します(環境に合わせてパスを変更してください):
{
  "mcpServers": {
    "filesystem": {
      "command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/phildougherty/Documents",
        "/Users/phildougherty/Downloads"
      ]
    },
    "memory": {
      "command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
  1. 重要:設定ファイルを編集した後、Claude Desktop を再起動してください。

🚀 使い方

先に MCP-Compose をセットアップする
  1. まず、MCP-Compose がインストールされ、実行中であることを確認します:

    cd /path/to/mcp-compose
    ./mcp-compose up
    ./mcp-compose proxy
    

    これにより、Docker コンテナ内の MCP サーバーと、ポート 9876 のプロキシが起動します。

環境変数

Claude Desktop を実行する前に、次の環境変数を設定します。

変数説明デフォルト
MCP_PROXY_URLMCP-Compose プロキシの URLhttp://localhost:9876
MCP_API_KEY認証用 API キー""
MCP_DEBUGデバッグ出力を有効にするfalse
MCP_LOG_LEVELログレベル(trace、debug、info、warn、error)info
MCP_CACHE応答キャッシュを有効にするtrue
MCP_CACHE_TTL_MSキャッシュの TTL(ミリ秒)300000(5 分)
MCP_MAX_RETRIES最大再試行回数3
MCP_LOG_FILEファイルへのログ出力を有効にするfalse

🔍 仕組み

  1. bin/npx スクリプトが、Claude が通常ローカルで実行する MCP サーバーへの呼び出しを受け取ります
  2. 実際のサーバーを実行する代わりに、lib/mcp-shim.js スクリプトを起動します
  3. shim は想定どおり、stdin/stdout を介して Claude と通信します
  4. 裏では、すべてのリクエストを MCP-Compose プロキシに転送します
  5. プロキシが、Docker コンテナとの実際の通信を処理します
  6. 結果はプロキシを経由して shim に戻り、さらに Claude に渡されます

📝 ログ

ログは次の場所に出力されます:

  • MCP_DEBUG=true の場合はコンソール(stderr)
  • MCP_LOG_FILE=true の場合はファイル /tmp/mcp-shim-[server].log

🔒 セキュリティ機能

  • ディレクトリトラバーサルを防止するパスのサニタイズ
  • 不正利用を防止するレート制限
  • リクエストサイズの制限
  • API キーによる認証
  • 安全なエラー処理

📚 関連プロジェクト

🤝 コントリビューション

コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。

📄 ライセンス

このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

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

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