Skip to main content
Glama

MCP Hub

1つのMCPサーバーであなたのAIアシスタントにホームラボ全体の鍵を渡します。

Release License: MIT Python 3.11+ MCP CI

MCP Hubは、ネットワーク内の1台のマシンに配置され、そこからSSHでフリート内のすべてのホスト、Proxmoxコンテナ、Docker、Synology DSM、CloudflareトンネルとDNS、n8nワークフロー、Notion、パスワードボールトにアクセスする単一のModel Context Protocolサーバーです。多数のMCPサーバーを実行してそれぞれをクライアントに配線する代わりに、1つを実行してアシスタントをそのサーバーに向けるだけです。

「なぜJellyfinに到達できないのか?」 — アシスタントがコンテナを確認し、ジャーナルを読み取り、トンネルのイングレスが古くなっていることに気づき、修正し、何をしたかを伝えます。

⚠️ デプロイする前にSECURITY.mdをお読みください。 MCP HubはLLMにフリート全体へのrootシェルアクセスを提供します。それがこのツールの目的であり、本当に危険です。デフォルトは安全です(127.0.0.1、読み取り専用)。危険は設定を変更したときに始まります。

トラブルシューティングデモ

このリポジトリには、サニタイズされたAsciinema録画が含まれています。これは、完全な観察優先のトラブルシューティングセッション(失敗したエンドポイント、systemd診断、正確な変更計画、明示的な確認、再起動、最終的なヘルスチェック)です。サンプルインベントリを使用しており、プライベートなインフラデータは含まれていません。

asciinema play docs/troubleshooting.cast

Asciinemaがインストールされていない場合は、録画を直接参照してください。キャスト形式は改行区切りのJSONであり、レビュー可能です。

Related MCP server: homelab-mcp

目次

機能

  • 111のツール、1つのエンドポイント、1つの設定ファイル。

  • 設定駆動型。 ネットワークはhosts.yaml.envに記述します。インフラストラクチャに関する情報はコードに組み込まれていません。

  • 多重化SSH。 永続的な制御ソケットにより、フリート全体のコマンドがTCPハンドシェイクごとにミリ秒単位で実行されます。

  • オプションの統合。 すべての統合はデフォルトでオフになっており、1つのフラグで有効になります。SSHフリートツールとしてのみ使用したい場合は、そのまま使用できます。

  • プラグ可能なシークレット。 環境から、またはbw serveを介してBitwarden/Vaultwardenのボールトから資格情報を読み取ります。

  • ベアラートークン認証 推測不可能なエンドポイントパスの上に実装。

  • グローバル読み取り専用モード(デフォルトでオン):1つのフラグで43の変更ツールすべてを無効にし、ツールごとではなく中央で強制します。

  • ファイル読み取りとコマンド出力における自動シークレット編集。

  • バックグラウンドジョブ(ポーリング、ログ、永続的なSQLite状態ストア付き)。

クイックスタート

Python 3.11+と、管理したいマシンへのSSHアクセスがあるLinuxホストが必要です。

git clone https://github.com/wnx82/mcp-hub.git
cd mcp-hub

python3 -m venv .venv && . .venv/bin/activate
pip install -e .

cp .env.example .env                  # then edit — see below
cp hosts.example.yaml hosts.yaml      # then edit: your fleet
chmod 600 .env hosts.yaml

python server.py

最低限、.envに次の2つを設定します。

MCP_SECRET_PATH=/$(openssl rand -hex 16)   # unguessable endpoint path
MCP_AUTH_TOKEN=$(openssl rand -hex 32)     # bearer token — the real auth

サーバーはhttp://127.0.0.1:8000<MCP_SECRET_PATH>でリッスンし、MCP_READ_ONLY=trueが設定されます。MCPクライアントをそのURLに向け、Authorization: Bearer <MCP_AUTH_TOKEN>を送信します。トークンがないリクエストは401、他のパスへのリクエストは404になります。

HTTPではなくstdioを必要とするローカルMCPクライアントの場合は、同じハブを次のように起動します。

