MCP Hub
Back to servers

restic-mcp

An MCP server that enables AI assistants to manage restic backups, including listing snapshots, browsing files, and creating new backups. It provides tools for repository maintenance, data restoration, and applying retention policies through the Model Context Protocol.

glama
Updated
Mar 5, 2026

restic-mcp

An MCP server for managing restic backups. Lets AI assistants list snapshots, browse backed-up files, create backups, apply retention policies, and more — all through the Model Context Protocol.

Tools

Read-only

ToolDescription
list_snapshotsList snapshots, with optional filters by host, tags, or paths
browse_snapshotList files and directories inside a snapshot
diff_snapshotsShow what changed between two snapshots
find_filesSearch for files by name or glob pattern across snapshots
repo_statsRepository size, file count, and deduplication statistics
check_repoVerify repository integrity

Write

ToolDescription
create_backupBack up files/directories with optional tags and exclusions
forget_snapshotsRemove snapshots by ID or retention policy (keep-last, keep-daily, etc.)
prune_repoRemove unreferenced data to reclaim disk space
restore_snapshotRestore files from a snapshot to a target directory
tag_snapshotAdd or remove tags on a snapshot
unlock_repoRemove stale repository locks

Requirements

  • Python 3.10+
  • restic installed and in PATH
  • uv (recommended) or pip

Installation

git clone https://github.com/mohsenil85/restic-mcp.git
cd restic-mcp
uv sync

Configuration

The server reads repository credentials from environment variables:

VariableDescription
RESTIC_REPOSITORYPath or URL to the restic repository
RESTIC_PASSWORDRepository password
RESTIC_PASSWORD_COMMANDCommand that prints the password (alternative to RESTIC_PASSWORD)

Every tool also accepts an optional repo parameter to override RESTIC_REPOSITORY per-call.

Usage

Claude Code

Add to ~/.claude.json:

{
  "mcpServers": {
    "restic": {
      "command": "uv",
      "args": ["--directory", "/path/to/restic-mcp", "run", "restic-mcp"],
      "env": {
        "RESTIC_REPOSITORY": "/path/to/your/repo",
        "RESTIC_PASSWORD_COMMAND": "pass show restic"
      }
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "restic": {
      "command": "uv",
      "args": ["--directory", "/path/to/restic-mcp", "run", "restic-mcp"],
      "env": {
        "RESTIC_REPOSITORY": "/path/to/your/repo",
        "RESTIC_PASSWORD": "your-password"
      }
    }
  }
}

MCP Inspector

Test the server interactively:

RESTIC_REPOSITORY=/path/to/repo RESTIC_PASSWORD=test uv run mcp dev src/restic_mcp/server.py

Architecture

MCP Client (Claude, Cursor, etc.)
    │
    │  stdio (JSON-RPC)
    ▼
restic-mcp server (FastMCP)
    │
    │  subprocess (async)
    ▼
restic CLI  ──►  repository (local, S3, B2, SFTP, ...)

The server is a thin async wrapper around the restic CLI. It calls restic with --json where supported for structured output, falling back to text parsing otherwise. No direct repository access — all operations go through the official restic binary.

License

MIT

Reviews

No reviews yet

Sign in to write a review