datavor
v2.0.0
Published
AI-native database sync and pipeline MCP server
Maintainers
Readme
Datavor
The AI-Native Database Sync & Pipeline MCP
Sync, transform, schedule, and monitor your data pipelines using natural language through Claude.
No SQL. No complex UIs. No data engineers. Just ask.
🌟 What is Datavor?
Datavor is an MCP (Model Context Protocol) server that turns Claude into a complete database pipeline tool. Connect your databases, describe what you want in plain English, and Datavor handles the sync, transformation, scheduling, and monitoring.
Built for the AI era — while traditional tools like Fivetran cost $12,000+/year and require a dedicated data engineer, Datavor works through natural language and is completely free.
❌ Old way: Write SQL → configure ETL → build schedules → debug errors → repeat
✅ Datavor: "Sync my orders table every night and alert me if it fails" → Done✨ What's New in v2.0
🗄️ Three New Database Connectors
Datavor now connects to SQL Server, SQLite, and Snowflake — in addition to MySQL and PostgreSQL. Sync between any combination of all five engines.
🧠 Data Context Engine — Datavor Gets Smarter Over Time
The most important feature in v2.0. Datavor now builds a **persistent local knowledge brain that silently learns from every interaction:
- Remembers your schema and detects changes automatically
- Learns your business rules from sync patterns (e.g. "always filter test data")
- Tracks relationships between tables across databases
- Records sync history and surfaces error patterns
- Surfaces this knowledge on demand with
get_contextandexplain_database
🔗 Universal Type Engine
A canonical type system (O(n) complexity) replaces the old per-pair O(n²) mappings. Every connector maps to/from a shared intermediate layer — adding a new database only requires one mapping file, not N.
⚡ How It Works

🚀 Quick Start
Prerequisites
- macOS, Linux (Ubuntu 22.04+), or Windows 10/11
- Node.js 18+ and npm
- One or more supported databases: MySQL, PostgreSQL, SQL Server, SQLite, Snowflake
- Claude Desktop (free)
Installation
Option 1: From npm (Recommended)
npm install -g datavorOption 2: From source
cd ~/Projects/datavor
npm install
npm run buildNative module note:
better-sqlite3is compiled from source automatically duringnpm install. If you seeinvalid ELF header,invalid PE header, orMODULE_NOT_FOUNDerrors, run:npm rebuild better-sqlite3
Configure Claude Desktop
Open your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
If installed via npm:
{
"mcpServers": {
"datavor": {
"command": "datavor"
}
}
}If installed from source:
{
"mcpServers": {
"datavor": {
"command": "node",
"args": ["/path/to/datavor/build/index.js"]
}
}
}Restart Claude Desktop completely (Cmd+Q, then reopen), then look for the 🔨 icon near the text input to confirm Datavor loaded.
🔌 MCP Client Compatibility
Datavor works with any MCP-compatible client. All three major clients have been tested and confirmed:
| Client | Config file | Status |
|---|---|---|
| Claude Desktop | claude_desktop_config.json (see paths above) | ✅ Confirmed |
| Cursor | .cursor/mcp.json in your project root | ✅ Confirmed |
| Cline (VS Code) | cline_mcp_settings.json (VS Code: Cline > MCP Servers > Configure) | ✅ Confirmed |
The same config block works for all clients:
{
"mcpServers": {
"datavor": {
"command": "datavor"
}
}
}💡 Usage Examples
Connect Your Databases
Every session starts with a connection. Supported engines:
"Connect to my MySQL database at 127.0.0.1, user root, password mypass"
"Connect to PostgreSQL at localhost, user postgres, password pgpass"
"Connect to SQL Server at localhost, user sa, password Pass123!"
"Connect to my SQLite file at /path/to/mydata.db"
"Connect to Snowflake, account myorg.us-east-1, user myuser, password mypass, warehouse COMPUTE_WH"MySQL on macOS: Always use
127.0.0.1instead oflocalhost— macOS routeslocalhostthrough a Unix socket that the mysql2 driver doesn't use.
Core Sync
Full sync — copies everything, replaces target:
You: "Sync the customers table from MySQL to PostgreSQL"
Claude: ✅ Synced 10,542 rows in 5.2sPartial sync — filter what you move:
You: "Sync only active US customers from MySQL to PostgreSQL"
Claude: ✅ Synced 3,241 rows (WHERE country='US' AND active=1)
Incremental sync — only what changed since last run:
You: "Sync new orders incrementally using the updated_at column"
Claude: ✅ Synced 47 new/updated rows (from 2025-03-10 onwards) in 0.3s
💡 Next incremental sync will automatically start from: 2025-03-11 09:15:00
⭐ NEW in v2.0 — Context Engine: Datavor Learns Your Behaviour And Workflow
The Context Engine accumulates knowledge silently — no extra steps needed.
Ask what Datavor knows about a table:
You: "What do you know about the orders table on production MySQL?"
Claude: {
"table": "orders",
"schema": {
"columns": [
{ "name": "id", "type": "INT", "pk": true },
{ "name": "customer_id", "type": "INT" },
{ "name": "total_cents", "type": "INT" },
{ "name": "status", "type": "VARCHAR(20)" }
],
"last_scanned": "2026-03-20T14:30:00Z",
"recent_changes": [
{ "type": "column_added", "column": "discount_code", "detected": "2026-03-18" }
]
},
"rules": [
{ "name": "exclude_test_orders", "condition": "email NOT LIKE '%@test.com%'",
"auto_apply": true, "usage_count": 47 }
],
"relationships": [
{ "type": "sync_pair", "target": "analytics_postgres.orders" },
{ "type": "foreign_key", "source": "customer_id", "target": "customers.id" }
],
"sync_stats": { "total_syncs": 142, "success_rate": "97.2%" }
}Get a plain English explanation of any database:
You: "Explain my production MySQL database"
Claude: This is a MySQL database ("production_db") with 23 tables. Known
tables include orders (5 cols), customers (8 cols), products (6 cols).
There are 4 business rules (2 auto-applied during syncs). 3 foreign
key relationships detected. Syncs to analytics_postgres every hour
with a 97% success rate. 142 syncs recorded, 890,000 total rows moved.
2 schema changes detected recently. First connected: 2026-01-15.Save business rules that auto-apply to future syncs:
You: "Always filter out test orders when syncing. email should not contain @test.com"
Claude: ✅ Rule #12 created: "exclude_test_orders"
auto_apply: true — this will automatically filter during future syncs.Scheduler: Automate Your Syncs
Create a nightly job in plain English:
You: "Create a job to sync the orders table from MySQL to PostgreSQL every night at 2am"
Claude: ✅ Sync job created!
• Name: Nightly orders sync
• Table: orders
• Schedule: Daily at 02:00 (0 2 * * *)
• Mode: fullOther natural-language schedules:
"every hour"→0 * * * *"every night at midnight"→0 0 * * *"weekly on Sunday"→0 2 * * 0"monthly on the 1st"→0 2 1 * *
Keep jobs running 24/7 (no Claude needed):
# Start the daemon — runs all active jobs on schedule
node build/scheduler-daemon.js
# Or keep it alive permanently with pm2:
pm2 start build/scheduler-daemon.js --name datavor-scheduler
Transforms: Shape Data During Sync
Preview before committing:
You: "Preview what happens if I rename customer_id to cust_id,
cast score to float, and expand country codes on the customers table"
Apply transforms and sync in one step:

