mcpField
C
Central MCP Host

Central MCP Host

ローカル
github.com/odgrimクラウド・インフラ785 週間前に更新

Central MCP Host について

Central MCP Hostは、Docker、Traefik、SuperGatewayを使い、ホームラボで複数のMCPサーバーを集中運用します。各マシンへの個別導入を避けたいユーザー向けで、プロファイルごとに起動するサービスを選べます。

主な機能

  1. 01複数のMCPサーバーを集中ホスト
  2. 02Traefikによるパスベースのルーティング
  3. 03stdioとSSEのトランスポート変換
  4. 04サービス選択用プロファイル
  5. 05Traefikのモニタリングダッシュボード

活用シーン

  1. 01ホームラボでNotion、Linear、GitHubのサーバーを運用
  2. 02MCPクライアントにSSEエンドポイントを提供
  3. 03必要なMCPサービスだけを起動

MCP 対応

Notion、Linear、GitHub、Memory BankのMCPサーバーをホストし、SuperGatewayでstdioをSSEに変換してMCPクライアント向けのHTTPエンドポイントを公開します。

設定

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

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

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

パッケージ
ocicompose

ツール

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

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

詳細

一元管理型 MCP ホスト

このプロジェクトは、Docker、Traefik、SuperGateway を使用して、Model Context Protocol(MCP)サーバーの一元管理ホスティング環境を提供します。

概要

このセットアップでは、Traefik リバースプロキシを実行し、さまざまな MCP サーバーにリクエストをルーティングします。SuperGateway は stdio と SSE のトランスポートを相互変換するために使用され、MCP サーバーが SSE を使用してクライアントと通信できるようにします。

含まれる MCP サーバー

  • Notion:Notion のデータベースやページを操作します
  • Linear:Linear のチケットを操作します
  • GitHub:GitHub のリポジトリ、イシュー、プルリクエストを操作します
  • Memory Bank:プロジェクトのメモ、思考の経緯、学びを記録するツール

前提条件

  • Docker と Docker Compose
  • Notion API トークン
  • Linear API トークン
  • GitHub API トークン

セットアップ

  1. このリポジトリをクローンします
  2. .env.example ファイルを .env にコピーし、API トークンを入力します:
    cp .env.example .env
    # Edit .env with your API tokens
    
  3. サービスを起動します:
    docker compose up -d
    

Docker Compose の構成

このプロジェクトでは、モジュール式の Docker Compose 構成を使用しています:

  • docker-compose.yml:Traefik の設定と、サービスごとのファイルへの参照を含むメインファイル
  • docker-compose/github.yml:GitHub MCP サーバーの設定
  • docker-compose/notion.yml:Notion MCP サーバーの設定
  • docker-compose/memory-bank.yml:Memory Bank MCP サーバーの設定
  • docker-compose/linear.yml:Linear MCP サーバーの設定

このモジュール式のアプローチにより、次のことができます:

  • すべてのサービスを起動:docker compose up -d(.env で設定されたデフォルトの all プロファイルを使用)
  • プロファイルを使って特定のサービスを起動:
    • GitHub のみ:docker compose --profile github up -d
    • Notion のみ:docker compose --profile notion up -d
    • Memory Bank のみ:docker compose --profile memory-bank up -d
    • Linear のみ:docker compose --profile linear up -d
    • すべてのサービスを明示的に起動:docker compose --profile all up -d
  • docker-compose ディレクトリに新しいファイルを作成して、サービスを簡単に追加

注: このプロジェクトは、Docker Compose V2 以降では不要になった version キーを省略する、最新の Docker Compose の慣例に従っています。

注: ネットワーク設定は競合を避けるため、メインの docker-compose.yml ファイルにのみ定義されています。すべてのサービスはこのネットワークを参照しますが、再定義はしません。

注: デフォルトのプロファイルは、COMPOSE_PROFILES 環境変数を使って .env ファイルで all に設定されています。これにより、プロファイルを明示的に指定せずに docker compose up を実行できます。

サービスへのアクセス

起動後は、各ツールに対応するパスベースのルートを使ってサービスにアクセスできます。

パスベースのルーティング
  • Traefik ダッシュボード:http://$HOSTNAME/dashboard/
  • Notion MCP サーバー:
    • SSE エンドポイント:http://$HOSTNAME/notion/sse
    • メッセージエンドポイント:http://$HOSTNAME/notion/message
  • GitHub MCP サーバー:
    • SSE エンドポイント:http://$HOSTNAME/github/sse
    • メッセージエンドポイント:http://$HOSTNAME/github/message
  • Linear MCP サーバー:
    • SSE エンドポイント:http://$HOSTNAME/linear/sse
    • メッセージエンドポイント:http://$HOSTNAME/linear/message
  • Memory-bank MCP サーバー:
    • SSE エンドポイント:http://$HOSTNAME/memory-bank/sse
    • メッセージエンドポイント:http://$HOSTNAME/memory-bank/message

仕組み

SuperGateway

SuperGateway は stdio と SSE のトランスポートを相互変換するために使用されます:

  1. SuperGateway をコンテナにインストールします
  2. --stdio フラグを使って MCP サーバーのコマンドを実行します
  3. SSE 接続とメッセージ送信のための HTTP エンドポイントを公開します
Traefik の設定

Traefik は次のように設定されています:

  1. パスプレフィックス(例:/notion、/github、/dashboard)に基づいてリクエストをルーティングします
  2. 適切なサービスに転送する前に、パスプレフィックスを取り除きます
  3. 接続が切断されないように適切に設定します
  4. 監視用のダッシュボードを提供します

セットアップのテスト

セットアップをテストするには、MCP Inspector を使用できます:

npx @modelcontextprotocol/inspector node build/index.js

トラブルシューティング

  • パスルーティングの問題:traefik ラベルのパスプレフィックス、SuperGateway の baseUrl オプション、strip ミドルウェアの設定を確認してください。
  • MCP サーバーのエラー:コンテナーのログを確認してください。
    docker compose logs -f notion-gateway
    docker compose logs -f github-gateway
    
  • SuperGateway の問題:MCP サーバーのコマンドが正しいことと、パッケージが node レジストリに存在することを確認してください。パッケージによっては、mcp レジストリと node レジストリで異なる名前で公開されています。

コメント

MCP は初めてですか?

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

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