synapse-rmcp
Provides tools for managing Docker infrastructure, containers, Compose projects, and host inspection.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@synapse-rmcpwhat containers are running?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
synapse-rmcp
MCP server and CLI for host and container operations: Docker and Compose control, SSH, host inspection, logs, ZFS, and safe file transfer.
Synapse is a full-parity Rust port of synapse-mcp, built with the rmcp framework.
The server exposes two MCP tools (flux and scout) plus equivalent CLI
commands, covering all 59 production actions from the original TypeScript server.
Contents
Related MCP server: homebutler
Naming
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:
fluxmanages Docker infrastructure, containers, Compose projects, and host inspection.scouthandles SSH/local host inspection, safe file reads, allowlisted command execution, bounded descriptor-confined file transfer, ZFS introspection, and log retrieval.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:
npx -y synapse-rmcp --help
npx -y synapse-rmcp mcpFor a permanent command:
npm i -g synapse-rmcp
synapse --versionThe 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 --releaseThe 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.
Quickstart
The first-screen 30-second path is:
npx -y synapse-rmcp mcpThen configure an MCP client with stdio:
{
"mcpServers": {
"synapse": {
"command": "npx",
"args": ["-y", "synapse-rmcp", "mcp"]
}
}
}Start with a read-only call:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "scout",
"arguments": {
"action": "nodes"
}
}
}Client Configuration
stdio is preferred for local MCP clients:
{
"mcpServers": {
"synapse": {
"command": "synapse",
"args": ["mcp"]
}
}
}Streamable HTTP uses /mcp on the configured host and port:
{
"mcpServers": {
"synapse": {
"url": "http://127.0.0.1:40080/mcp",
"headers": {
"Authorization": "Bearer ${SYNAPSE_MCP_TOKEN}"
}
}
}
}Plugin Packages
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 appdataExport 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 |
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.scout: SSH/local host inspection, filesystem reads, allowlisted exec, multi-host emit, file beam, ZFS, and logs.
Both tools use an action-dispatched JSON shape:
{"name":"flux","arguments":{"action":"docker","subaction":"info"}}
{"name":"scout","arguments":{"action":"nodes"}}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.
CLI Reference
Common commands:
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 dockerAuthentication
Mounted HTTP supports bearer and Google OAuth modes. Loopback stdio/local dev can run without mounted HTTP auth. Important variables:
SYNAPSE_MCP_HOST=127.0.0.1
SYNAPSE_MCP_PORT=40080
SYNAPSE_MCP_TOKEN=change-me
SYNAPSE_MCP_AUTH_MODE=bearerSee 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):
cat, head, tail, grep, rg, ls, tree, wc, uniq, diff, stat,
file, du, df, pwd, hostname, uptime, whoami
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.jsonmust point atghcr.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 --checkDeployment
For a persistent mounted HTTP server:
SYNAPSE_MCP_HOST=0.0.0.0 \
SYNAPSE_MCP_PORT=40080 \
SYNAPSE_MCP_TOKEN=change-me \
synapse serveUse 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
401or403from/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.
SSH errors: verify OpenSSH known_hosts, mux/socket availability, and host reachability outside Synapse first.
Tools and Actions
flux — Docker infrastructure management
flux docker — Docker daemon operations (9 actions)
Subaction | Scope | Description |
|
| Docker daemon information |
|
| Docker disk usage |
|
| List Docker images; |
|
| List Docker networks |
|
| List Docker volumes |
|
| Pull a Docker image; requires |
|
| Build a Docker image; requires |
|
| Remove a Docker image; requires |
|
| Remove unused resources; requires |
flux container — Container lifecycle + inspection (14 actions)
Subaction | Scope | Description |
|
| List containers; optional |
|
| Detailed container info; requires |
|
| Container logs; requires |
|
| Resource usage stats; optional |
|
| Show running processes; requires |
|
| Full-text search by name/image/labels; requires |
|
| Start a stopped container; requires |
|
| Stop a running container (destructive); requires |
|
| Restart a container; requires |
|
| Pause a running container; requires |
|
| Resume a paused container; requires |
|
| Pull latest image for a container; requires |
|
| Recreate container with image pull (destructive); requires |
|
| Execute command inside container (destructive, execvp); requires |
flux host — Host inspection (9 actions)
Subaction | Scope | Description |
|
| Check Docker connectivity on a host |
|
| OS, kernel, architecture |
|
| System uptime |
|
| CPU, memory, disk usage |
|
| Systemd service status; requires |
|
| Network interfaces |
|
| Mounted filesystems; requires |
|
| Port mappings; requires |
|
| Diagnostic checks; requires |
flux compose — Docker Compose project management (10 actions)
Subaction | Scope | Description |
|
| List all Docker Compose projects; requires |
|
| Get project service status; requires |
|
| Start a compose project; requires |
|
| Stop a compose project (destructive); requires |
|
| Restart a compose project (destructive); requires |
|
| Recreate compose containers (destructive); requires |
|
| Get project logs; requires |
|
| Build compose project images; requires |
|
| Pull compose project images; requires |
|
| Refresh compose project cache; requires |
flux help — Auto-generated flux docs
Action | Scope | Description |
| public | Return flux action reference; optional |
scout — SSH/local host inspection
Scout simple actions (9 actions)
Action | Scope | Description |
|
| List all configured SSH hosts |
|
| Read a file or directory listing; requires |
|
| Find files by glob; requires |
|
| List processes; requires |
|
| Disk usage; requires |
|
| Compare files or content; requires |
|
| Execute allowlisted command (destructive, execvp); requires |
|
| Multi-host execution (destructive); requires |
|
| Bounded root-confined file transfer (destructive); requires |
scout zfs — ZFS introspection (3 subactions)
Subaction | Scope | Description |
|
| List ZFS pools; requires |
|
| List ZFS datasets; requires |
|
| List ZFS snapshots; requires |
scout logs — Log retrieval (4 subactions)
Subaction | Scope | Description |
|
| Read |
|
| Read systemd journal; requires |
|
| Read kernel ring buffer; requires |
|
| Read |
scout help — Auto-generated scout docs
Action | Scope | Description |
| public | Return scout action reference; optional |
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 |
| Original forwards Docker events and log tails as |
Templated MCP resources | Original exposes |
Root SSH login gate | Original gates |
TOFU fingerprint store | Original persists fingerprints to |
| Original env var to exclude hosts from fleet discovery is absent in Rust. |
| Original "skip all confirmation gates" mode. Rust has |
| Original opt-in mode that returns full internal error detail. Rust always sanitizes internal tool errors. |
| Original includes |
Configuration
SYNAPSE_MCP_HOST=127.0.0.1
SYNAPSE_MCP_PORT=40080
SYNAPSE_MCP_TOKEN=change-meKey environment variables:
Variable | Default | Description |
|
| Bind host for HTTP transport. |
|
| Bind port for HTTP transport. |
| unset | Static bearer token for auth. |
|
| Disable auth for loopback development only. |
|
| Delegate auth/authz to an isolated trusted upstream gateway. |
|
| Skip destructive-operation confirmation prompts (loopback only). |
|
| Maximum simultaneous in-flight operational requests. Excess requests receive HTTP 429 with |
| unset | OAuth public URL; HTTPS required except loopback development. |
| unset | Inline host topology. Omitted host protocols default to SSH; local execution requires |
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 dockerMCP examples:
{"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"}}Architecture
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 → JSONDevelopment
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 fmtUseful docs:
docs/API.mdfor full tool contractsdocs/CONFIG.mdfor environment and authdocs/QUICKSTART.mdfor local smoke testsplugins/synapse/skills/synapse/SKILL.mdfor agent usage guidancetests/parity.rsfor 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.mdfor the curated action contract reference.docs/MCP_SCHEMA.mdfor MCP schema shape and drift expectations.docs/CONFIG.mdfor environment and auth policy.docs/QUICKSTART.mdfor local smoke tests.docs/PLUGINS.mdandplugins/synapse/skills/synapse/SKILL.mdfor agent and marketplace usage.docs/generated/openapi.jsonfor generated OpenAPI output.src/flux_service/,src/scout_service/, andsrc/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
This server cannot be installed
Maintenance
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
- Flicense-qualityBmaintenanceA unified MCP server with composable tools for GitHub operations, file management, shell execution, kanban boards, Discord messaging, and package management. Features role-based security, HTTP/stdio transports, and a web-based development UI.Last updated
- AlicenseAqualityBmaintenanceAll-in-one homelab management MCP server. Docker monitoring, volume backup/restore (with compose and env files), Wake-on-LAN, network scanning, and multi-server SSH management.Last updated23171MIT
- AlicenseAqualityAmaintenanceMCP server for SSH and local terminal access. Supports interactive commands, long-running processes, and TUI apps like tmux/zellijLast updated63MIT
- Alicense-qualityBmaintenanceMCP server for managing a self-hosted Coolify instance. Provides full REST CRUD, deploy/watch capabilities, and an optional host-ops tier for live log streaming, SSH, Docker, and database access.Last updated29MIT
Related MCP Connectors
MCP server for interacting with the Supabase platform
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/dinglebear-ai/synapse'
If you have feedback or need assistance with the MCP directory API, please join our Discord server