Welcome to Datavor

Datavor is an AI-Native MCP server that lets Claude and AI agents sync, transform, schedule, and monitor MySQL and PostgreSQL data pipelines through natural language. No SQL required. No complex UIs. Just ask.

v1.5 What's New — 26 MCP Tools View full changelog →
🗓️
Scheduler
Automate syncs with plain-English schedules. Runs independently of Claude Desktop.
🔄
Transform Pipeline
Rename columns, cast types, filter rows, remap values — all inline during sync.
📊
Sync Dashboard
Every sync is recorded. Ask Claude for success rates, row counts, and failure diagnostics.
🧠
Type Engine
Universal MySQL ↔ PostgreSQL type layer. Lossless conversions guaranteed; risky ones warned.
🗄️
Multi-Connector v2.0
SQL Server, SQLite & Snowflake — sync between all 5 engines in any direction.
🧠
Context Engine v2.0
Persistent AI knowledge brain — learns schema, rules, and relationships over time.

Get Started

Requirements

ℹ️
Phase 1 supports macOS only. Windows and Linux support is coming in Phase 2. Node.js 18 or higher is required.
macOS 10.15 Catalina or later
Node.js v18.0 or higher
Claude Desktop latest version
MySQL or PostgreSQL any accessible instance

Installation

Install Datavor globally via npm:

bash
npm install -g datavor

Verify the installation succeeded:

bash
datavor --version
# → datavor v1.0.0

Configure Claude Desktop

Open your Claude Desktop configuration file and add the Datavor server entry. The config file is located at:

path
~/Library/Application Support/Claude/claude_desktop_config.json

Add the following entry inside mcpServers:

json
{
  "mcpServers": {
    "datavor": {
      "command": "datavor"
    }
  }
}
Restart Claude Desktop after saving the config file. You should see Datavor listed in Claude's connected tools.

Verify Setup

Once Claude Desktop has restarted, open a new conversation and type:

you → claude
List the Datavor tools available.

Claude should respond listing tools like connect_mysql, connect_postgres, sync_table, compare_schemas, and more. You're ready to go.

Connections

Datavor manages live connections to your databases within a session. You connect by telling Claude your database details — host, port, user, password, and database name. Connections are identified by a connection_id returned after a successful connect call, and used in all subsequent operations.

⚠️
Connections are session-scoped — they exist for the duration of your Claude conversation. You'll need to reconnect in a new session.

Sync Modes

Full Sync
Copies all rows from source to target. Best for first-time syncs or small tables. Replaces all existing data in the target table.
Incremental Sync
Only syncs rows changed since the last sync, using a timestamp column (e.g. updated_at). Up to 98% faster than full sync for subsequent runs.
Partial Sync
Syncs a filtered subset of rows using a WHERE clause — e.g. only customers from a specific country or date range.

Schema Tools

Before syncing, Datavor can help you understand your database structure. Ask Claude to show a tree view of all tables, compare schemas between two databases, or inspect a specific table's columns and indexes. These tools run read-only and are safe to use on production databases.

Connection Tools

connect_mysql
Establishes a connection to a MySQL database and returns a connection_id for use in subsequent tools.
host user password database port (default 3306) ssl
connect_postgres
Establishes a connection to a PostgreSQL database and returns a connection_id.
host user password database port (default 5432) ssl
connect_sqlserver v2.0
Connects to a SQL Server database. Requires host, user, password, database. Port defaults to 1433.
hostuserpassworddatabase
connect_sqlite v2.0
Connects to a SQLite file. WAL mode enabled automatically for concurrent reads.
path
connect_snowflake v2.0
Connects to Snowflake. Supports MERGE upsert and VARIANT/TIMESTAMP_NTZ type handling.
accountuserpasswordwarehousedatabase
list_connections
Lists all active connections in the current session.
close_connection
Closes an active database connection.
connection_id

Schema Tools

show_database_tree
Displays a hierarchical tree view of all tables, columns, and row counts in a database.
connection_id
describe_table
Returns detailed schema info for a table — columns, types, constraints, indexes, and foreign keys.
connection_id table
compare_table_schemas
Side-by-side comparison of a table between two databases, highlighting missing columns and type differences.
source_connection_id target_connection_id table
analyze_schema_diff
Analyzes all differences between two databases — tables, columns, and indexes — with AI-powered recommendations.
source_connection_id target_connection_id