mcp-hub --transport stdio

または、起動前に環境にMCP_TRANSPORT=stdioを設定します。

systemdデプロイの場合、sudo ./deploy/install.shは専用のmcphubユーザーとSSHキーを作成し、両方のシークレットを/etc/default/mcp-hubに生成し、ユニットをインストールします。冪等であり、既存の設定を上書きすることはありません。deploy/を参照してください。

完全なClaude Codeのセットアップ、安全なトークン処理、接続チェック、最初の読み取り専用プロンプト、および現在のClaude Desktopの制限については、**MCP HubをClaudeに接続する**を参照してください。

アシスタントにプライベートなトポロジ、ホストの役割、変更ウィンドウ、MCP運用ルールを理解させたいが、それらのデータをコミットしたくない場合は、PROJECT_INSTRUCTIONS.example.mdから始めて、カスタマイズしたPROJECT_INSTRUCTIONS.mdをローカルのみに保持してください。

デプロイ

MCP Hubは3つの実行モードをサポートしています。

モード

使用目的

コマンド

サポートレベル

編集可能パッケージ

開発と貢献

pip install -e ".[dev]" then mcp-hub

開発用にサポート

直接ソース実行

クイックローカル評価

python server.py

サポート対象、オペレーターがプロセスを管理

systemdインストール

永続的なホームラボデプロイ

sudo ./deploy/install.sh

本番環境に推奨

Pythonパッケージと直接実行は、現在のチェックアウトとそのvirtualenvを使用します。サービスアカウント、SSHキー、環境ファイル、再起動ポリシーは作成しません。systemdインストーラーはこれらの運用部品をプロビジョニングし、再実行時にローカル設定をそのまま保持し、ハブのvirtualenvの外部にRescueをインストールします。

コンテナイメージはまだ公式のデプロイターゲットではありません。ハブはネットワークアクセス、SSH ID、永続的なstate.db、およびローカルインベントリへのアクセスを必要とします。コンテナにパッケージ化するオペレーターは、これらのプロパティを自分で保持する必要があります。

現在の要件と、公式イメージが推奨される前に保証する必要があるものについては、docs/docker-packaging.mdを参照してください。

ローカルテスト

lint、ユニットテスト、ツール登録、生成ドキュメント、インストーラースモークテスト、手動読み取り専用実行をカバーするコントリビューター向けチェックリストについては、**docs/testing-local.md**を参照してください。

MCP 2026-07-28移行の概要、互換性マトリックス、ロールバック手順については、**docs/migration/mcp-2026-07-28-guide.md**を参照してください。

PRを開いたりブランチを公開したりする前に、ローカルリリース準備チェックを実行することもできます。

python3 scripts/check_repo_hygiene.py
python3 scripts/check_tool_annotations.py
python3 scripts/check_security_readiness.py

セキュリティ準備チェックをプッシュ時にGitに自動的に組み込むには:

./scripts/install_pre_push_hook.sh

アーキテクチャ

server.pyはMCPサーバーの構成ルートであり続けますが、ドメインコードは段階的にtools/に移動しています。SSHコマンド構築、Cloudflareパスと応答抽出、DSMプロトコルメタデータ、インベントリ、プレイブックビルダーはすでに分離されています。tools/registry.pyは抽出されたツールをドメインに割り当てます。そのドメインは各監査サマリーに含まれます。新しいプロトコルロジックはそのドメインモジュールに配置し、server.pyをインポートしてはいけません。

将来の統合は、最小特権スコープと昇格ゲートを含めて、docs/integration-evaluation.mdで優先順位付けされています。

レスキュー診断

mcp-hub-rescueは、メインサーバーがインポートできない場合やそのvirtualenvが壊れている場合でも動作し続けるように設計された、読み取り専用のローカルCLIです。systemdインストーラーはこれを/opt/mcp-hub-rescueにコピーし、システムPythonでMCP Hubプロセスとvirtualenvの外部で実行します。

