Synapse RMCP について
Synapseは、Docker、Compose、ホスト、SSH、ログ、ZFS、ファイル操作を管理する運用担当者やエージェント向けのRust製MCPサーバーとCLIです。`flux`と`scout`の2つのツールで操作を提供し、コマンド実行や破壊的操作に制限を設けています。
主な機能
- 01Docker、コンテナ、Composeプロジェクトの管理
- 02ローカルおよびSSHホストの確認
- 03ログとZFS情報の取得
- 04安全なファイル読み取りと許可コマンドの実行
- 05設定済みパス内でのファイル転送
- 06同等のCLI操作を提供
活用シーン
- 01リモートホストとSSH環境の確認
- 02コンテナの状態、ログ、リソース情報の確認
- 03許可リスト内のホストコマンドの実行
- 04ZFSストレージの確認と制限付きファイル転送
MCP 対応
`flux`と`scout`を通じて、Docker、Compose、ホスト確認、ファイル、SSH、ZFS、ログの操作をMCPクライアントに公開します。破壊的操作には対象ホストと確認ポリシーが必要で、コマンド実行は許可リストに制限されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @dinglebear/synapseSYNAPSE_HOMEOptional Synapse appdata directory.SYNAPSE_HOSTS_CONFIGInline host topology as a JSON array.SYNAPSE_CONFIG_FILEPath to a host configuration file.SYNAPSE_RMCP_VERSIONOptional GitHub release tag override for the downloaded Synapse binary.SYNAPSE_RMCP_REPOOptional GitHub owner/repo override for release asset downloads.SYNAPSE_RMCP_RELEASE_BASE_URLOptional release download base URL override.RUST_LOGTracing filter for Synapse logs.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
synapse-rmcp
MCP と CLI で、ホスト、Docker、Compose、SSH、ログ、ZFS、ファイル操作を実行します。
Synapse は、rmcp フレームワークで構築された、synapse-mcp の完全互換な Rust 移植版です。
このサーバーは 2 つの MCP ツール(flux と scout)と、それに相当する CLI コマンドを公開し、元の TypeScript サーバーにある本番用の 59 のアクションすべてを網羅しています。
目次
- 命名
- 機能と境界
- インストール
- クイックスタート
- クライアント設定
- プラグインパッケージ
- ランタイムのインターフェース
- MCP ツールリファレンス
- CLI リファレンス
- 認証
- 安全性と信頼モデル
- 配布契約
- 検証
- デプロイ
- トラブルシューティング
- ツールとアクション
- 既知の互換性の差異
- 設定
- 実行
- アーキテクチャ
- 開発
- ドキュメント
- 関連サーバー
- ライセンス
命名
リポジトリ名は synapse-rmcp、Rust クレート名は synapse、MCP サーバーの ID は synapse、インストールされるバイナリ名は synapse です。npm ランチャーパッケージ名は synapse-rmcp です。
RMCP ファミリーの大半では、命名規則は repo=<service>-rmcp、npm=<service>-rmcp、CLI=r<service> です。Synapse は、旧 TypeScript プロジェクト synapse-mcp の Rust 移植版であり、運用者向けの synapse バイナリ名を維持しているため例外です。
機能と境界
Synapse は、2 つの MCP ツールとそれに相当する CLI を通じて、Docker、Compose、ホスト、SSH、ログ、ZFS、ファイル操作のローカルワークフローを提供します。
fluxは Docker インフラストラクチャ、コンテナー、Compose プロジェクト、ホストの調査を管理します。scoutは SSH/ローカルホストの調査、安全なファイル読み取り、許可リストに基づくコマンド実行、ディスクリプターで制限されたファイル転送、ZFS のイントロスペクション、ログ取得を処理します。- REST は、一部のアクションに対する互換性用シムとしてのみ存在します。
- Web インターフェースは軽量な静的管理シェルであり、フル機能のダッシュボードではありません。
対象外: 任意のシェルアクセス、監査されていないリモートでの変更、ホストの SSH 信頼設定の回避。破壊的な Docker/Compose/exec/ファイル転送アクションには、明示的なホスト指定と確認ポリシーが必要です。
MCP 呼び出し元は、アクション引数として認証情報、トークン、キー、シークレットを渡しません。トークン、OAuth 設定、ホストトポロジー、SSH 信頼設定、許可リストは、サーバー側の設定またはローカルの SSH 環境に保存されます。
インストール
手動でバイナリをインストールせずに stdio MCP または CLI を利用するには、npm ランチャーを使用します。
npx -y @dinglebear/synapse --help
npx -y @dinglebear/synapse mcp
コマンドを永続的に使うには:
npm i -g @dinglebear/synapse
synapse --version
npm パッケージは postinstall 時に GitHub Releases から synapse バイナリをダウンロードし、リリースタグを packages/synapse-rmcp/package.json と一致させます。
ソースからインストールする場合:
cargo build --release
本番用イメージには Python 3 と公式の Docker CLI/Compose プラグインが含まれています。Scout のリモートディスクリプターラッパーと Flux の Compose 操作は、これらのランタイムツールを呼び出すためです。イメージには Docker デーモンは含まれていません。Flux はマウントされたソケット、または SSH で転送されたリモートソケットを使用します。永続的なアプリデータは、ホスト上の ~/.synapse とコンテナー内の /data に保存されます。
クイックスタート
最初の画面から 30 秒で試せる手順は次のとおりです。
npx -y @dinglebear/synapse mcp
次に、stdio を使用する MCP クライアントを設定します。
{
"mcpServers": {
"synapse": {
"command": "npx",
"args": ["-y", "synapse-rmcp", "mcp"]
}
}
}
まずは読み取り専用の呼び出しから始めます。
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "scout",
"arguments": {
"action": "nodes"
}
}
}
クライアント設定
ローカル MCP クライアントには stdio を推奨します。
{
"mcpServers": {
"synapse": {
"command": "synapse",
"args": ["mcp"]
}
}
}
Streamable HTTP は、設定済みのホストとポートで /mcp を使用します。
{
"mcpServers": {
"synapse": {
"url": "http://127.0.0.1:40080/mcp",
"headers": {
"Authorization": "Bearer ${SYNAPSE_MCP_TOKEN}"
}
}
}
}
プラグインパッケージ
plugins/synapse/ には、同じ HTTP MCP エンドポイントと共有スキルを参照する Claude Code、Codex、Gemini CLI のマニフェストが含まれています。
これらのパッケージにはライフサイクルフックはありません。すでに実行中のサーバーへの接続にセットアップは不要です。マニフェストが server_url と api_token を直接置き換えます。このマシンでもサーバーを実行する場合は、手動で一度だけブートストラップしてください。
synapse setup install # put/refresh the binary on PATH
synapse setup plugin-hook # check, then repair on blocking failures
synapse setup plugin-hook --no-repair # audit only; never mutates appdata
先に該当する SYNAPSE_* 変数をエクスポートするか、~/.synapse/.env に書き込んでください。各プラグインのオプションと変数の対応は plugins/README.md に記載されています。プラグインの更新後は synapse setup install を再実行してください。
ランタイムのインターフェース
| インターフェース | 状態 | 目的 |
|---|---|---|
| MCP | 必須 | エージェント向けの flux および scout ツール |
| CLI | 必須 | 運用担当者向けのスクリプト可能な同等インターフェース |
| REST | 互換性 | 59 個中 14 個のアクションに対応する、シンプルなローカルアクションエンドポイント |
| Web | 提供中 | 軽量な静的管理シェル |
MCP ツールのリファレンス
Synapse は 2 つの MCP ツールを公開します。
flux:Docker デーモン、コンテナー、ホスト、Compose の操作。scout:SSH/ローカルホストの調査、ファイルシステムの読み取り、許可リストに登録された exec、複数ホストへの送信、ファイル転送、ZFS、ログ。
両方のツールで、アクションを振り分ける次の JSON 形式を使用します。
{"name":"flux","arguments":{"action":"docker","subaction":"info"}}
{"name":"scout","arguments":{"action":"nodes"}}
以下の詳細なアクション表は、README のリファレンス用に整理した内容です。稼働中のツールの契約については、生成されたランタイム MCP スキーマと Rust のアクション定義が信頼できる唯一の情報源です。
CLI リファレンス
よく使うコマンド:
synapse flux docker info
synapse flux container list
synapse flux compose list --host myhost
synapse scout nodes
synapse scout exec --host myhost --command hostname
synapse scout zfs pools --host myhost
synapse scout logs journal --host myhost --unit docker
認証
マウントされた HTTP では、Bearer と Google OAuth のモードをサポートしています。ループバックの stdio/ローカル開発環境では、マウントされた HTTP 認証なしで実行できます。重要な変数:
SYNAPSE_MCP_HOST=127.0.0.1
SYNAPSE_MCP_PORT=40080
SYNAPSE_MCP_TOKEN=change-me
SYNAPSE_MCP_AUTH_MODE=bearer
認証の全体像については、設定 と docs/CONFIG.md を参照してください。
安全性と信頼モデル
Synapse は読み取りスコープと書き込みスコープ(synapse:read、synapse:write)を分離し、破壊的な操作には確認ゲートを使用します。SYNAPSE_MCP_ALLOW_DESTRUCTIVE は、ループバックの安全なコンテキストでのみプロンプトを省略できます。ホストの protocol が優先され、省略時は SSH がデフォルトになります。ローカル実行には、明示的な組み込みの local ホスト、または protocol: "local" が必要です。SSH ホストの信頼性は OpenSSH の known-hosts の動作に委ねられ、コマンド実行ではシェルによる補間を行わず、execvp/argv のセマンティクスを使用します。scout beam は両エンドポイントに設定された読み取りルートを適用し、機密パスおよびシンボリックリンクのパスをブロックし、各転送のサイズを 64 MiB までに制限します。
scout exec と scout emit で使用できるのは、次の 18 個の型付きコマンドのみです(src/synapse/command_policy.rs の ALLOWED_READ_COMMANDS)。
cat、head、tail、grep、rg、ls、tree、wc、uniq、diff、stat、
file、du、df、pwd、hostname、uptime、whoami
git は意図的に除外されています。シェル、インタープリター、ネットワーククライアント、変更を加えるツールも同様です(EXEC_DENYLIST)。許可リストに find や sort はありません。ファイルシステムの検索には、専用の scout find アクションを使用してください。ホストごとのカスタムコマンドは execAllowlist で有効にできますが、型付き引数ポリシーが登録されるまでは、引数なしのポリシーが適用されます。
配布契約
リリース ID の信頼できる唯一の情報源は、Cargo.toml、.release-please-manifest.json、packages/synapse-rmcp/package.json、リリース成果物、server.json で共有されるバージョンです。
配布/バージョンに関する不変条件:
- npm パッケージは、対応する GitHub Release のバイナリをダウンロードします。
- インストールされるバイナリ名は引き続き
synapseです。 server.jsonはghcr.io/dinglebear-ai/synapse:<version>を参照する必要があります。- マーケットプレイスが git の状態から ID を特定する場合、プラグインマニフェストにはバージョンを記載しません。
- 生成されるドキュメントとスキーマは、ソース管理されている生成入力から作成する必要があります。詳細については、整理された README/ドキュメントから信頼できる唯一の情報源となるファイルを参照してください。
検証
just validate-plugin # plugin manifests, MCP config, monitors, skills
npm --prefix packages/synapse-rmcp run check
cargo fmt --check
cargo check
cargo test
git diff --check
デプロイ
永続的なマウント型 HTTP サーバーの場合:
SYNAPSE_MCP_HOST=0.0.0.0 \
SYNAPSE_MCP_PORT=40080 \
SYNAPSE_MCP_TOKEN=change-me \
synapse serve
ループバックの外部にエンドポイントを公開する前に、Bearer または OAuth を使用してください。本番環境の Docker/Compose に関する説明は、docs/DEPLOYMENT.md および docs/DOCKER.md が存在する場合はそちらに記載されています。ローカルの運用では stdio のまま使用できます。
トラブルシューティング
/mcpから401または403が返される場合:ベアラー/OAuth の設定とゲートウェイのヘッダーを確認してください。- ホストが表示されない場合:
SYNAPSE_HOSTS_CONFIG、SYNAPSE_CONFIG_FILE、および~/.ssh/configを確認してください。 - 破壊的な操作が拒否される場合:ホストの対象と確認ポリシーを確認してください。
- SSH エラーが発生する場合:まず OpenSSH の known_hosts、mux/ソケットの利用可否、および Synapse 外からホストに到達できることを確認してください。
ツールとアクション
flux — Docker インフラストラクチャの管理
flux docker — Docker デーモンの操作(9 アクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
info | synapse:read | Docker デーモンの情報 |
df | synapse:read | Docker のディスク使用量 |
images | synapse:read | Docker イメージの一覧表示。dangling_only でタグのないイメージを絞り込み |
networks | synapse:read | Docker ネットワークの一覧表示 |
volumes | synapse:read | Docker ボリュームの一覧表示 |
pull | synapse:write | Docker イメージをプル。host、image が必要 |
build | synapse:write | Docker イメージをビルド。host、context、tag が必要。dockerfile、no_cache は任意 |
rmi | synapse:write | Docker イメージを削除。host、image、force=true が必要 |
prune | synapse:write | 未使用のリソースを削除。host、prune_target、force=true が必要 |
flux container — コンテナのライフサイクルと検査(14 アクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
list | synapse:read | コンテナの一覧表示。state、name_filter、image_filter、label_filter は任意 |
inspect | synapse:read | コンテナの詳細情報。container_id が必要。summary は任意 |
logs | synapse:read | コンテナのログ。container_id が必要。lines、since、until、grep、stream は任意 |
stats | synapse:read | リソース使用状況の統計。container_id は任意 |
top | synapse:read | 実行中のプロセスを表示。container_id が必要 |
search | synapse:read | 名前/イメージ/ラベルによる全文検索。query が必要 |
start | synapse:write | 停止中のコンテナを起動。host、container_id が必要 |
stop | synapse:write | 実行中のコンテナを停止(破壊的)。host、container_id が必要 |
restart | synapse:write | コンテナを再起動。host、container_id が必要 |
pause | synapse:write | 実行中のコンテナを一時停止。host、container_id が必要 |
resume | synapse:write | 一時停止中のコンテナを再開。host、container_id が必要 |
pull | synapse:write | コンテナの最新イメージをプル。host、container_id が必要 |
recreate | synapse:write | イメージをプルしてコンテナを再作成(破壊的)。host、container_id が必要。pull は任意(デフォルトは true) |
exec | synapse:write | コンテナ内でコマンドを実行(破壊的、execvp)。host、container_id、command 配列が必要 |
flux host — ホストの検査(9 アクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
status | synapse:read | ホスト上の Docker 接続を確認 |
info | synapse:read | OS、カーネル、アーキテクチャ |
uptime | synapse:read | システムの稼働時間 |
resources | synapse:read | CPU、メモリ、ディスクの使用量 |
services | synapse:read | systemd サービスの状態。host が必要。state、service は任意 |
network | synapse:read | ネットワークインターフェース |
mounts | synapse:read | マウント済みファイルシステム。host が必要 |
ports | synapse:read | ポートマッピング。host が必要。protocol、limit、offset は任意 |
doctor | synapse:read | 診断チェック。host が必要。checks は任意(カンマ区切り) |
flux compose — Docker Compose プロジェクト管理(10 アクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
list | synapse:read | すべての Docker Compose プロジェクトを一覧表示します。host が必要です |
status | synapse:read | プロジェクトのサービス状態を取得します。host、project が必要です。service は任意です |
up | synapse:write | Compose プロジェクトを起動します。host、project が必要です |
down | synapse:write | Compose プロジェクトを停止します(破壊的操作)。host、project が必要です。remove_volumes、force は任意です |
restart | synapse:write | Compose プロジェクトを再起動します(破壊的操作)。host、project が必要です |
recreate | synapse:write | Compose コンテナーを再作成します(破壊的操作)。host、project が必要です |
logs | synapse:read | プロジェクトのログを取得します。host、project が必要です。service、lines、since は任意です |
build | synapse:write | Compose プロジェクトのイメージをビルドします。host、project が必要です。service は任意です |
pull | synapse:write | Compose プロジェクトのイメージをプルします。host、project が必要です。service は任意です |
refresh | synapse:read | Compose プロジェクトのキャッシュを更新します。host が必要です |
flux help — 自動生成される flux ドキュメント
| アクション | スコープ | 説明 |
|---|---|---|
help | public | flux アクションのリファレンスを返します。topic(例:"container:list")、format(markdown|json)は任意です |
scout — SSH/ローカルホストの調査
Scout のシンプルなアクション(9 アクション)
| アクション | スコープ | 説明 |
|---|---|---|
nodes | synapse:read | 設定済みの SSH ホストをすべて一覧表示します |
peek | synapse:read | ファイルまたはディレクトリ一覧を読み取ります。host、path が必要です。tree、depth は任意です |
find | synapse:read | glob パターンでファイルを検索します。host、path、pattern が必要です。depth、limit は任意です |
ps | synapse:read | プロセスを一覧表示します。host が必要です。sort(cpu|mem|pid|time)、grep、user、limit は任意です |
df | synapse:read | ディスク使用量を表示します。host が必要です。path は任意です |
delta | synapse:read | ファイルまたはコンテンツを比較します。source_host、source_path が必要です。そのうえで、target_host と target_path、または content のいずれかが必要です |
exec | synapse:write | 許可リストに登録されたコマンドを実行します(破壊的操作、execvp)。host、command が必要です。path、args、timeout_secs は任意です |
emit | synapse:write | 複数ホストでコマンドを実行します(破壊的操作)。targets 配列、command が必要です。args、timeout_secs は任意です |
beam | synapse:write | ルート配下に制限したファイル転送を行います(破壊的操作)。source_host、source_path、dest_host、dest_path が必要です。両方のパスが、設定済みの Scout/Compose ルート配下にある必要があります |
scout zfs — ZFS の情報取得(3 サブアクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
pools | synapse:read | ZFS プールを一覧表示します。host が必要です。プール名による絞り込み用の pool は任意です |
datasets | synapse:read | ZFS データセットを一覧表示します。host が必要です。pool、dataset_type、recursive は任意です |
snapshots | synapse:read | ZFS スナップショットを一覧表示します。host が必要です。pool、dataset、limit は任意です |
scout logs — ログの取得(4 サブアクション)
| サブアクション | スコープ | 説明 |
|---|---|---|
syslog | synapse:read | /var/log/syslog を読み取ります(存在しない場合は /var/log/messages にフォールバックします)。host が必要です。lines、grep は任意です |
journal | synapse:read | systemd ジャーナルを読み取ります。host が必要です。lines、unit、priority、since、until、grep は任意です |
dmesg | synapse:read | カーネルリングバッファーを読み取ります。host が必要です。lines、grep は任意です |
auth | synapse:read | /var/log/auth.log を読み取ります(存在しない場合は /var/log/secure にフォールバックします)。host が必要です。lines、grep は任意です |
scout help — 自動生成される scout ドキュメント
| アクション | スコープ | 説明 |
|---|---|---|
help | public | scout アクションのリファレンスを返します。topic(例:"zfs:pools")、format(markdown|json)は任意です |
既知のパリティギャップ
synapse は synapse-mcp とアクションレベルのパリティを実現しており、synapse-mcp/docs/INVENTORY.md にある本番用アクション 59 件すべてが実装されています。ただし、元の TypeScript サーバーにある以下の機能は、まだ移植されていません。
未移植
| 機能 | 説明 |
|---|---|
claude/channel 通知 | 元のサーバーは、Docker イベントとログの末尾を notifications/claude/channel MCP 通知として転送します。Rust に同等の機能はありません。 |
| テンプレート化された MCP リソース | 元のサーバーは synapse://hosts/{host}、synapse://hosts/{host}/stacks、synapse://stacks、synapse://stacks/{host}/{stack}、synapse://stacks/{host}/{stack}/env、synapse://containers/{host}、synapse://containers/{host}/{id} を公開します。Rust は、ツール固有のスキーマおよびヘルプリソースに加え、読み取りスコープの synapse://hosts、synapse://compose/projects、synapse://status、synapse://activity を公開します。 |
| root SSH ログインゲート | 元のサーバーは、SYNAPSE_ALLOW_ROOT_LOGIN=true が設定されていない場合、エリシテーションを通じて sshUser=root を制限します。Rust には破壊的操作のエリシテーションはありますが、root ログインゲートはありません。 |
| TOFU フィンガープリントストア | 元のサーバーはフィンガープリントを ~/.config/synapse/known_hosts.json に保存し、変更されたフィンガープリントを拒否します。Rust は厳密な OpenSSH known_hosts を使用し、ワイルドカードに関する警告を表示します。オペレーターの操作は異なります。 |
SYNAPSE_EXCLUDE_HOSTS | フリートの検出対象からホストを除外する元の環境変数は、Rust にはありません。 |
SYNAPSE_MCP_ALLOW_YOLO | 元の「すべての確認ゲートをスキップする」モードです。Rust には SYNAPSE_MCP_ALLOW_DESTRUCTIVE(再起動ごとのオーバーライド、ループバック限定)がありますが、同一ではありません。 |
SYNAPSE_DEBUG_ERRORS | 完全な内部エラーの詳細を返す、元のオプトインモードです。Rust は内部ツールエラーを常にサニタイズします。 |
exec 許可リストの git | 元のサーバーは、フラグガード付きで ALLOWED_READ_COMMANDS に git を含めています。Rust は意図的に git を除外しています。 |
設定
SYNAPSE_MCP_HOST=127.0.0.1
SYNAPSE_MCP_PORT=40080
SYNAPSE_MCP_TOKEN=change-me
主な環境変数:
| 変数 | デフォルト | 説明 |
|---|---|---|
SYNAPSE_MCP_HOST | 127.0.0.1 | HTTP トランスポートのバインドホストです。 |
SYNAPSE_MCP_PORT | 40080 | HTTP トランスポートのバインドポートです。 |
SYNAPSE_MCP_TOKEN | 未設定 | 認証用の静的ベアラートークンです。 |
SYNAPSE_MCP_NO_AUTH | false | ループバックでの開発に限り、認証を無効にします。 |
SYNAPSE_NOAUTH | false | 認証/認可を、分離された信頼済み上流ゲートウェイに委任します。 |
SYNAPSE_MCP_ALLOW_DESTRUCTIVE | false | 破壊的操作の確認プロンプトをスキップします(ループバック限定)。 |
SYNAPSE_MCP_MAX_CONCURRENCY | 50 | 同時に処理中となる運用リクエストの最大数です。上限を超えたリクエストには、Retry-After を付けて HTTP 429 が返されます。無効にするには 0 を設定してください。公開プローブ、OAuth ディスカバリー、静的アセットは、同時実行数の制限対象外です。 |
SYNAPSE_MCP_PUBLIC_URL | 未設定 | OAuth の公開 URL です。ループバックでの開発を除き、HTTPS が必要です。 |
SYNAPSE_HOSTS_CONFIG | 未設定 | インラインのホストトポロジーです。ホストのプロトコルを省略した場合は SSH がデフォルトになります。ローカル実行には protocol: "local" が必要です。 |
環境変数の全一覧は .env.example、設定の詳細は docs/CONFIG.md、トランスポート、パス、転送、コンテナー、CI ランナーの信頼境界については docs/SECURITY.md を参照してください。
実行
# Start MCP server (stdio transport)
cargo run -- mcp
# Start HTTP server
cargo run -- serve
# CLI examples
cargo run -- flux docker info
cargo run -- flux container list
cargo run -- flux compose list --host myhost
cargo run -- scout nodes
cargo run -- scout exec --host myhost --command hostname
cargo run -- scout zfs pools --host myhost
cargo run -- scout logs journal --host myhost --unit docker
MCP の例:
{"name":"flux","arguments":{"action":"docker","subaction":"info"}}
{"name":"flux","arguments":{"action":"container","subaction":"list","state":"running"}}
{"name":"flux","arguments":{"action":"compose","subaction":"status","host":"myhost","project":"mystack"}}
{"name":"scout","arguments":{"action":"nodes"}}
{"name":"scout","arguments":{"action":"exec","host":"myhost","command":"hostname"}}
{"name":"scout","arguments":{"action":"zfs","subaction":"pools","host":"myhost"}}
{"name":"scout","arguments":{"action":"logs","subaction":"journal","host":"myhost","unit":"docker"}}
アーキテクチャ
FluxService (src/flux_service/) Docker/container/compose/host ops
ScoutService (src/scout_service/) SSH/exec/fs/zfs/logs ops
↓ via SynapseService facade (src/app.rs)
MCP shims (src/mcp/tools.rs) tool args → service → Value
CLI shim (src/cli.rs) argv → service → stdout
REST layer (src/api.rs) POST /v1/synapse → service → JSON
開発
cargo fmt --check
cargo test
cargo clippy -- -D warnings
cargo build --release
just dev # serve with no auth (loopback, dev mode)
just test # cargo test
just lint # clippy
just fmt # cargo fmt
参考ドキュメント:
- ツールの契約全般については
docs/API.md - 環境と認証については
docs/CONFIG.md - ローカルでのスモークテストについては
docs/QUICKSTART.md - エージェントの使用ガイダンスについては
plugins/synapse/skills/synapse/SKILL.md - synapse-mcp INVENTORY との自動パリティ検証については
tests/parity.rs
ドキュメント
この README は、初回利用時の案内と、アクションを大まかに把握するために構成されています。 正本となるドキュメントとコードは、次のとおりです。
- キュレーションされたアクション契約のリファレンスは
docs/API.mdを参照してください。 - MCP スキーマの形式と変更への想定は
docs/MCP_SCHEMA.mdを参照してください。 - 環境と認証ポリシーは
docs/CONFIG.mdを参照してください。 - ローカルでのスモークテストは
docs/QUICKSTART.mdを参照してください。 - エージェントとマーケットプレイスの利用方法は
docs/PLUGINS.mdおよびplugins/synapse/skills/synapse/SKILL.mdを参照してください。 - 生成された OpenAPI 出力は
docs/generated/openapi.jsonを参照してください。 - ランタイムの正本となるソースは
src/flux_service/、src/scout_service/、src/mcp/を参照してください。
関連サーバー
runifi- UniFi コントローラーの REST API ブリッジです。rtailscale- デバイス、ユーザー、tailnet の操作に対応する Tailscale API ブリッジです。unraid/runraid- NAS とサーバー管理に対応する Unraid GraphQL ブリッジです。rapprise- 多数の配信バックエンドに対応する Apprise 通知ファンアウトブリッジです。rgotify- 送信、メッセージ、アプリ、クライアントに対応する Gotify プッシュ通知ブリッジです。rarcane- コンテナーと関連リソースに対応する Arcane Docker 管理ブリッジです。yarr- Sonarr、Radarr、Prowlarr、Plex、および関連サービスに対応するメディアスタックブリッジです。rytdl- メディアのダウンロードとメタデータのワークフローに対応するサーバーです。cortex- Syslog とホームラボのログを集約する MCP サーバーです。axon- RAG、クロール、スクレイピング、抽出、セマンティック検索のプロジェクトです。labby- ホームラボのコントロールプレーンと Labby ゲートウェイのプロジェクトです。lumen- ローカルのセマンティックコード検索 MCP サーバーです。nugs- ローカルエージェントのワークフロー向けプロジェクト/パッケージ管理ヘルパーです。agentcast- エージェントのトランスクリプトとアクティビティを公開するプロジェクトです。soma- 新しいプロバイダー連携サーバー向けの RMCP スキャフォールド/ランタイムテンプレートです。
ライセンス
このプロジェクトのうち、Dinglebear が作成した部分は AGPL-3.0-only の下でライセンスされています。AGPL の適用範囲外の条件を必要とする組織向けに、別途商用ライセンスも提供しています。サードパーティの素材には、それぞれの元のライセンスが適用されます。詳細は LICENSING.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。