loading…
Search for a command to run...
loading…
An MCP server that enables AI assistants to manage restic backups, including listing snapshots, browsing files, and creating new backups. It provides tools for
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.
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.
| 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 |
| 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 |
git clone https://github.com/mohsenil85/restic-mcp.git
cd restic-mcp
uv sync
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.
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"
}
}
}
}
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"
}
}
}
}
Test the server interactively:
RESTIC_REPOSITORY=/path/to/repo RESTIC_PASSWORD=test uv run mcp dev src/restic_mcp/server.py
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.
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"restic-mcp": {
"command": "npx",
"args": []
}
}
}