Available transform types:
| Type | Example |
|------|---------|
| rename | customer_id → cust_id |
| cast | Convert price to float |
| filter | Keep only rows where status = 'active' |
| computed | Add full_name = first_name + ' ' + last_name |
| value_map | Remap A → Active, I → Inactive |
Dashboard: Monitor Your Pipelines
You: "Show me a sync dashboard summary"
You: "Show me all sync failures from the last 7 days"
📖 All 34 MCP Tools
Connection (7)
| Tool | What it does |
|------|-------------|
| connect_mysql | Connect to a MySQL database |
| connect_postgres | Connect to a PostgreSQL database |
| connect_sqlserver | Connect to a SQL Server database ⭐ new |
| connect_sqlite | Connect to a SQLite file ⭐ new |
| connect_snowflake | Connect to Snowflake ⭐ new |
| list_connections | List active connections |
| close_connection | Close a connection |
Schema (2)
| Tool | What it does |
|------|-------------|
| list_tables | List all tables with row counts |
| describe_table | Show column types, constraints, and detected FKs |
Query (2)
| Tool | What it does |
|------|-------------|
| execute_query | Run any SQL query |
| get_table_data | Fetch rows from a table |
Sync (3)
| Tool | What it does |
|------|-------------|
| sync_table | Sync between any two supported databases |
| sync_table_partial | Sync rows matching a WHERE clause |
| sync_table_incremental | Sync only new/updated rows by timestamp |
Visualization (4)
| Tool | What it does |
|------|-------------|
| compare_table_schemas | Side-by-side column comparison |
| show_database_tree | Hierarchical table/column view |
| analyze_schema_diff | Find all differences before migration |
| recommend_sync_order | AI-powered table priority suggestions |
Scheduler (6)
| Tool | What it does |
|------|-------------|
| scheduler_create_job | Save a sync job with a schedule |
| scheduler_list_jobs | List all jobs with last-run status |
| scheduler_run_job | Run a job manually right now |
| scheduler_pause_job | Pause a job (keeps it saved) |
| scheduler_resume_job | Resume a paused job |
| scheduler_delete_job | Delete a job permanently |
Transform (2)
| Tool | What it does |
|------|-------------|
| transform_preview | Preview transforms on sample data before syncing |
| sync_table_with_transforms | Sync with inline rename/cast/filter/remap applied |
Dashboard (3)
| Tool | What it does |
|------|-------------|
| dashboard_summary | Overview: success rate, rows moved, trends |
| dashboard_table_history | Full run log for a specific table |
| dashboard_failures | All failures with error messages and hints |
Context Engine ⭐ new in v2.0 (5)
| Tool | What it does |
|------|-------------|
| get_context | Get everything Datavor knows about a database or table |
| add_rule | Save a business rule that auto-applies during future syncs |
| update_rule | Update an existing rule |
| remove_rule | Delete a rule |
| explain_database | Natural language summary of a database |
🔁 Supported Type Conversions
The universal type engine handles conversions between all five engines. Every type maps through a shared canonical layer — no surprises.
| Universal Type | MySQL | PostgreSQL | SQL Server | SQLite | Snowflake |
|---|---|---|---|---|---|
| integer | INT | INTEGER | INT | INTEGER | NUMBER(10,0) |
| bigint | BIGINT | BIGINT | BIGINT | BIGINT | NUMBER(19,0) |
| boolean | TINYINT(1) | BOOLEAN | BIT | BOOLEAN | BOOLEAN |
| string | VARCHAR(n) | VARCHAR(n) | NVARCHAR(n) | TEXT | VARCHAR(n) |
| text | TEXT | TEXT | NVARCHAR(MAX) | TEXT | VARCHAR(16777216) |
| decimal | DECIMAL(p,s) | DECIMAL(p,s) | DECIMAL(p,s) | NUMERIC | NUMBER(p,s) |
| datetime | DATETIME | TIMESTAMP | DATETIME2 | DATETIME | TIMESTAMP_NTZ |
| json | JSON | JSONB | NVARCHAR(MAX) | TEXT | VARIANT |
| uuid | CHAR(36) | UUID | UNIQUEIDENTIFIER | TEXT | VARCHAR(36) |
| binary | BLOB ⚠️ | BYTEA ⚠️ | VARBINARY(MAX) ⚠️ | BLOB ⚠️ | BINARY ⚠️ |
⚠️ = Datavor emits a warning before writing binary data across engines.
🎯 Real-World Use Cases
Nightly Production → Analytics Sync
Day 1 (setup — 5 minutes):
"Connect to production MySQL at db.mystore.com"
"Connect to analytics PostgreSQL at analytics.mystore.com"
"Create a job to sync orders, customers, and products every night at 3am"
Every night at 3am (automatic):
Daemon runs all jobs. Ledger records results.
Monday morning:
"Show me a dashboard summary from the last 7 days"
→ 21 successful runs, 126,000 rows moved, 0 failuresData Migration with Transform
"Sync the users table from legacy MySQL to new PostgreSQL with these transforms:
- Rename usr_id → user_id
- Rename usr_nm → full_name
- Remap acct_sts: A→active, S→suspended, D→deleted"
→ 45,231 rows synced and transformed in 22sMySQL → Snowflake Analytics Pipeline
"Sync the orders table from MySQL to Snowflake daily at 6am"
→ Datavor handles all type conversions automatically:
INT → NUMBER(10,0), DATETIME → TIMESTAMP_NTZ, JSON → VARIANTDev Environment Refresh with Auto-Rules
First time:
"Sync orders from the last 30 days to local SQLite, filter out @internal emails"
Datavor remembers the filter. Next time:
"Sync orders to local SQLite"
→ Applies email filter automatically (auto_apply rule)🗺️ Roadmap
✅ v1.0 — Core Sync (Released March 2026, FREE)
Full sync, partial sync, incremental sync, schema comparison, database tree view, schema analysis.
✅ v1.5 — Data Pipelines (Released March 2026, FREE)
Scheduler, Transform Pipeline, Sync Dashboard, Type Engine.
✅ v2.0 — Multi-Connector + Context Engine (Released March 2026, FREE)
SQL Server, SQLite, Snowflake connectors. Data Context Engine (persistent knowledge brain). Universal canonical type system. 34 MCP tools.
📅 v2.5 — CDC & dbt (Planned Q3 2026)
Change Data Capture for real-time sync. dbt integration.
🔮 v3.0 — Visual Layer (Planned Q4 2026)
Local web dashboard for browsing history, managing jobs, and building transform pipelines visually.
🆚 Datavor vs. The Alternatives
| | Fivetran / Airbyte | Manual SQL Scripts | Datavor v2.0 | |---|---|---|---| | Price | $12,000+/year | Free (your time) | Free 🎉 | | Setup | Days | Hours | Minutes | | Databases | Many (paid tiers) | Whatever you write | MySQL, PostgreSQL, SQL Server, SQLite, Snowflake | | Scheduling | Built-in (paid) | cron + bash | Built-in, free | | Transforms | Paid add-on | Write yourself | Built-in, free | | Monitoring | Web dashboard (paid) | Roll your own | Built-in, free | | Learns over time | ❌ | ❌ | ✅ Context Engine | | Interface | Web UI | SQL knowledge required | Natural language |
❓ Troubleshooting
Claude doesn't see Datavor tools
- Check config:
cat ~/.claude/claude_desktop_config.json - Restart Claude Desktop completely (Cmd+Q, then reopen)
- Check logs:
cat ~/Library/Logs/Claude/main.log | grep -i datavor
Connection refused / Access denied
# Test manually first
mysql -h localhost -u YOUR_USER -p
psql -h localhost -U YOUR_USER
sqlcmd -S localhost -U sa
sqlite3 /path/to/db.sqliteIf the manual connection works, use the exact same credentials in Claude.
SQL Server on macOS/Linux
SQL Server requires the mssql driver. If connect_sqlserver times out, verify:
- Port 1433 is open:
nc -zv HOST 1433 - SA password meets complexity requirements (uppercase, lowercase, digit, symbol)
- For Docker: use
MSSQL_SA_PASSWORD(notSA_PASSWORD)
Scheduler daemon isn't running jobs
node build/scheduler-daemon.js
# Always-on with pm2:
pm2 start build/scheduler-daemon.js --name datavor-scheduler
pm2 save && pm2 startupBuild issues
rm -rf build
npm run build
node --version # Must be v18 or higherRun the test suite
npm test # All unit + compatibility tests (296 tests)
DATAVOR_INTEGRATION=1 npm test # Also run integration tests (requires live DBs)Linux / Docker Testing
To run Datavor tests in a Linux Docker container:
docker run -it --rm -v /path/to/datavor:/app node:20 bash /app/linux-test.sh🔐 Security
- Passwords are only used in your Claude conversation — they are never written to disk
- Use read-only database users when syncing FROM production
- Jobs (
~/.datavor/jobs/) store connection IDs, not credentials - The Context Engine (
~/.datavor/context.db) stores schema metadata and rule names — never actual row data - The sync ledger (
~/.datavor/sync-ledger.json) stores row counts and timestamps only
📄 License
v1.0, v1.5, v2.0: Free for personal and commercial use.
Proprietary License — All rights reserved. Copyright © 2026 Datavor.
📞 Support
- Email: [email protected]
- Website: https://datavorai.com
Response time: within 48 hours.
Version History
v2.0 (March 2026) — FREE
- ⭐ SQL Server connector (
connect_sqlserver) — full sync, transforms, schema introspection - ⭐ SQLite connector (
connect_sqlite) — WAL mode, UPSERT, AUTOINCREMENT detection - ⭐ Snowflake connector (
connect_snowflake) — MERGE upsert, VARIANT/TIMESTAMP_NTZ support - ⭐ Data Context Engine — persistent SQLite knowledge store
- ⭐ 5 new Context Engine tools:
get_context,add_rule,update_rule,remove_rule,explain_database - ⭐ Universal canonical type system — O(n) type mapping across all 5 engines
- ⭐ Auto-apply business rules — rules learned from sync patterns apply automatically
- ⭐ FK detection — foreign keys discovered from DB metadata and column naming patterns
- ⭐ Schema change detection — column additions, removals, and type changes tracked automatically
- Total MCP tools: 34 (was 26)
v1.5 (March 2026) — FREE
- ⭐ Scheduler — automate syncs with natural-language schedules
- ⭐ Transform Pipeline — rename, cast, filter, remap values inline
- ⭐ Sync Dashboard — summary, table history, failure diagnostics
- ⭐ Type Engine — universal MySQL ↔ PostgreSQL type conversion layer
- Total MCP tools: 26 (was 15)
v1.0 (March 2026) — FREE
- Full table sync (MySQL ↔ PostgreSQL)
- Partial sync with WHERE filters
- Incremental sync (timestamp-based)
- Schema comparison, database tree view, schema analysis, AI sync recommendations
Built with ❤️ for the AI-powered future of database management
Datavor — Making data pipelines accessible to everyone through AI
