Skip to main content
Glama
mohsenil85

restic-mcp

by mohsenil85

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

Tool

Description

list_snapshots

List snapshots, with optional filters by host, tags, or paths

browse_snapshot

List files and directories inside a snapshot

diff_snapshots

Show what changed between two snapshots

find_files

Search for files by name or glob pattern across snapshots

repo_stats

Repository size, file count, and deduplication statistics

check_repo

Verify repository integrity

Write

Tool

Description

create_backup

Back up files/directories with optional tags and exclusions

forget_snapshots

Remove snapshots by ID or retention policy (keep-last, keep-daily, etc.)

prune_repo

Remove unreferenced data to reclaim disk space

restore_snapshot

Restore files from a snapshot to a target directory

tag_snapshot

Add or remove tags on a snapshot

unlock_repo

Remove 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:

Variable

Description

RESTIC_REPOSITORY

Path or URL to the restic repository

RESTIC_PASSWORD

Repository password

RESTIC_PASSWORD_COMMAND

Command 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

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/mohsenil85/restic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server