sudo mcp-hub-rescue doctor
sudo mcp-hub-rescue status
sudo mcp-hub-rescue health
sudo mcp-hub-rescue logs --lines 50
sudo mcp-hub-rescue validate-config

結果は構造化JSONです。Rescueはserver.pytools/*、MCP、またはオプションの統合を決してインポートしません。この境界はCIによって強制されます。現在のコマンドは観察と診断のみを行います。再起動、修復、ロールバック操作は、確認と最後の正常動作のセーフガードとともに別途追加されます。

設定

すべてgit無視されています。それぞれに追跡された.exampleテンプレートがあります。

ファイル

目的

必須

.env

ポート、認証、機能フラグ、APIトークン

はい

hosts.yaml

フリートインベントリ:ホスト名、ユーザー、役割、タグ

はい

topology.yaml

キュレーションされたオーバーレイ:ゲストマッピング、リサイクルIPトラップ、触ってはいけないリスト

いいえ

endpoints.yaml

endpoints_health用のHTTPヘルスプローブ

いいえ

ホストエントリは設計上最小限です。

hosts:
  nas:
    hostname: nas.example.lan
    user: admin
    role: storage
    tags: [nas, backup]
    mac: "aa:bb:cc:dd:ee:01"   # optional, enables wake_host()

タグはグループを指定する方法です:fleet_exec(tag="backup", command="df -h")。コピー可能な2ホストインベントリについては、docs/examples/hosts.minimal.yamlから始めてください。より大きなhosts.example.yamlは、サポートされているすべてのホストオプションを示しています。

docs/examples/topology.guarded.yamlと組み合わせて、Proxmoxゲストをマッピングし、古いアドレストラップを記録し、気軽に変更してはいけないインフラを表面化します。_do_not_touchエントリはアシスタントの運用コンテキストであり、強制されたアクセス制御境界ではありません。技術的な強制にはトークンプロファイルとホスト制限を使用してください。

docs/examples/endpoints.minimal.yamlを追加して、常時稼働および断続的なHTTPサービスを監視します。通常のセットにはendpoints_health()を呼び出し、通常は電源がオフになっている可能性のあるサービスを含めるにはendpoints_health(include_intermittent=true)を呼び出します。200から399までの応答は正常と見なされます。リダイレクトは追跡されません。

完全なデフォルト、制限、統合設定、シークレット処理の注意事項は、**環境変数リファレンス**にあります。

追跡されたこれらの例と、プライベートで追跡されていないPROJECT_INSTRUCTIONS.mdを組み合わせて、アシスタントがトポロジの注意点、メンテナンスウィンドウ、命名規則、リポジトリに置くべきでない「触らないで」ガイダンスを認識できるようにします。

ツールリファレンス

すべてのツールは同じトップレベルのエンベロープを返します。

{
  "ok": true,
  "data": {},
  "error": null,
  "duration_ms": 12,
  "host": "example",
  "request_id": "4d52b1f69b974b7784bf65dd",
  "tool": "system_info"
}

dataにはツール固有のペイロードが含まれます。セキュリティ拒否と制御された例外は、ok: falseで同じ形状を使用するため、チェーン呼び出しと監査の相関が予測可能になります。

中央ツールラッパーは、リクエストサイズ、トークンあたりの呼び出し数、ターゲットあたりの同時呼び出し数、繰り返されるターゲット障害、変更頻度も制限します。デフォルトは.env.exampleに文書化されています。制限拒否は、他のすべての呼び出しと同じ応答エンベロープと監査証跡を使用します。

グループ

ツール

フリート & シェル

list_hosts topology get_topology system_info get_system_info remote_exec local_exec fleet_exec batch_exec read_file service_ctl journal_query get_journal_entries apt_status list_package_updates ssh_reset_control wake_host dhcp_reservations endpoints_health infra_snapshot destroy_resource

Proxmox & コンテナ

proxmox_list list_proxmox_guests proxmox_ct_status proxmox_ct_exec ct_exec ct_write_file pbs_status docker_ps list_docker_containers docker_exec

Synology DSM

dsm_health dsm_system_info dsm_storage dsm_shares dsm_packages dsm_package_control dsm_updates dsm_connections dsm_logs dsm_power dsm_file_list dsm_file_search dsm_download_list dsm_download_create dsm_download_control dsm_api dsm_relogin

Cloudflare

cloudflare_tunnels_list list_cloudflare_tunnels cloudflare_tunnel_get cloudflare_tunnel_config_get cloudflare_tunnel_config_update cloudflare_dns_list cloudflare_dns_create cloudflare_dns_delete cf_ingress_dump get_cloudflare_tunnel_ingress cloudflare_api

n8n

n8n_health n8n_list_workflows n8n_get_workflow n8n_activate_workflow n8n_deactivate_workflow n8n_list_executions n8n_get_execution n8n_call_webhook

Notion

notion_search notion_get_page notion_create_page notion_update_page notion_archive_page notion_query_database notion_get_block_children notion_append_blocks notion_append_table_row notion_delete_block notion_reload_token

Vault

vault_search vault_get_item vault_get_field vault_create_item vault_update_item vault_list_folders

LM Studio

lmstudio_status lmstudio_load lmstudio_unload

Ollama

ollama_status ollama_generate ollama_embed ollama_pull ollama_unload

Qdrant

qdrant_collections qdrant_search qdrant_upsert

ガイド付き診断

diagnose_service diagnose_endpoint audit_host check_backup_chain

ジョブ & 内省

job_run job_status job_list job_logs mcp_health get_mcp_health mcp_stats get_mcp_stats audit_export plan_mutation confirm_mutation rollback_change

完全な生成ツールリファレンス は、各グループを各ツールの正確なシグネチャとモデル向けの説明を含むテーブルに展開します。CI は登録された関数に対してそれを検証します。

ガイド付き診断は常に観察後に停止します。それらは証拠、評価、および correction_applied: false とともに次のステップの提案を返します。check_backup_chain は鮮度とストレージのシグナルであり、復元が成功するという証明ではありません。

セキュリティ

MCP Hub は設計上、リモートコード実行サービスです。公開する前に以下の点を確認してください:

  • デフォルトの 127.0.0.1 バインディングを維持するか、アクセスポリシー付きのトンネルの背後に配置します。

  • MCP_AUTH_TOKEN を設定します — シークレットURLパスは難読化であり、認証ではありません。

  • モデルが何をするかを信頼するまでは MCP_READ_ONLY=true のままにしておきます。

  • リソースガードのデフォルトを有効にしたままにし、監視された監査トラフィックから調整を行い、無効にしないでください。

  • 専用のSSHキーと最小限の hosts.yaml を割り当てます。

完全な脅威モデル、強化ガイド、脆弱性報告については:SECURITY.md

公開前のチェックリストと、プッシュ前に一般的な秘密漏洩のミスを検出するオプションのGitフックについては、scripts/check_security_readiness.py および scripts/install_pre_push_hook.sh を参照してください。

バージョン管理

SemVer。1.0 未満では、破壊的変更は マイナー バージョンを上げます — そのため、アップグレードする前に ChangedRemoved のノートを読んでください。_version.py が単一の信頼源です。実行中のサーバーは mcp-hub --version、MCPハンドシェイク、および mcp_health でそれを報告します。

すべてのリリースは CHANGELOG.md に文書化されており、セキュリティ関連の変更は独自のセクションで強調表示されます。

コントリビューション

問題やプルリクエストは歓迎します — 特にバグ報告、新しい統合、ドキュメント修正です。CONTRIBUTING.md を参照してください。

ライセンス

MIT © wnx82

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for full Home Assistant control, enabling AI agents to manage dashboards, automations, files, apps, entities, and more via REST API, WebSocket, and SSH.
    66
    116
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    An MCP server that gives AI assistants real-time access to your homelab infrastructure. It enables querying node status, managing Docker containers, controlling Proxmox VMs, and inspecting OPNsense firewall state through natural conversation.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wnx82/mcp-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server