The repository is synapse-rmcp, the Rust crate is synapse, the MCP server
identity is synapse, and the installed binary is synapse. The npm launcher
package is synapse-rmcp.
Across most of the RMCP family, naming follows
repo=<service>-rmcp, npm=<service>-rmcp, and CLI=r<service>. Synapse is an
exception because it is a Rust port of the older TypeScript synapse-mcp
project and keeps the operator-facing synapse binary.
Capabilities And Boundaries
Synapse provides local Docker, Compose, host, SSH, log, ZFS, and file-operation
workflows through two MCP tools and the equivalent CLI:
flux manages Docker infrastructure, containers, Compose projects, and host
inspection.
REST exists only as a compatibility shim for a subset of actions.
The web surface is a lightweight static admin shell, not a full dashboard.
Not for: arbitrary shell access, unaudited remote mutation, or bypassing
host SSH trust. Destructive Docker/Compose/exec/file-transfer actions require
explicit host targets and confirmation policy.
MCP callers never provide credentials, tokens, keys, or secrets as action
arguments. Tokens, OAuth settings, host topology, SSH trust, and allowlists live
in server-side configuration or the local SSH environment.
Install
Use the npm launcher for stdio MCP or CLI access without a manual binary
install:
The npm package downloads the synapse binary from GitHub Releases during
postinstall, keeping the release tag aligned with
packages/synapse-rmcp/package.json.
From source:
cargo build --release
The production image includes Python 3 plus the official Docker CLI/Compose
plugin because Scout's remote descriptor wrappers and Flux Compose operations
invoke those runtime tools. The image does not contain a Docker daemon; Flux
uses the mounted socket or SSH-forwarded remote socket. Persistent appdata lives
at ~/.synapse on the host and /data in the container.
plugins/synapse/ ships Claude Code, Codex, and Gemini CLI manifests that all
point at the same HTTP MCP endpoint and the same shared skill.
These packages contain no lifecycle hooks. Connecting to a server that is
already running needs no setup — the manifests substitute your server_url and
api_token directly. If this machine also runs the server, bootstrap it once
by hand:
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
Export the relevant SYNAPSE_* variables (or write them to ~/.synapse/.env)
first; plugins/README.md maps each plugin option to its variable. Re-run
synapse setup install after a plugin update.
Runtime Surfaces
Surface
Status
Purpose
MCP
Required
Agent-facing flux and scout tools
CLI
Required
Scriptable parity surface for operators
REST
Compatibility
Thin local action endpoint for 14 of 59 actions
Web
Present
Lightweight static admin shell
MCP Tool Reference
Synapse exposes two MCP tools:
flux: Docker daemon, container, host, and Compose operations.
The detailed action tables below are curated README reference material. The
generated runtime MCP schema and the Rust action definitions are the source of
truth for the live tool contract.
See Configuration and docs/CONFIG.md for the full auth
matrix.
Safety And Trust Model
Synapse separates read and write scopes (synapse:read, synapse:write) and
uses confirmation gates for destructive operations. SYNAPSE_MCP_ALLOW_DESTRUCTIVE
can skip prompts only in loopback-safe contexts. Host protocol is authoritative
and defaults to SSH when omitted; local execution requires the explicit built-in
local host or protocol: "local". SSH host trust is delegated to OpenSSH
known-hosts behavior, and command execution uses execvp/argv semantics without
shell interpolation. scout beam enforces both endpoints' configured read roots,
blocks sensitive and symlinked paths, and caps each transfer at 64 MiB.
scout exec and scout emit accept only these 18 typed commands
(ALLOWED_READ_COMMANDS in src/synapse/command_policy.rs):
git is deliberately excluded, as are shells, interpreters, network clients, and
mutating tools (EXEC_DENYLIST). There is no find or sort in the allowlist —
use the dedicated scout find action for filesystem search. Per-host custom
commands may be enabled via execAllowlist, but receive a zero-argument policy
until a typed argument policy is registered.
Distribution Contract
The source of truth for release identity is the version shared by Cargo.toml,
.release-please-manifest.json, packages/synapse-rmcp/package.json, release
artifacts, and server.json.
Distribution/version invariants:
The npm package downloads the matching GitHub Release binary.
The installed binary remains synapse.
server.json must point at ghcr.io/dinglebear-ai/synapse:<version>.
Plugin manifests stay versionless where marketplaces derive identity from git
state.
Generated docs and schemas must come from source-controlled generation
inputs; curated README/docs should point at source-of-truth files for details.
Verification
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
Use bearer or OAuth before exposing the endpoint beyond loopback. Production
Docker/Compose notes live in docs/DEPLOYMENT.md and docs/DOCKER.md when
present; local operator usage can stay on stdio.
Troubleshooting
401 or 403 from /mcp: check bearer/OAuth settings and gateway headers.
no hosts appear: check SYNAPSE_HOSTS_CONFIG, SYNAPSE_CONFIG_FILE, and
~/.ssh/config.
destructive actions are refused: confirm the host target and confirmation
policy.
Bounded root-confined file transfer (destructive); requires source_host, source_path, dest_host, dest_path; both paths must be under configured Scout/Compose roots
scout zfs — ZFS introspection (3 subactions)
Subaction
Scope
Description
pools
synapse:read
List ZFS pools; requires host; optional pool name filter
datasets
synapse:read
List ZFS datasets; requires host; optional pool, dataset_type, recursive
snapshots
synapse:read
List ZFS snapshots; requires host; optional pool, dataset, limit
scout logs — Log retrieval (4 subactions)
Subaction
Scope
Description
syslog
synapse:read
Read /var/log/syslog (falls back to /var/log/messages); requires host; optional lines, grep
Read kernel ring buffer; requires host; optional lines, grep
auth
synapse:read
Read /var/log/auth.log (falls back to /var/log/secure); requires host; optional lines, grep
scout help — Auto-generated scout docs
Action
Scope
Description
help
public
Return scout action reference; optional topic (e.g. "zfs:pools"), format (markdown|json)
Known Parity Gaps
synapse achieves action-level parity with synapse-mcp — all 59
production actions from synapse-mcp/docs/INVENTORY.md are implemented. However,
the following features from the original TypeScript server are not yet ported:
Not ported
Feature
Description
claude/channel notifications
Original forwards Docker events and log tails as notifications/claude/channel MCP notifications. No equivalent exists in Rust.
Templated MCP resources
Original exposes 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 exposes tool-specific schema and help resources plus read-scoped synapse://hosts, synapse://compose/projects, synapse://status, and synapse://activity.
Root SSH login gate
Original gates sshUser=root through elicitation unless SYNAPSE_ALLOW_ROOT_LOGIN=true. Rust has destructive-operation elicitation but no root-login gate.
TOFU fingerprint store
Original persists fingerprints to ~/.config/synapse/known_hosts.json and rejects changed fingerprints. Rust uses strict OpenSSH known_hosts with wildcard warnings — different operator behavior.
SYNAPSE_EXCLUDE_HOSTS
Original env var to exclude hosts from fleet discovery is absent in Rust.
SYNAPSE_MCP_ALLOW_YOLO
Original "skip all confirmation gates" mode. Rust has SYNAPSE_MCP_ALLOW_DESTRUCTIVE (per-restart override, loopback-only), which is not identical.
SYNAPSE_DEBUG_ERRORS
Original opt-in mode that returns full internal error detail. Rust always sanitizes internal tool errors.
git in exec allowlist
Original includes git in ALLOWED_READ_COMMANDS with flag guards. Rust deliberately excludes git.
Maximum simultaneous in-flight operational requests. Excess requests receive HTTP 429 with Retry-After. Set to 0 to disable. Public probes, OAuth discovery, and static assets are exempt from concurrency shedding.
SYNAPSE_MCP_PUBLIC_URL
unset
OAuth public URL; HTTPS required except loopback development.
SYNAPSE_HOSTS_CONFIG
unset
Inline host topology. Omitted host protocols default to SSH; local execution requires protocol: "local".
See .env.example for the full list of variables, docs/CONFIG.md for
configuration details, and docs/SECURITY.md for transport, path, transfer,
container, and CI runner trust boundaries.
Run
# 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
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
Development
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
Useful docs:
docs/API.md for full tool contracts
docs/CONFIG.md for environment and auth
docs/QUICKSTART.md for local smoke tests
plugins/synapse/skills/synapse/SKILL.md for agent usage guidance
tests/parity.rs for automated parity verification against synapse-mcp INVENTORY
Documentation
This README is curated for first-run orientation and high-level action discovery.
Source-of-truth docs and code are split as follows:
docs/API.md for the curated action contract reference.
docs/MCP_SCHEMA.md for MCP schema shape and drift expectations.
docs/CONFIG.md for environment and auth policy.
docs/QUICKSTART.md for local smoke tests.
docs/PLUGINS.md and plugins/synapse/skills/synapse/SKILL.md for agent
and marketplace usage.
docs/generated/openapi.json for generated OpenAPI output.
src/flux_service/, src/scout_service/, and src/mcp/ for runtime source
of truth.
Related Servers
runifi - UniFi controller REST API bridge.
rtailscale - Tailscale API bridge for devices, users, and tailnet operations.
unraid / runraid - Unraid GraphQL bridge for NAS and server management.
rapprise - Apprise notification fan-out bridge for many delivery backends.
rgotify - Gotify push notification bridge for sends, messages, apps, and clients.
rarcane - Arcane Docker management bridge for containers and related resources.
yarr - Media-stack bridge for Sonarr, Radarr, Prowlarr, Plex, and related services.
rytdl - Media download and metadata workflow server.
cortex - Syslog and homelab log aggregation MCP server.
axon - RAG, crawl, scrape, extract, and semantic search project.
labby - Homelab control plane and Labby gateway project.
lumen - Local semantic code search MCP server.
nugs - Project/package management helper for local agent workflows.
agentcast - Agent transcript and activity publishing project.
soma - RMCP scaffold/runtime template for new provider-backed servers.
License
Original Dinglebear-authored portions of this project are licensed under AGPL-3.0-only. Separate commercial licensing is available for organizations that need terms outside the AGPL. Third-party material remains under its original license. See LICENSING.md.
S
Synapse
dinglebear-ai·Звёзд: 2·
Rust MCP and CLI server for local Synapse workflows: Docker/Compose control, host inspection, SSH, logs, ZFS, and safe file operations.
Списка инструментов пока нет. У удалённых серверов он появляется после первой проверки состояния.
FAQ
Вопросы
Как установить Synapse?
Скопируйте на этой странице конфигурацию stdio для Cursor, Claude Desktop, Claude Code или VS Code. Она использует установку издателя, а не прокси PlugMCP.
Нужен ли API-ключ для Synapse?
Издатель указывает следующие переменные окружения: SYNAPSE_HOME, SYNAPSE_HOSTS_CONFIG, SYNAPSE_CONFIG_FILE, SYNAPSE_RMCP_VERSION, SYNAPSE_RMCP_REPO, SYNAPSE_RMCP_RELEASE_BASE_URL, RUST_LOG.
Какой транспорт использует Synapse?
Synapse работает локально через stdio.
Когда Synapse проверялся в последний раз?
Последняя проверка: 2026-10-28. Rust MCP and CLI server for local Synapse workflows: Docker/Compose control, host inspection, SSH, logs, ZFS, and safe file operations.