BTRFS Snapper MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BTRFS Snapper MCP list snapshots for root config"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BTRFS Snapper MCP
An MCP (Model Context Protocol) server for managing BTRFS snapshots via Snapper and monitoring BTRFS filesystem health. Exposes two unified tools with action-based dispatch to minimize tool proliferation while providing full snapshot management and disk health monitoring.
Features
Two-tool design:
snapperfor snapshots,btrfs_healthfor filesystem monitoringFull Snapper support: list, create, delete, rollback, cleanup, diff, status
BTRFS health monitoring: usage, device stats, scrub status, balance status
Flexible configuration: Environment variables for cross-system portability
No hardcoded paths: Works with any Snapper configuration and mount points
Related MCP server: aha-mcp
Installation
From PyPI (recommended)
pip install snapper-mcpUsing uvx (no install required)
uvx snapper-mcpFrom source
git clone https://github.com/danielrosehill/BTRFS-Snapper-MCP.git
cd BTRFS-Snapper-MCP
pip install -e .Configuration
The server is configured via environment variables, making it portable across systems:
Variable | Default | Description |
|
| Set to |
|
| Path to snapper binary |
|
| Path to btrfs binary |
|
| Path to sudo binary |
|
| Default snapper config name |
|
| Default BTRFS mount point |
|
| Command timeout in seconds |
MCP Client Configuration
Claude Code / Claude Desktop
Add to your MCP settings (e.g., ~/.claude/settings.json or Claude Desktop config):
{
"mcpServers": {
"btrfs-snapper": {
"command": "uvx",
"args": ["snapper-mcp"]
}
}
}With custom configuration
{
"mcpServers": {
"btrfs-snapper": {
"command": "uvx",
"args": ["snapper-mcp"],
"env": {
"SNAPPER_MCP_DEFAULT_CONFIG": "root",
"SNAPPER_MCP_DEFAULT_MOUNT": "/",
"SNAPPER_MCP_USE_SUDO": "true"
}
}
}
}Tools
snapper - Snapshot Management
Manages BTRFS snapshots via Snapper.
Actions
Action | Description | Required Parameters |
| List available snapper configurations | - |
| Show all snapshots for a config |
|
| Create a new snapshot |
|
| Remove a snapshot by number |
|
| Restore to a previous snapshot |
|
| Prune snapshots using an algorithm |
|
| Show file differences between snapshots |
|
| List changed files between snapshots |
|
Examples
// List configurations
{"action": "configs"}
// List snapshots
{"action": "list", "config": "root"}
// Create snapshot
{"action": "create", "config": "root", "description": "Before system update"}
// Delete snapshot
{"action": "delete", "config": "root", "snapshot_id": 5}
// Rollback (requires reboot)
{"action": "rollback", "config": "root", "snapshot_id": 3}
// Cleanup with algorithm
{"action": "cleanup", "config": "root", "cleanup_algorithm": "number"}
// Compare snapshots
{"action": "diff", "config": "root", "snapshot_id": 1, "snapshot_id_end": 5}Cleanup algorithms:
number: Keep a fixed number of snapshotstimeline: Keep snapshots based on age (hourly, daily, weekly, monthly, yearly)empty-pre-post: Remove empty pre/post snapshot pairs
btrfs_health - Filesystem Health Monitoring
Monitors BTRFS filesystem health and status.
Actions
Action | Description | Parameters |
| Comprehensive filesystem space usage |
|
| List devices in the BTRFS array |
|
| Device error statistics |
|
| Status of scrub operation |
|
| Status of balance operation |
|
| Space allocation by data type |
|
| Filesystem information |
|
Examples
// Check filesystem usage
{"action": "usage", "mount_point": "/"}
// Check for device errors
{"action": "stats", "mount_point": "/"}
// Check scrub status
{"action": "scrub_status", "mount_point": "/"}
// Show data/metadata allocation
{"action": "df", "mount_point": "/"}
// Show filesystem info
{"action": "filesystem_show"}Prerequisites
Linux with BTRFS filesystem
Snapper installed and configured (for snapshot management)
Python 3.10+
Sudo access (unless running as root or with appropriate permissions)
Installing Snapper
Ubuntu/Debian:
sudo apt install snapperFedora/openSUSE:
sudo dnf install snapper
# or
sudo zypper install snapperCreating Snapper Configs
# For root filesystem
sudo snapper -c root create-config /
# For home partition
sudo snapper -c home create-config /homeSudo Configuration
For passwordless operation, add to /etc/sudoers.d/btrfs-snapper:
yourusername ALL=(ALL) NOPASSWD: /usr/bin/snapper
yourusername ALL=(ALL) NOPASSWD: /usr/bin/btrfsOr disable sudo if you have direct permissions:
{
"env": {
"SNAPPER_MCP_USE_SUDO": "false"
}
}Adapting for Other Systems
Different Snapshot Tools
The architecture can be adapted for other snapshot tools (e.g., Timeshift, ZFS snapshots) by:
Replacing the
run_snapper_command()function with your tool's CLIAdjusting the action handlers for your tool's command syntax
Updating environment variables as needed
Different Filesystems
For ZFS or other filesystems:
Replace
run_btrfs_command()with your filesystem's CLIUpdate
BtrfsActionenum with relevant actionsImplement new handlers for your filesystem's commands
The action-dispatch pattern remains the same regardless of underlying tools.
License
MIT
Available Tools
2 toolsbtrfs_healthA
Check BTRFS filesystem health and status. Monitor disk usage, errors, and maintenance operations.
Actions:
usage: Comprehensive filesystem space usage
devices: List devices in the BTRFS array
stats: Device error statistics (corruption, read/write errors)
scrub_status: Status of scrub operation (data integrity check)
balance_status: Status of balance operation (data redistribution)
df: Space allocation by data type (Data, Metadata, System)
filesystem_show: Filesystem information and device list
Current default mount: / Using sudo: True
Examples:
Check usage: action="usage", mount_point="/"
Check for errors: action="stats", mount_point="/"
Scrub status: action="scrub_status", mount_point="/"
Show filesystem: action="filesystem_show"
Inputs: action (required), mount_point, device.
snapperA
Manage BTRFS snapshots via Snapper. A unified tool for all snapshot operations.
Actions:
configs: List available snapper configurations
list: Show all snapshots for a config
create: Create a new snapshot (optionally with description)
delete: Remove a snapshot by number
rollback: Restore system to a previous snapshot (requires reboot)
cleanup: Prune snapshots using an algorithm (number, timeline, empty-pre-post)
diff: Show file differences between two snapshots
status: List changed files between two snapshots
Current default config: root Using sudo: True
Examples:
List configs: action="configs"
List snapshots: action="list", config="root"
Create snapshot: action="create", config="root", description="Before update"
Delete snapshot: action="delete", config="root", snapshot_id=5
Compare snapshots: action="diff", config="root", snapshot_id=1, snapshot_id_end=5
Cleanup old snapshots: action="cleanup", config="root", cleanup_algorithm="number"
Inputs: action (required), config, snapshot_id, snapshot_id_end, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: btrfs_health monitors filesystem health, and snapper manages snapshots. There is no overlap in functionality, so an agent can easily distinguish when to use each.
Both tool names are descriptive and use a clear style (btrfs_health uses prefix 'btrfs_', snapper uses the application name). While there is no strict pattern like verb_noun, the names are intuitive and consistent in being self-explanatory.
Only two tools for a complex domain like BTRFS management is minimal. Each tool bundles many sub-actions, which could be separate tools for better discoverability. The low count suggests an incomplete surface for tasks like defragmentation or advanced configuration.
The tools cover essential BTRFS operations: health monitoring (usage, errors, scrub, balance) and snapshot management (create, delete, rollback, diff, cleanup). Missing are direct balance initiation or defragmentation, but these are covered by status checks, making the set fairly comprehensive for core tasks.
Maintenance
Related MCP Connectors
Model Context Protocol server for Studex tools, notifications, and profile integrations
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Ovanek MCP: Model Context Protocol server for Ovanek platform tools; writes are dry-run by default.
Start and manage Reason cloud coding agents, projects and sessions from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Proxmox VE for managing VMs, containers, storage, and cluster resources via natural language through the Model Context Protocol.73MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with Home Assistant for managing entities, automations, services, and dashboards via the Model Context Protocol.154 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to monitor and manage Linux infrastructure including services, logs, processes, disk, memory, ports, cron, nginx, Docker, and system health checks via the Model Context Protocol.10MIT
- AlicenseNot gradedqualityDmaintenanceEnables read-only observability of Windows systems, exposing CPU, memory, storage, service, and health information through Model Context Protocol tools.MIT