Data Tools

execute_query
Executes a SQL query on a connected database and returns results. Read-only by default.
connection_id query max_rows (default 1000)
get_table_data
Fetches rows from a table with optional filtering, column selection, and row limit.
connection_id table filter limit columns

Sync Tools

sync_table
Full sync of a table from source to target database. Handles type conversion between MySQL and PostgreSQL automatically.
source_connection_id target_connection_id table batch_size (default 1000)
sync_table_incremental
Syncs only rows changed since last sync using a timestamp column. Significantly faster for large tables with frequent small updates.
source_connection_id target_connection_id table timestamp_column last_sync_value
sync_table_partial
Syncs a filtered subset of rows using a WHERE clause condition.
source_connection_id target_connection_id table where_clause
recommend_sync_order
AI-powered analysis of which tables to sync first, based on size, relationships, and dependencies.
source_connection_id

Scheduler Tools NEW v1.5

scheduler_create_job
Create an automated sync job with a plain-English schedule (e.g. "every night at 2am").
table source_connection_id target_connection_id schedule mode
scheduler_list_jobs
List all saved sync jobs with their last-run status, schedule, and run count.
scheduler_run_job
Trigger a saved job to run immediately, regardless of its schedule.
job_id
scheduler_pause_job
Pause a job — keeps it saved but stops it from running on schedule.
job_id
scheduler_resume_job
Resume a paused job so it runs on its schedule again.
job_id
scheduler_delete_job
Permanently delete a saved job.
job_id

Transform Tools NEW v1.5

transform_preview
Preview transforms on a sample of real rows — shows before and after side by side before writing anything to the target.
connection_id table transforms
sync_table_with_transforms
Sync a table with inline transforms applied — rename columns, cast types, filter rows, remap values, or add computed columns.
source_connection_id target_connection_id table transforms

Dashboard Tools NEW v1.5

dashboard_summary
Overall sync health — success rate, total rows moved, most active tables, and daily trend for a given period.
days (default 7)
dashboard_table_history
Full run log for a specific table — every sync with row count, duration, mode, and incremental cursor.
table
dashboard_failures
All failed syncs with their error messages and specific fix suggestions.

Context Engine Tools NEW v2.0

get_context
Get everything Datavor knows about a database or table — schema history, rules, relationships, and sync stats.
connection_idtable
explain_database
Get a plain-English summary of a database — tables, rules, sync history, schema changes detected.
connection_id
add_rule
Save a business rule that auto-applies during future syncs (e.g. "always exclude test emails").
connection_idtableconditionauto_apply
update_rule / remove_rule
Update the condition or name of an existing rule, or delete it permanently.
rule_id

Example: Full Sync

Sync an entire table from MySQL to PostgreSQL in one step:

you → claude
Connect to my MySQL at localhost with user root, password secret, database shop.
Connect to my PostgreSQL at localhost port 5432, user admin, password pass, database shop_replica.
Sync the customers table from MySQL to PostgreSQL.
claude response
✅ Connected to MySQL — shop (mysql-abc123)
✅ Connected to PostgreSQL — shop_replica (pg-xyz789)
⟳ Syncing customers in batches of 1,000...
✅ Done — 10,542 rows synced in 5.2s · 0 errors

Example: Incremental Sync

After an initial full sync, use incremental sync for faster daily updates:

you → claude
Incrementally sync the customers table using the updated_at column.
claude response
⟳ Checking updated_at since last sync (2026-03-12 08:00:00)...
✅ Done — 47 changed rows synced in 0.3s · 98% faster than full sync

Example: Partial / Filtered Sync

Sync only a subset of rows matching a condition:

you → claude
Sync only customers from the USA where created_at is after 2025-01-01.
claude response
⟳ Applying filter: country = 'USA' AND created_at > '2025-01-01'...
✅ Done — 2,341 rows synced in 1.1s

Example: Schema Comparison

Compare table structure between two databases before syncing:

you → claude
Compare the customers table schema between my MySQL and PostgreSQL databases.
claude response
✅ Match: id, name, country, phone
⚠ Missing in PostgreSQL: email (VARCHAR 100)
⚠ Type mismatch: created_at — DATETIME vs TIMESTAMP
→ Recommendation: Add email column before syncing. Type conversion will be handled automatically.

Need Help?