Central MCP Host について
Central MCP Hostは、Docker、Traefik、SuperGatewayを使い、ホームラボで複数のMCPサーバーを集中運用します。各マシンへの個別導入を避けたいユーザー向けで、プロファイルごとに起動するサービスを選べます。
主な機能
- 01複数のMCPサーバーを集中ホスト
- 02Traefikによるパスベースのルーティング
- 03stdioとSSEのトランスポート変換
- 04サービス選択用プロファイル
- 05Traefikのモニタリングダッシュボード
活用シーン
- 01ホームラボでNotion、Linear、GitHubのサーバーを運用
- 02MCPクライアントにSSEエンドポイントを提供
- 03必要なMCPサービスだけを起動
MCP 対応
Notion、Linear、GitHub、Memory BankのMCPサーバーをホストし、SuperGatewayでstdioをSSEに変換してMCPクライアント向けのHTTPエンドポイントを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
一元管理型 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 トークン
セットアップ
- このリポジトリをクローンします
.env.exampleファイルを.envにコピーし、API トークンを入力します:cp .env.example .env # Edit .env with your API tokens- サービスを起動します:
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
- GitHub のみ:
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 のトランスポートを相互変換するために使用されます:
- SuperGateway をコンテナにインストールします
--stdioフラグを使って MCP サーバーのコマンドを実行します- SSE 接続とメッセージ送信のための HTTP エンドポイントを公開します
Traefik の設定
Traefik は次のように設定されています:
- パスプレフィックス(例:
/notion、/github、/dashboard)に基づいてリクエストをルーティングします - 適切なサービスに転送する前に、パスプレフィックスを取り除きます
- 接続が切断されないように適切に設定します
- 監視用のダッシュボードを提供します
セットアップのテスト
セットアップをテストするには、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 レジストリで異なる名前で公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。