Server data from the Official MCP Registry
MySQL change tracking with instant row-level recovery and forensic attribution for compliance.
MySQL change tracking with instant row-level recovery and forensic attribution for compliance.
Remote endpoints: streamable-http: https://api.dbtrail.com/mcp
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
Endpoint verified · Requires authentication · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"com-dbtrail-dbtrail": {
"url": "https://api.dbtrail.com/mcp"
}
}
}From the project's GitHub README.
Point-in-time recovery for MySQL, without locking tables or changing your schema. Bintrail tails the binary log, keeps every row change with full before/after images in a searchable index, and generates exact reversal SQL when something goes wrong.
SELECT * FROM orders WHERE id = 123 AS OF '2026-05-20 14:00:00'against production MySQL — that's the experience bintrail makes possible.
binlog_format = ROW and binlog_row_image = FULL — bintrail doctor will tell you exactly what to fix if your source isn't readyDocker (no Go toolchain required):
docker pull ghcr.io/dbtrail/bintrail:latest
docker run --rm ghcr.io/dbtrail/bintrail:latest --version
Multi-arch (linux/amd64 + linux/arm64), signed with cosign. The image bundles both bintrail and bintrail-mcp. See docs/docker.md for signature verification and docker run usage.
Linux packages: .deb and .rpm for both architectures are attached to each release.
Go install:
go install github.com/dbtrail/bintrail/cmd/bintrail@latest
Build from source:
git clone https://github.com/dbtrail/bintrail
cd bintrail
go build ./cmd/bintrail
# 1. Verify prerequisites and get copy-pasteable remediation for anything missing
bintrail doctor \
--source-dsn "user:pass@tcp(source:3306)/" \
--index-dsn "user:pass@tcp(127.0.0.1:3306)/binlog_index"
# 2. Initialize and start streaming (idempotent — safe to re-run)
bintrail up \
--source-dsn "user:pass@tcp(source:3306)/" \
--index-dsn "user:pass@tcp(127.0.0.1:3306)/binlog_index"
bintrail up runs preflight + creates index tables + auto-snapshots + starts streaming, all in one. It resumes from the last checkpoint on restart and auto-derives a unique server-id from your source DSN so you don't have to think about replica collisions.
Once it's running, query and recover:
# Search the index
bintrail query \
--index-dsn "user:pass@tcp(127.0.0.1:3306)/binlog_index" \
--schema mydb --table orders --pk 12345
# Generate reversal SQL
bintrail recover \
--index-dsn "user:pass@tcp(127.0.0.1:3306)/binlog_index" \
--schema mydb --table orders --event-type DELETE \
--since "2026-02-19 14:00:00" --until "2026-02-19 14:05:00" \
--output recovery.sql
Managed MySQL (RDS, Aurora, Cloud SQL)?
bintrail upconnects over the replication protocol — no disk access to binlogs required. See Streaming.
Want manual control of each step? See Step-by-step setup below for the underlying
init/snapshot/streamcommands.
New to bintrail? See the Practical Guide for DBAs for scenario-based walkthroughs and troubleshooting.
If you prefer running each phase explicitly (e.g. to deploy init and stream on separate hosts), the underlying commands remain available:
# 1. Verify prereqs (same as `bintrail up` Phase 1)
bintrail doctor --source-dsn "$SRC" --index-dsn "$IDX"
# 2. Create index tables
bintrail init --index-dsn "$IDX"
# 3. Snapshot schema metadata
bintrail snapshot --source-dsn "$SRC" --index-dsn "$IDX"
# 4. Either: stream live (recommended)
bintrail stream --source-dsn "$SRC" --index-dsn "$IDX" --server-id 12345
# Or: index from binlog files on disk
bintrail index --binlog-dir /var/lib/mysql --source-dsn "$SRC" --index-dsn "$IDX" --all
| Command | Description |
|---|---|
doctor | Diagnose source MySQL prerequisites and emit copy-pasteable remediation |
up | One command: preflight + init + stream (the friction-free quickstart) |
init | Create index tables in the target MySQL database |
snapshot | Capture table and column metadata from the source server |
index | Parse binlog files from disk and write row events to the index |
stream | Connect as a replica and index row events in real-time |
query | Search the index with flexible filters (schema, table, PK, time range, GTID) |
recover | Generate reversal SQL for matching events |
reconstruct | Rebuild row state at a point in time from baselines + binlog events |
rotate | Drop old partitions, add new ones, optionally archive to Parquet |
status | Show indexed files, partition sizes, and event counts |
dump | Invoke mydumper to create a logical dump of the source server |
baseline | Convert mydumper output to Parquet snapshots |
upload | Upload local Parquet files to S3 |
config init | Generate a .bintrail.env configuration file |
init-shim | Generate a shim.yaml for the time-travel SQL shim |
proxysql-config | Generate ProxySQL setup SQL for time-travel SQL routing |
shim | Run the in-process MySQL-protocol server for _flashback/_diff/_snapshot queries |
profile | Manage RBAC access profiles for query and recover |
flag | Label tables and columns (e.g. pii, sensitive) for access rules |
access | Link flags to profiles with allow/deny permissions |
generate-key | Generate an AES-256 encryption key for dump encryption |
All commands accept --log-level (default info) and --log-format (default text). See each command's --help for flags and usage.
Bintrail ships an MCP server that exposes query, recover, and status as read-only tools — letting Claude (or any MCP client) explore your binlog index conversationally.
The easiest way to connect — works from claude.ai, Claude Desktop, and Claude mobile:
https://mcp.dbtrail.com/mcp)The project ships .mcp.json which pre-registers the server using go run:
{
"mcpServers": {
"bintrail": {
"command": "go",
"args": ["run", "./cmd/bintrail-mcp"],
"env": { "BINTRAIL_INDEX_DSN": "user:pass@tcp(127.0.0.1:3306)/binlog_index" }
}
}
}
Set BINTRAIL_INDEX_DSN to your index database DSN, then enable with claude mcp enable bintrail.
See MCP Server docs for HTTP mode, proxy setup, and tool details.
Source MySQL Index MySQL
(information_schema) ──snapshot──► schema_snapshots
│
Binlog files on disk ──index──► binlog_events (partitioned)
index_state
│
Replication stream ──stream──► binlog_events (partitioned)
stream_state (checkpoint)
│
query / recover ──► stdout / .sql file
The index stores complete before and after row images for every event, so recovery never requires the original binlog files.
bintrail index reads binlog files directly from disk — best for self-managed MySQL where the binlog directory is accessible.
bintrail stream connects as a replica over the replication protocol — best for managed MySQL (RDS, Aurora, Cloud SQL) where binlog files are not directly accessible.
| Guide | Description |
|---|---|
| Quickstart | Zero to recovery in 10 minutes |
| Practical Guide for DBAs | Scenario-based walkthroughs and troubleshooting |
| Indexing | File-based indexing in depth |
| Streaming | Real-time replication indexing |
| Streaming 101 | Getting started with stream |
| Query and Recovery | Filters, output formats, and recovery workflows |
| Rotation and Status | Partition management and monitoring |
| Dump and Baseline | mydumper workflow and Parquet baselines |
| DDL Tracking | Schema change detection and handling |
| Server Identity | Multi-server identity management |
| Upload | Parquet archive uploads to S3 |
| MCP Server | MCP server setup, HTTP mode, and proxy |
| MCP Gateway | OAuth gateway for Claude Connector |
| Deployment | cron, systemd, Ansible, and production setup |
| Docker | Container images and Docker Compose |
| Parquet Debugging | Inspecting and troubleshooting Parquet archives |
| Time-Travel SQL | End-to-end setup for _flashback / _diff / _snapshot virtual schemas via ProxySQL + bintrail shim |
bintrail agent uses distinct process exit codes so a supervisor (e.g. systemd) can distinguish permanent failures from transient ones:
| Code | Meaning | Supervisor action |
|---|---|---|
| 0 | Clean shutdown (SIGTERM/SIGINT) | — |
| 64 | Fatal auth/config error (missing, invalid, or revoked API key; wrong tenant mode) | Fix credentials, restart manually |
| 65 | Rate-limited by the server | Contact support before restarting |
| 1 | Transient/unknown error | Safe to respawn (default systemd behavior) |
For systemd, add RestartPreventExitStatus=64 65 to the service unit so the agent is not respawned on permanent failures.
This project is licensed under the Business Source License 1.1. You may use bintrail for any purpose, including production use, except offering it as part of a competing commercial hosted service or managed consulting service. Each version converts to Apache License 2.0 four years after its release.
For alternative licensing arrangements, contact daniel@dbtrail.com.
Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request. All contributors must agree to the Contributor License Agreement — first-time contributors will be prompted automatically via CLA Assistant.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.