About Duplicacy Mcp
Duplicacy Mcp is a read-only bridge for LLMs to monitor Duplicacy backups using metrics from duplicacy-exporter. It provides a consolidated health verdict along with status, history, storage usage, and progress information.
Key features
- 01Summarize backup health and reasons
- 02Inspect snapshots, status, and run history
- 03Check prune operations and storage usage
- 04Expose status, progress, and health resources
- 05Serve MCP over stdio or Streamable HTTP
Use cases
- 01Check whether backups are healthy or stale
- 02Inspect a specific snapshot's recent run
- 03Review storage usage and prune status
- 04Monitor backup progress through an MCP client
MCP support
The server reads duplicacy-exporter metrics and exposes backup tools and resources to MCP clients. It supports stdio and Streamable HTTP transports.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y duplicacy-mcpDUPLICACY_EXPORTER_URLBase URL of duplicacy-exporter, for example http://localhost:9750MCP_AUTH_TOKENSecretBearer token clients must send; the image refuses to start without one. At least 16 characters, for example from openssl rand -hex 32MCP_ALLOWED_ORIGINSComma-separated browser origins allowed to call the endpoint cross-originLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project README
Duplicacy MCP
A tiny bridge that reads Duplicacy backup metrics from a Prometheus exporter and exposes them as an MCP server, enabling LLMs to monitor backup status, progress, and health.
Features
- Reads the metrics of duplicacy-exporter and serves them over MCP.
- One call answers "are my backups OK?":
get_backup_overviewgives every backup a verdict (ok, running, stale, never, failed) with a reason. - Speaks MCP 2026-07-28 (
server/discover, stateless requests) and every earlier revision down to 2024-11-05 (theinitializehandshake) from the same binary, over stdio and Streamable HTTP. Clients that still use the old handshake keep working. - Read-only by design: every tool and resource only reads the exporter, so there is no read-only flag to set. Every tool carries
readOnlyHint, a title, an output schema and structured results. - HTTP listens on
127.0.0.1:8080by default. On any other address it refuses to start without a bearer token, rejects cross-origin browser requests and caps request bodies. - Ships as Go binaries for several platforms (GoReleaser), a Docker image and an npm wrapper.
Tools and resources
| Tool | What it answers |
|---|---|
get_backup_overview | Health of every backup in one call: verdict, reason, age of the last success. max_age_hours (default 26) sets when a backup is stale. |
list_snapshots | Every snapshot ID, storage target and machine, for use as filter values. |
get_backup_status | State and last-run details of one snapshot, per storage target and machine. |
get_backup_history | The last completed run of one snapshot. The exporter keeps only the last run. |
get_prune_status | Whether a prune is running and when the last one succeeded, per storage target. |
get_storage_usage | Storage size and chunks, and revisions per snapshot, from the exporter's storage poller. |
Resources: duplicacy://status, duplicacy://progress and duplicacy://health. Parameters and output fields are on Usage.
Install
The npm package runs the server over stdio; set DUPLICACY_EXPORTER_URL to your exporter.
Claude Code
claude mcp add --transport stdio --env DUPLICACY_EXPORTER_URL=http://localhost:9750 duplicacy -- npx -y duplicacy-mcp
Claude Desktop (claude_desktop_config.json) and Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"duplicacy": {
"command": "npx",
"args": ["-y", "duplicacy-mcp"],
"env": { "DUPLICACY_EXPORTER_URL": "http://localhost:9750" }
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"duplicacy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "duplicacy-mcp"],
"env": { "DUPLICACY_EXPORTER_URL": "http://localhost:9750" }
}
}
}
Codex (~/.codex/config.toml)
[mcp_servers.duplicacy]
command = "npx"
args = ["-y", "duplicacy-mcp"]
env = { DUPLICACY_EXPORTER_URL = "http://localhost:9750" }
npm 12, pnpm and Bun skip install scripts, so the wrapper downloads and verifies the binary on first start. Versions up to 0.1.2 relied on the install script alone; with npm 12 run them as npx -y --allow-scripts=duplicacy-mcp duplicacy-mcp.
Docker (Streamable HTTP)
export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
docker run -d -p 127.0.0.1:8080:8080 -e MCP_AUTH_TOKEN \
-e DUPLICACY_EXPORTER_URL=http://duplicacy-exporter:9750 drumsergio/duplicacy-mcp:v0.2.0
claude mcp add --transport http duplicacy http://127.0.0.1:8080/mcp --header "Authorization: Bearer $MCP_AUTH_TOKEN"
The image listens on 0.0.0.0:8080 inside the container, so it will not start without MCP_AUTH_TOKEN (or MCP_ALLOW_UNAUTHENTICATED=true behind a reverse proxy that authenticates). Compose, a global npm install and a local build are in Getting started; every variable is in Configuration.
Documentation
- Getting started: Docker Compose, npm, local build, first run
- Configuration: environment variables, HTTP security, client config for stdio and HTTP
- Usage: tools, parameters, output fields and resources
- Development: testing with Inspector, credits, contributing
- Related projects: the Duplicacy family, other MCP servers, registry listings
Related projects
Part of the Duplicacy family: duplicacy-exporter, duplicacy-cli-cron, duplicacy-ha, duplicacy-container.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.