McpHub について
McpHubは、複数のAIエディター向けローカルMCPゲートウェイです。サーバープロセスを共有し、ツール定義を必要に応じて読み込み、セキュリティチェックを通して呼び出しを振り分けます。
主な機能
- 01複数のMCPサーバーを単一接続
- 02ツールの検索と呼び出しをオンデマンドで実行
- 03エディター間でサーバープロセスを共有
- 04macOS Keychainでシークレットを保存
- 05ツールのピン留め、サンドボックス、監査ログ
活用シーン
- 01エディターのセッションでツール定義のコンテキストを削減
- 02複数のAIエディターでサーバーを共有
- 03OAuth認証情報をエディター設定に置かずに管理
- 04変更されたツール定義を確認またはブロック
MCP 対応
McpHubはStreamable HTTP、SSE、stdioでローカルMCPエンドポイントを提供し、検索、ツール呼び出し、コード実行の3つのメタツールを公開します。クライアントのリクエストをローカルまたはリモートサーバーに振り分け、プロファイル、権限、セキュリティのチェックを適用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
McpHub は、AI エディターとすべての MCP サーバーの間に位置します。
エージェントに表示されるツールは数百個ではなく3 個で、すべての呼び出しに同じセキュリティガードが適用され、
サーバーはサンドボックス内で一度だけ起動し、Cursor、Claude、Windsurf、VS Code で共有されます。
インストール · エディターを接続 · 仕組み · コードモード · セキュリティ · ダッシュボード · ライブラリ · Linux と同期 · 設定 · FAQ
✨ 概要
-99.9%ツール定義に費やすトークン928 個のツールを使う構成で 1,054,593 → 918 | 1 プロセスすべてのエディターで共用サーバーは一度起動すれば、エディターを再起動しても動き続けます | 8 層のセキュリティKeychain、ピンニング、サンドボックス、監査など | ランタイム依存関係0 個署名済みの単一 Rust バイナリ |
| 各エディターに各サーバーを個別に接続 | McpHub 経由 | |
|---|---|---|
| 各プロンプト内のツール定義 | すべて(数十万トークン) | 3 個のツール。スキーマは必要に応じて読み込み |
| サーバープロセス | エディターごとに 1 つ | 共有の 1 つ |
| シークレット | 各エディターの設定に平文で保存 | macOS Keychain、${NAME} 参照 |
| サーバーがツールを密かに変更 | 誰も気づかない | 承認されるまで隔離 |
悪意のある npm サーバーが ~/.ssh を読み取る | 読み取れてしまう | macOS サンドボックスでブロック |
| OAuth を使うリモートサーバー | サーバーごとに mcp-remote プロセスが 1 つ。トークンはプレーンファイルに保存 | ネイティブ HTTP、トークンは Keychain に保存、自動更新 |
| 誰が何を呼び出したか | 不明 | 引数を編集した監査ログ |
| 新しいサーバーを探す | GitHub を検索し、JSON スニペットをコピーして、トークンを貼り付け | 公式 MCP Registry のライブラリ:信頼スコア、ワンクリック追加、シークレットは直接 Keychain に保存 |
| エージェントが必要とするツールがない | 手動でインストール | 十分に信頼できる場合、エージェントがレジストリから自分でインストールし、サンドボックス内で実行 |
| 2 台目のマシン、Linux サーバー | すべてをやり直し、トークンをあちこちにコピー | 同じバイナリ、bubblewrap サンドボックス、サーバーとシークレットの暗号化同期 |
🚀 1 行でインストール
curl -fsSL https://raw.githubusercontent.com/Soflutionltd/McpHub/main/get.sh | bash
このスクリプトは、お使いのマシン向けの最新バイナリ(macOS では署名済みユニバーサルバイナリ、Linux では x64 または arm64)をダウンロードし、SHA-256 チェックサムを検証して、~/.local/bin/McpHub にインストールします。その後、次を実行します。
McpHub dashboard # Library tab: add servers from the official MCP Registry (or McpHub add)
McpHub generate # index every tool once
McpHub install # start the daemon at login (LaunchAgent on macOS, systemd --user on Linux)
手動でダウンロード
McpHub-macos-universal.tar.gzとそのチェックサムをダウンロードします。shasum -a 256 -c McpHub-macos-universal.tar.gz.sha256tar -xzf McpHub-macos-universal.tar.gz && install -m 755 McpHub ~/.local/bin/McpHub- ブラウザーからダウンロードした場合は、隔離フラグを解除します。
xattr -d com.apple.quarantine ~/.local/bin/McpHub
Linux(amd64、arm64)および Windows(amd64)のアーカイブも各リリースに添付されています。Linux ではサンドボックスに bubblewrap を使用し、シークレットは ~/.McpHub/secrets.env に保存されます(モード 600、サンドボックス化されたサーバーからは非表示)。Linux サーバーと同期を参照してください。Windows にはサンドボックスがありません。
ソースからビルド
git clone https://github.com/Soflutionltd/McpHub.git
cd McpHub
make install # cargo build --release, install, sign
make install は Developer ID 証明書が存在する場合、それを使って署名します。そのため、macOS ではバージョンを更新してもアクセス許可が維持されます。Linux と Windows ではソースからビルドします(cargo build --release)。macOS のサンドボックスと Keychain の機能は macOS 専用です。
🔌 エディターを接続
デーモンは http://127.0.0.1:24680 でリッスンします。トークンは ~/.McpHub/auth-token にあります。
Cursor、~/.cursor/mcp.json
{
"mcpServers": {
"McpHub": {
"url": "http://127.0.0.1:24680/mcp",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}
Claude Code
claude mcp add --transport http mcphub http://127.0.0.1:24680/mcp \
--header "Authorization: Bearer $(cat ~/.McpHub/auth-token)"
Claude Desktop、claude_desktop_config.json
{
"mcpServers": {
"McpHub": { "command": "/Users/you/.local/bin/McpHub", "args": ["stdio"] }
}
}
VS Code、.vscode/mcp.json
{
"servers": {
"mcphub": {
"type": "http",
"url": "http://127.0.0.1:24680/mcp",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}
Windsurf およびその他の SSE クライアント
同じ Authorization ヘッダーを使って http://127.0.0.1:24680/sse に接続します。
クライアントごとに 1 つのプロファイルを使用します。 各エディターに専用のビューを割り当てます。http://127.0.0.1:24680/mcp/cursor には、cursor プロファイルで許可された項目だけが表示されます(プロファイルを参照)。
プロジェクト対応クライアント(任意)
client/ は、エディターとデーモンの間に配置する小さな Node MCP サーバーです。稼働中のデーモン(SSE、~/.McpHub/auth-token のトークン)と通信し、利用できない場合は McpHub stdio にフォールバックします。次の 6 つのツールを提供します。
mcphub_bootstrap:会話ごとに 1 回呼び出します。ワークスペースからプロジェクトを特定し、そのエイリアスと許可されたサーバーを返します。また、プロジェクトエントリーのないフォルダーでも、コンパクトな MemoryPilot コンテキストを呼び出します。mcphub_search、mcphub_call:デーモンと同じ機能に加えて、ツール名またはサーバー名の入力ミスがあった場合に候補を提示し、引数エラー時には入力スキーマを表示します。mcphub_batch:1 回の往復で、互いに独立した最大 20 件の呼び出しを実行します。mcphub_status、mcphub_savings:サーバーの状態と、コンテキストサイズを正直に比較した結果を返します。
プロジェクトごとのポリシーは ~/.McpHub/projects.json(または MCPHUB_PROJECTS で指定されたパス)に保存します。詳しくは client/projects.example.json を参照してください。そこに記載されたワークスペースからは、その allowedServers のみがアクセス可能です。また、別の Supabase プロジェクト、App Store アプリ、Cloudflare プロジェクトを対象とした呼び出しは拒否されます。ファイルがない場合、ポリシーは適用されません。ファイルを読み取れない場合はエラーとなり、黙って無視されることはありません。
cd client && npm ci
{
"mcpServers": {
"McpHub": { "command": "node", "args": ["/path/to/McpHub/client/index.js"] }
}
}
npm test は、ローカルデーモン(MemoryPilot と supabase を設定済み)に対するスモークテストを、一時的なプロジェクトファイルを使って実行します。
クライアントのアカウントで作業する
クライアントの Stripe(または Supabase、Cloudflare…)に接続しても、自分のアカウントからログアウトされることはなく、自分のエージェントが誤ってクライアントのアカウントにアクセスすることもありません。軽い方法から厳格な方法まで、2 つのレベルがあります。
1. クライアント所有のサーバー(同じ McpHub)。 クライアントのサーバーを独自の名前(stripe-acme など)で追加し(トークンはサーバー名ごとに保存されるため、独自の OAuth トークンまたは制限付きキーを使用します)、クライアントのプロジェクトの ownedServers に登録します。
"acme": {
"workspaces": ["/Users/you/Clients/Acme"],
"aliases": { "product": "Acme" },
"allowedServers": ["MemoryPilot", "context7"],
"ownedServers": ["stripe-acme"]
}
所有サーバーが応答し、mcphub_search に表示され、mcphub_status に表示されるのは、working_dir がそのクライアントのワークスペース内にある場合のみです。project 引数だけでは不十分です。サーバーを 2 つのプロジェクトが所有している場合、起動時エラーになります。このガードは Node クライアントにあります。デーモンに直接接続しているエディターには、引き続きすべてのサーバーが表示されるため、"excludeServers": ["*-acme"] を指定したプロファイルを用意してください。
2. 別のインスタンス(共有なし)。 その必要があるクライアント向けに、専用のフォルダー、ポート、Keychain サービス、認証トークン、LaunchAgent を使用して、2 つ目の McpHub を実行します。
export MCPHUB_INSTANCE=acme MCPHUB_PORT=24690
McpHub add # writes ~/.McpHub-acme/config.json
McpHub oauth login stripe # token stored under Keychain service McpHub-acme
McpHub install # LaunchAgent com.soflution.mcphub.acme
名前付きインスタンスは、エディターで宣言されたサーバーをインポートせず、メインのポート(24680)の使用を拒否します。また、そのトークンはメインデーモンに拒否されます(逆も同様です)。同じ変数を使用して、クライアントのワークスペース用エディターをそのインスタンスに接続します。
"McpHub": {
"command": "node",
"args": ["/path/to/McpHub/client/index.js"],
"env": { "MCPHUB_INSTANCE": "acme", "MCPHUB_PORT": "24690" }
}
MCPHUB_HOME と MCPHUB_VAULT_SERVICE は、フォルダーと Keychain サービスを上書きします。すべてのインスタンスのサンドボックス化されたサーバーは、すべての ~/.McpHub* フォルダーへのアクセスを拒否されます。名前付きインスタンスの自動起動は、macOS と Linux でサポートされています。
🧭 仕組み
- エディターは McpHub デーモンに一度だけ接続します(Streamable HTTP、SSE、または stdio)。
- エージェントには、3 つのツールが表示されます。
mcphub_search(すべてのツールを対象とする BM25 検索)、mcphub_call(1 つのツールを実行)、mcphub_run(コードモード)です。 - 各呼び出しは認証され、クライアントプロファイルによってフィルタリングされ、ツールのピン留め設定と権限に照らして確認された後、適切なサーバーにルーティングされます。サーバーは必要に応じて起動し、アイドル状態になると停止します。
- ローカルサーバーは最小限の環境で macOS サンドボックス内で実行されます。リモートサーバーには、Keychain に保存された OAuth トークンを使って HTTP 経由で直接接続します。
- すべての呼び出しは監査ログに記録されます。
トークンの節約
数十の MCP サーバーをエディターに直接接続すると、すべての会話にすべてのツールスキーマが読み込まれます。上記の構成(35 台のサーバー、928 個のツール)では、100 万トークンを超え、どのコンテキストウィンドウの上限も超えてしまいます。McpHub はこれを小さな 3 つのツールに置き換え、エージェントが実際に必要としたときだけスキーマを読み込みます。
🧠 コードモード
複数ステップの作業や一括処理では、エージェントは mcphub_run を使って短い JavaScript プログラムを送信します。
const projects = await mcp.call("supabase", "list_projects", {});
const unhealthy = projects.filter(p => p.status !== "ACTIVE_HEALTHY");
return unhealthy.map(p => p.name);
mcp.call(server, tool, args)はツールの結果を返し、mcp.search(query)はツールを検索し、console.logの出力は取得されます。- プログラムは、
--permissionを付けて起動する別の Node.js プロセス(バージョン 22.13 以降)で実行されます。ファイル、ネットワーク、サブプロセスへのアクセスは許可されず、macOS サンドボックス内で動作します。 - 外部にアクセスする唯一の手段は
mcp.callです。この呼び出しは、すべての McpHub ガード(権限、隔離、プロファイル、監査)を通過します。 - 制限:
settings.codeMode→{ "timeoutSecs": 60, "maxCalls": 100 }。出力の上限は 1 MB です。
🛡️ セキュリティ
MCP サーバーはサードパーティ製プログラムで、多くの場合、npx -y package@latest でその場で取得され、ユーザーの権限で実行されます。McpHub はそれを踏まえて対処します。
保護されたローカル API
/mcp、/sse、/messageおよびすべての/api/*ルートには、Authorization: Bearer <token>が必要です(~/.McpHub/auth-tokenに保存される256ビットのランダムトークン。モードは600)。Hostが127.0.0.1、localhost、[::1]のいずれでもないリクエスト(DNS リバインディング)と、外部のOriginを持つリクエストは拒否されます。CORS ヘッダーはないため、Web ページからハブを呼び出すことはできません。- ダッシュボードは一度限りのリンク(
McpHub dashboard)から開き、セッションごとのシークレットを保持します。メイントークンは使用しません。
macOS Keychain に保存されるシークレット
McpHub vault set GITHUB_TOKEN # masked prompt, stored in the Keychain
McpHub vault migrate # move an existing secrets.env into the Keychain
config.json に保存されるのは ${GITHUB_TOKEN} の参照のみです。各サーバープロセスは最小限の環境(システム変数、独自の env、および inheritEnv に記載された名前)で起動するため、あるサーバーが他のサーバーのシークレットを受け取ることはありません。
ツールのピン留めとポイズニング検出
McpHub がサーバーを初めて認識すると、すべてのツール(名前、説明、入力と出力のスキーマ、アノテーション)の SHA-256 フィンガープリントを ~/.McpHub/tool-pins.json に記録します。その後、サーバーが定義を変更した場合(「ラグプル」)、ツールは隔離され、カタログから非表示になり、確認が完了するまで呼び出しが拒否されます。
McpHub pins status # what is quarantined and why
McpHub pins approve SERVER [TOOL] # accept the new definition
McpHub pins scan # scan every cached tool, read-only
説明とスキーマは、不可視の Unicode 文字や典型的なインジェクション文言(「ignore previous instructions」、「do not tell the user」、~/.ssh/id_rsa、mcp.json など)がないかスキャンされます。承認済みのサーバーに新たに追加されたツールも保留されます。
"settings": { "toolSecurity": { "pinning": "block", "scan": "block", "newTools": "block" } }
"pinning": "off"(または "warn")の場合、変更された定義は自動的に受け入れられますが、再度スキャンされます。scan が block の場合、スキャンに引っかかる新しい説明は引き続きブロックされます。
サーバーの分離(macOS サンドボックス)
"settings": { "sandbox": "shield" }
shield はすべてのローカルサーバーを sandbox-exec で実行します。サーバーは通常どおり動作しますが、SSH と GPG の鍵、クラウドと GitHub の認証情報、ブラウザープロファイルと Cookie、Claude/Cursor の設定、シェルプロファイル、LaunchAgents、McpHub 自身のファイルの読み書きはできません。また、security、launchctl、osascript、open も実行できません。ただし、サーバーが独自の env または args で参照するシークレットファイル(たとえば App Store の .p8 鍵)は読み取り可能です。
サーバーごとに、"sandbox": false、"strict"(一時フォルダーとキャッシュ以外への書き込みを禁止)、または { "mode": "strict", "network": false, "allowWrite": ["~/data"], "allowExec": ["open"] } を指定できます。
McpHub sandbox # effective isolation of every server
McpHub sandbox show supabase # the generated profile
このサンドボックスは、侵害されたパッケージによる認証情報の窃取を防ぐ強力な障壁ですが、完全なコンテナーではありません。
権限、確認、監査
"permissions": {
"default": "allow",
"rules": [
{ "server": "supabase", "tool": "delete_*", "action": "deny", "reason": "production" },
{ "server": "stripe", "tool": "*", "action": "confirm" }
]
}
denyはツールをブロックし、confirmはエージェントが応答できない macOS ネイティブダイアログを通じて、先に人間の確認を求めます。autoClassify: trueは、名前と MCP のdestructiveHintアノテーションに基づいて、すべての破壊的なツールにconfirmを適用します。McpHub policy test SERVER TOOLを実行すると、どのルールが適用されるかを確認できます。McpHub audit --tail 50を実行すると、シークレットが伏せ字にされた直近の呼び出しを~/.McpHub/audit.jsonlで確認できます(ローテーションされます)。
🌐 リモートサーバーと共有 OAuth
"sentry": { "url": "https://mcp.sentry.dev/mcp" },
"aqara": { "url": "https://agent.aqara.com/open/mcp", "headers": { "Authorization": "Bearer ${AQARA_API_KEY}" } }
リモートサーバーには Streamable HTTP 経由で直接接続するため、サーバーごとの mcp-remote プロセスは不要です。McpHub は MCP 認可仕様に対応しており、ディスカバリー(RFC 9728 と 8414)、動的クライアント登録、PKCE、リソースインジケーター、自動更新、HTTPS のみの使用、サーバー URL に紐付けられ Keychain に保存されるトークンをサポートします。
McpHub oauth status # connection state of every remote server
McpHub oauth login sentry # sign in through the browser, once
McpHub oauth logout sentry
McpHub oauth migrate --apply # convert "npx mcp-remote URL" entries, keeping their tokens
📊 ダッシュボード
McpHub dashboard を実行します(ブラウザーを開く使い切りリンクが表示されます)。
![]() サーバー:ステータス、ツール、ワンクリックで有効化または無効化 | ![]() インデックス化されたすべてのツールを検索できます |
![]() サーバーごとの呼び出し、エラー、レイテンシー |
|
📚 ライブラリ
ダッシュボードの ライブラリ タブは、McpHub 内で利用できる公式 MCP Registry です。数千のサーバーを検索し、信頼スコアを確認して、追加 をクリックできます。
- 検索はローカルで実行されます。 ライブラリを初めて開くと、McpHub はバックグラウンドでカタログを一度ダウンロードし、
~/.McpHub/registry-cache/に保存します(まず GitHub MCP Registry の人気サーバーが数秒で表示され、その後に公式カタログ全体が追加されます)。以降は、変更された内容だけを最大で1日に1回取得します。検索は瞬時に行われ、オフラインでも利用できます。 - エージェントの負荷はゼロです。 カタログはダッシュボードとディスク上に保存されます。エージェントのコンテキストにツール定義は追加されず、検索の合間にメモリに残ることもありません。
- インストール前に信頼スコアを確認できます(0~100)。スコアの各項目の詳細も表示されます。
- 検証済みの発行者:レジストリが名前空間(GitHub アカウントまたは DNS ドメイン)を確認し、McpHub がその発行者自身のコードを公開していることを確認します。
- 人気度とアクティビティ:GitHub のスター数、最終更新日、アーカイブ済みのリポジトリ。
- 権限スキャン:要求されるシークレット、平文 HTTP エンドポイント、特権付き Docker オプション、バンドルの整合性ハッシュ、固定されていないバージョン、サーバーが実行できる操作(コマンドの実行、ファイルへのアクセス、ブラウザーの操作、支払いなど)。
- あらゆる種類のサーバーをワンクリックで追加できます:リモート(Streamable HTTP)、npm(
npx)、Python(uvx)、Docker、.NET(dnx)、.mcpbバンドル(ダウンロード後に SHA-256 を確認し、~/.McpHubの外部に展開)。 - シークレットは Keychain に保存され、
config.jsonには保存されません。 すでにお持ちのシークレット(GITHUB_TOKENなど)は再利用されます。 - リモートサーバーは McpHub のネイティブ OAuth でサインインします(Sign in をワンクリック)。トークンは Keychain に保存されます。
- 新しいサーバーにもすべての保護機能が適用されます:ローカルコード向けのシールドサンドボックス(Docker はコンテナーを維持)、ツールの固定と初回接続時の説明のスキャン、変更時の隔離、監査ログ、権限、プロファイル。
ターミナルから実行する場合:McpHub registry search postgres、McpHub registry info NAME、McpHub registry install NAME、McpHub registry sync。
エージェントが必要なものをインストール
このために新しいツールは追加されません(合計で約30トークン)。mcphub_search で何も見つからない場合、エージェントは次を呼び出せます。
mcphub_call server=mcphub tool=registry_search arguments={"query": "postgres"}
mcphub_call server=mcphub tool=registry_install arguments={"name": "io.github.acme/postgres-mcp"}
サーバーは同じ保護機能を適用してインストールされ、ツールはすぐにインデックス化され、呼び出しは監査されます。エージェントがシークレットを扱うことはありません。サーバーがシークレットを必要とする場合、エージェントはダッシュボードでの設定を促します。settings.registry で制御します。
"registry": { "agentInstall": "trusted", "minTrust": 60 }
agentInstall:"trusted"(デフォルト。信頼スコアが minTrust 以上のサーバーのみ)、"any"、または "off"。
🐧 Linux サーバーと同期
McpHub は Linux サーバーでも同じように動作します。たとえば、VPS 上で動作するエージェントの隣で実行できます。
curl -fsSL https://raw.githubusercontent.com/Soflutionltd/McpHub/main/get.sh | bash
sudo apt install bubblewrap # sandbox
McpHub install # systemd --user service
- bubblewrap によるサンドボックス:macOS と同じポリシーです。すべての秘密フォルダー(
~/.ssh、~/.aws、~/.McpHub...)はメモリ上の空のフォルダーに、すべての秘密ファイルは空のファイルに置き換えられます。strictモードでは、一時フォルダー、キャッシュ、allowWriteを除くシステム全体が読み取り専用になります。 ~/.McpHub/secrets.envの シークレット は、モード 600 で保存され、サンドボックス化されたサーバーからは見えません。McpHub vault set NAMEも同じように機能します。
平文のシークレットを一切使わずに、あるマシンから別のマシンへセットアップを移行できます。
McpHub sync export mcphub.sync.json --secrets # on the Mac
McpHub sync import mcphub.sync.json --secrets # on the server
エクスポートされるのは、ポータブルな config.json です。すべてのシークレットは ${NAME} 参照になり、トークンのように見える平文の値はコピーから除外され、ホームパスは ${HOME}/... になります。--secrets を指定すると、値もパスフレーズで暗号化されて持ち運ばれます(scrypt の後、ChaCha20-Poly1305 で暗号化)。パスフレーズがなければ、ファイルから分かるのはシークレット名だけです。インポート時、そのマシンにプログラムがないサーバーは無効な状態でインポートされ、復号されたシークレットは Keychain(macOS)または secrets.env(Linux)に保存されます。スクリプトでは、MCPHUB_SYNC_PASSPHRASE を設定してください。
⚙️ 設定
すべての設定は ~/.McpHub/config.json に保存され、デーモンの実行中にホットリロードされます。
{
"servers": {
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase"],
"env": { "SUPABASE_ACCESS_TOKEN": "${SUPABASE_ACCESS_TOKEN}" },
"tools": { "exclude": ["delete_*", "pause_project"] },
"toolDescriptions": { "list_projects": "List my Supabase projects" }
},
"github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "readOnly": true },
"sentry": { "url": "https://mcp.sentry.dev/mcp" }
},
"settings": {
"mode": "discover",
"sandbox": "shield",
"toolSecurity": { "pinning": "block", "scan": "block", "newTools": "block" },
"permissions": { "default": "allow", "rules": [] },
"profiles": {
"cursor": { "servers": ["supabase", "git*"], "excludeTools": ["supabase/execute_sql"] },
"review": { "readOnly": true }
},
"codeMode": { "timeoutSecs": 60, "maxCalls": 100 },
"idleTimeout": 300
}
}
サーバーごとのオプション
| オプション | 効果 |
|---|---|
tools.include / tools.exclude | 公開または非表示にするツールの glob リスト |
readOnly: true | 読み取りを行うツールのみ(readOnlyHint、または get、list、search などの読み取りを表す動詞) |
toolDescriptions | エージェントに表示するツールの説明を書き換えます |
sandbox | false、"shield"、"strict"、またはオブジェクト(「セキュリティ」を参照) |
inheritEnv | デーモンの変数のうち、名前で指定してこのサーバーに渡すもの |
pool | 並列呼び出しに使用するインスタンス数 |
url、headers、auth | HTTP 経由のリモートサーバー(auth:"oauth" または "none") |
クライアントごとのプロファイル
プロファイルでは、各クライアントが参照および呼び出しできる対象を決定します。servers と excludeServers(glob)、excludeTools("server/tool" の glob)、および readOnly を指定します。stdio モードでは、http://127.0.0.1:24680/mcp/<profile>、/sse?profile=<profile>、または MCPHUB_PROFILE=<profile> を使ってプロファイルを選択します。
モード
discover(デフォルト):エージェントにはmcphub_search、mcphub_call、mcphub_runが表示されます。passthrough:すべてのツールがserver__toolとして直接公開されます(すべて表示されますが、トークンコストが高くなります)。
🧰 CLI
McpHub serve # HTTP daemon (Streamable HTTP /mcp, SSE /sse, dashboard)
McpHub stdio # stdio mode for editors that spawn the process
McpHub install # start at login · McpHub uninstall
McpHub generate # start every server and index its tools
McpHub status | doctor # configuration, cache and health diagnostics
McpHub search "send email"
McpHub dashboard # open the dashboard (one-time link)
McpHub logs # follow the daemon log
McpHub add # interactive server wizard
McpHub vault ... # Keychain secrets: status, list, set, get, rm, migrate
McpHub registry ... # Library: search, info, install, uninstall, sync
McpHub sync ... # export / import to another machine, secrets encrypted
McpHub oauth ... # remote servers: status, login, logout, migrate
McpHub pins ... # tool pinning: status, approve, reset, scan
McpHub sandbox [show S] # server isolation
McpHub policy test S T # which permission applies
McpHub audit --tail 50 # recent calls
McpHub update | version | help
ファイル:~/.McpHub/(設定、キャッシュ、ピン留め、監査ログ、トークン。名前付きインスタンスの場合は ~/.McpHub-<name>/)および ~/Library/Logs/McpHub/<server>.stderr.log(各サーバーのエラー出力)。
❓ FAQ
どの MCP サーバーでも使えますか?
はい。stdio サーバー(command と args)と Streamable HTTP サーバー(url)のどちらにも対応しています。ツールのアノテーション、出力スキーマ、ページ分割されたツール一覧、2026-07-28 までのプロトコルバージョンが中継されます。
エディターを再起動するとどうなりますか?
何も起こりません。デーモンは動作し続け、サーバーは起動したままで、エディターは同じ URL に再接続します。
サンドボックスによってサーバーが動かなくなりませんか?
shield はシークレットへのアクセスと、サンドボックスから抜け出すのに使われる可能性のある一部のプログラムへのアクセスのみを削除します。通常のサーバーはそのまま動作します。マシン全体を必要とするサーバー(desktop-commander のようなシェルツール)はデフォルトでサンドボックスの外に置かれ、どのサーバーも "sandbox": false を指定して対象外にできます。
アップデート後に macOS がアクセス許可を求めるのはなぜですか?
macOS は署名 ID ごとにアクセス許可を記憶します。make install は利用可能な場合、Developer ID で署名します。ビルド済みバイナリは SOFLUTION LTD によって署名されています。アドホックビルドではビルドごとに新しい ID が付与されるため、macOS が再度確認を求めます。
アンインストールするにはどうすればよいですか?
McpHub uninstall
rm ~/.local/bin/McpHub
rm -rf ~/.McpHub
MIT ライセンス · SOFLUTION LTD 制作
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。


