Skip to main content
Glama
GeiserX

duplicacy-mcp

by GeiserX
README.md
<p align="center">
  <img src="https://raw.githubusercontent.com/GeiserX/duplicacy-mcp/main/docs/images/banner.svg" alt="Duplicacy MCP" width="900"/>
</p>

<h1 align="center">Duplicacy MCP</h1>

<p align="center">
  <a href="https://www.npmjs.com/package/duplicacy-mcp"><img src="https://img.shields.io/npm/v/duplicacy-mcp?style=flat-square&logo=npm" alt="npm"/></a>
  <a href="https://github.com/GeiserX/duplicacy-mcp/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/GeiserX/duplicacy-mcp/ci.yml?style=flat-square&label=CI" alt="CI"/></a>
  <a href="https://github.com/GeiserX/duplicacy-mcp/blob/main/LICENSE"><img src="https://img.shields.io/github/license/GeiserX/duplicacy-mcp?style=flat-square" alt="License"/></a>
  <a href="https://hub.docker.com/r/drumsergio/duplicacy-mcp"><img src="https://img.shields.io/docker/pulls/drumsergio/duplicacy-mcp?style=flat-square&logo=docker" alt="Docker Pulls"/></a>
  <a href="https://github.com/GeiserX/duplicacy-mcp/stargazers"><img src="https://img.shields.io/github/stars/GeiserX/duplicacy-mcp?style=flat-square&logo=github" alt="GitHub Stars"/></a>
</p>

<p align="center"><strong>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.</strong></p>

## Features

- Reads the metrics of [duplicacy-exporter](https://github.com/GeiserX/duplicacy-exporter) and serves them over MCP.
- Resources `duplicacy://status`, `duplicacy://progress` and `duplicacy://health` for read-only browsing.
- Tools `get_backup_status`, `get_backup_history`, `list_snapshots` and `get_prune_status`.
- One JSON-RPC endpoint (`/mcp`) over HTTP, or stdio through `npx duplicacy-mcp`.
- Listens on `127.0.0.1:8080` by default. Put a reverse proxy with authentication in front before exposing it.
- Ships as Go binaries for several platforms (GoReleaser), a Docker image and an npm wrapper.

## Quick start

```bash
docker run -d -p 127.0.0.1:8080:8080 -e DUPLICACY_EXPORTER_URL=http://duplicacy-exporter:9750 drumsergio/duplicacy-mcp:v0.1.0
```

That serves `http://127.0.0.1:8080/mcp`. For a client that starts the server itself over stdio, use the npm package in an `mcpServers` block:

```json
{
  "mcpServers": {
    "duplicacy": {
      "command": "npx",
      "args": ["-y", "duplicacy-mcp"],
      "env": { "DUPLICACY_EXPORTER_URL": "http://localhost:9750" }
    }
  }
}
```

Compose, a global npm install and a local build are in [Getting started](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/getting-started.md).

## Documentation

- [Getting started](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/getting-started.md): Docker Compose, npm, local build, first run
- [Configuration](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/configuration.md): environment variables, client config for stdio and HTTP
- [Usage](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/usage.md): resources and tools
- [Development](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/development.md): testing with Inspector, credits, contributing
- [Related projects](https://github.com/GeiserX/duplicacy-mcp/blob/main/docs/related.md): the Duplicacy family, other MCP servers, registry listings

## Related projects

Part of the Duplicacy family: [duplicacy-exporter](https://github.com/GeiserX/duplicacy-exporter), [duplicacy-cli-cron](https://github.com/GeiserX/duplicacy-cli-cron), [duplicacy-ha](https://github.com/GeiserX/duplicacy-ha), [duplicacy-container](https://github.com/GeiserX/duplicacy-container).

## License

[GPL-3.0-or-later](https://github.com/GeiserX/duplicacy-mcp/blob/main/LICENSE)

TDQS

B3.2/5.0

Scored across 4 tools

Disambiguation4/5

Tools have clearly distinct purposes, though get_backup_history and get_backup_status both target specific snapshots with similar naming patterns (historical vs current status). The descriptions adequately clarify the distinction between completed backup details and ongoing operations.

Naming Consistency5/5

All four tools follow a strict verb_noun pattern using snake_case (get_backup_history, get_backup_status, get_prune_status, list_snapshots). The naming convention is uniform and predictable throughout the set.

Tool Count4/5

Four tools is reasonable for a focused observability server interfacing with a Duplicacy exporter, providing essential monitoring capabilities without excessive scope. However, the read-only nature limits the server's overall utility for backup operations.

Completeness3/5

As a monitoring-specific server, it covers basic backup status, history, and prune operations, but lacks storage metrics, verification/check status, and error log access. For general Duplicacy management, the absence of backup execution, restore, or configuration tools represents notable functional gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues