datanika-mcp
The Datanika MCP server lets you interact with the Datanika data platform — browsing connections, previewing data, managing dbt transformations, monitoring runs, and orchestrating pipelines.
Read-Only Capabilities (always available)
Agent info: Retrieve the 5-tier agent capability stack description
Connection management: List all connections, get connection details by ID, and list supported connection types with their config schemas
Data exploration: Introspect schemas/tables of a connection, preview the first N rows of a table, and execute read-only SQL queries
dbt transformations: Compile a dbt transformation (resolves Jinja,
ref(),source()without executing), or compile + execute to preview result rowsUploads & pipelines: List all uploads (extract + load jobs), pipelines (dbt orchestration), and transformations
Run monitoring: List runs with filters (by type and status), get details of a specific run, and fetch run logs
Data catalog: List all catalog entries (source tables and dbt models) and get details of a specific catalog entry
Write Capabilities (require --allow-write flag)
Create resources: Create new data connections, uploads, pipelines, and dbt SQL transformations
Bulk import: Bulk-create connections, uploads, pipelines, and transformations in one call using the JSON v2 import format (validates everything before creating anything)
Trigger runs: Trigger upload, pipeline, and transformation runs — with an optional
waitflag to block until completion (up to 120s)
Provides tools for compiling, previewing, and validating dbt transformations, as well as listing and triggering dbt runs and managing dbt orchestration pipelines.
Datanika MCP Server
mcp-name: io.datanika/datanika-mcp
MCP server for Datanika — browse connections, preview data, compile and validate dbt transformations, monitor runs, and manage pipelines from Claude Desktop.
Read-only by default. Pass --allow-write to enable creating resources and triggering pipeline runs.
Install
# From PyPI (recommended)
uvx datanika-mcp --help
# From git
uvx --from "git+https://github.com/datanika-io/datanika-core#subdirectory=datanika-mcp" datanika-mcp --helpRelated MCP server: dagsmith
Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
Read-only (recommended)
{
"mcpServers": {
"datanika": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/datanika-io/datanika-core#subdirectory=datanika-mcp",
"datanika-mcp",
"--url", "https://app.datanika.io",
"--api-key", "YOUR_API_KEY"
]
}
}
}With write access
{
"mcpServers": {
"datanika": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/datanika-io/datanika-core#subdirectory=datanika-mcp",
"datanika-mcp",
"--url", "https://app.datanika.io",
"--api-key", "YOUR_API_KEY",
"--allow-write"
]
}
}
}Environment variables
You can also configure via environment variables:
{
"mcpServers": {
"datanika": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/datanika-io/datanika-core#subdirectory=datanika-mcp",
"datanika-mcp"
],
"env": {
"DATANIKA_URL": "https://app.datanika.io",
"DATANIKA_API_KEY": "YOUR_API_KEY",
"DATANIKA_ALLOW_WRITE": "true"
}
}
}
}Available Tools
Always available (read-only)
Tool | Description |
| Get the 5-tier agent capability stack |
| List supported connection types with config schemas |
| List all connections in the org |
| Get connection details by ID |
| List schemas/tables of a source connection |
| Preview first N rows of a table |
| Execute a read-only SQL query |
| Compile a dbt transformation (no execution) |
| Compile + execute, return preview rows |
| List all uploads |
| List all pipelines |
| List all transformations |
| List runs with optional filters |
| Get run details by ID |
| Get run logs |
| List catalog entries (source tables + dbt models) |
| Get catalog entry details |
Requires --allow-write
Tool | Description |
| Create a new data connection |
| Create a new upload (extract + load) |
| Create a new pipeline (dbt orchestration) |
| Create a new dbt SQL transformation |
| Bulk-create resources from JSON v2 format |
| Trigger an upload run |
| Trigger a pipeline run |
| Trigger a transformation run |
Self-hosted
Point --url at your instance. Use the backend port (8000) — 3000 is the
Reflex frontend and serves no /api/v1:
datanika-mcp --url http://localhost:8000 --api-key etf_your_keyReleasing (maintainers)
datanika-mcp publishes to PyPI via GitHub Actions Trusted Publishing (OIDC — no stored API token). To cut a release (from master):
Bump
versioninpyproject.toml.Tag and push — the tag version must match
pyproject.toml:git tag mcp-v0.2.0 git push origin mcp-v0.2.0The
Release datanika-mcp to PyPIworkflow builds the sdist + wheel and publishes. Verify:uvx datanika-mcp --helpresolves from PyPI.
First-release setup: a one-time PyPI trusted-publisher must be configured (project
datanika-mcp, repodatanika-io/datanika-core, workflowrelease-mcp.yml, environmentpypi) before the first tag will publish. See the infra human-locker.
License
AGPL-3.0 — same as the core Datanika platform.
Available Tools
25 toolsbulk_importA
Bulk-import connections, uploads, pipelines, and transformations in one call.
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it. Uses the JSON v2 import format. Validates everything first — if any errors, nothing is created.
Args: payload: JSON v2 import payload with version, connections, uploads, pipelines, transformations sections. See AI_IMPORT_GUIDE.md.
Inputs: payload (required). Returns: result
compile_transformationA
Compile a dbt transformation — resolves Jinja, ref(), source(). No execution.
Args: transformation_id: The transformation to compile.
Inputs: transformation_id (required). Returns: result
create_connectionA
Create a new data connection.
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args: name: Human-readable name for the connection. connection_type: One of the supported types (e.g. 'postgres', 'mysql', 'stripe'). config: Connection-specific configuration (host, port, credentials, etc.).
Inputs: name (required), config (required), connection_type (required). Returns: result
create_pipelineA
Create a new pipeline (dbt transform orchestration).
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args: name: Pipeline name. destination_connection_id: ID of the destination connection. command: dbt command — 'run', 'build', 'test', 'seed', 'snapshot', 'compile'. description: Optional description.
Inputs: name (required), destination_connection_id (required), command, description. Returns: result
create_transformationA
Create a new dbt SQL transformation.
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args: name: Model name (letters, digits, underscores, hyphens; must start with letter or _). sql_body: dbt-compatible SQL (supports ref(), source(), Jinja). materialization: 'view', 'table', 'incremental', 'ephemeral', or 'snapshot'. description: Optional description. schema_name: Target schema (default 'staging').
Inputs: name (required), sql_body (required), description, schema_name, +1 more. Returns: result
create_uploadA
Create a new upload (extract + load job).
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args: name: Upload name. source_connection_id: ID of the source connection. destination_connection_id: ID of the destination connection. dlt_config: Optional dlt extraction config (load_mode, table_name, etc.). description: Optional description.
Inputs: name (required), source_connection_id (required), destination_connection_id (required), dlt_config, +1 more. Returns: result
get_agent_tiersB
Get the 5-tier agent capability stack — describes what the API can do.
Inputs: no named parameters. Returns: result
get_catalog_entryA
Get details of a specific catalog entry.
Args: entry_id: The catalog entry ID.
Inputs: entry_id (required). Returns: result
get_connectionC
Get details of a specific connection by ID.
Inputs: connection_id (required). Returns: result
get_connection_typesA
List all supported connection types with their config schemas.
Inputs: no named parameters. Returns: result
get_runB
Get details of a specific run by ID.
Args: run_id: The run ID to look up.
Inputs: run_id (required). Returns: result
get_run_logsC
Get the logs of a specific run.
Args: run_id: The run ID whose logs to fetch.
Inputs: run_id (required). Returns: result
introspect_connectionA
List schemas and tables of a source connection.
Args: connection_id: The connection to introspect. schema: Optional schema name to filter tables.
Inputs: connection_id (required), schema. Returns: result
list_catalogA
List all catalog entries (source tables and dbt models).
Inputs: no named parameters. Returns: result
list_connectionsC
List all connections in the organization.
Inputs: no named parameters. Returns: result
list_pipelinesA
List all pipelines (dbt transform orchestration) in the organization.
Inputs: no named parameters. Returns: result
list_runsA
List pipeline/upload/transformation runs with optional filters.
Args: target_type: Filter by type — 'upload', 'pipeline', or 'transformation'. status: Filter by status — 'pending', 'running', 'success', 'failed', 'cancelled'. limit: Max results (default 50, max 200).
Inputs: limit, status, target_type. Returns: result
list_transformationsA
List all dbt transformations in the organization.
Inputs: no named parameters. Returns: result
list_uploadsA
List all uploads (extract + load jobs) in the organization.
Inputs: no named parameters. Returns: result
preview_connectionB
Preview the first N rows of a table from a source connection.
Args: connection_id: The connection to query. table: Table name to preview. schema: Optional schema name. limit: Max rows to return (default 100).
Inputs: table (required), connection_id (required), limit, schema. Returns: result
preview_transformationA
Compile and execute a transformation, returning preview rows.
Args: transformation_id: The transformation to preview. limit: Max rows to return (default 100, max 1000).
Inputs: transformation_id (required), limit. Returns: result
query_connectionA
Execute a read-only SQL query against a source connection.
Args: connection_id: The connection to query. query: A single SELECT statement (no mutations allowed).
Inputs: query (required), connection_id (required). Returns: result
trigger_pipelineA
Trigger a pipeline run (dbt build/run/test).
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args:
pipeline_id: The pipeline to run.
wait: If true, block until the run completes (up to 120s). The result
is returned either way -- a run that FAILED comes back as
{"status": "failed", "error_message": ...}, not as an error.
Check status; do not assume a returned result means success.
A wait that times out returns {"timed_out": true} with the run
still going.
Inputs: pipeline_id (required), wait. Returns: result
trigger_transformationA
Trigger a transformation run.
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args:
transformation_id: The transformation to run.
wait: If true, block until the run completes (up to 120s). The result
is returned either way -- a run that FAILED comes back as
{"status": "failed", "error_message": ...}, not as an error.
Check status; do not assume a returned result means success.
A wait that times out returns {"timed_out": true} with the run
still going.
Inputs: transformation_id (required), wait. Returns: result
trigger_uploadA
Trigger an upload run.
Write tool: available only when this session was granted write access — the local server's --allow-write flag, or an OAuth consent in which the user approved write. Read-only sessions refuse it.
Args:
upload_id: The upload to run.
wait: If true, block until the run completes (up to 120s). The result
is returned either way -- a run that FAILED comes back as
{"status": "failed", "error_message": ...}, not as an error.
Check status; do not assume a returned result means success.
A wait that times out returns {"timed_out": true} with the run
still going.
Inputs: upload_id (required), wait. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Each tool targets a distinct resource-action pair, and the descriptions clearly separate similar operations (e.g., preview vs. compile vs. trigger transformation; preview vs. query connection). The list_*/get_*/create_*/trigger_* families each map to unique entities or operations with no meaningful overlap. Even the similarly named list tools are differentiated by resource type and arguments.
All 25 tools follow the same verb_noun pattern in snake_case, e.g., list_uploads, get_connection, create_pipeline, trigger_transformation. The verbs are consistently used across entity types, and there are no mixed conventions like camelCase or inconsistent verb forms. The naming is highly predictable and aids agent tool selection.
At 25 tools, the set is on the higher end of typical MCP servers, but each tool covers a distinct operation across connections, uploads, pipelines, transformations, runs, and catalog. The count feels slightly heavy yet justified for a data platform with multiple resource types and lifecycle actions. It is not bloated with redundant tools; rather, it is a thorough but near-upper-limit surface.
The server provides comprehensive read and create operations (list, get, create, trigger) for all core entities, and useful extras like preview, compile, introspect, and bulk import. However, there are no update or delete operations for connections, uploads, pipelines, or transformations, which is a notable gap for full lifecycle management. Agents cannot modify or remove existing resources, which may force workarounds or leave dead ends.
Maintenance
Related MCP Connectors
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server with 32 tools for ETL ingestion, AI-generated data quality rules, AI transformations, vector search, and natural-language SQL. Works across Postgres, MongoDB, Kafka, S3/MinIO, HashiCorp Vault, and five vector stores (Qdrant, Weaviate, Milvus, Chroma, pgvector).13Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server providing read-only Snowflake metadata tools (schemas, tables, queries, lineage) for agentic data pipeline generation, enabling natural-language-to-pipeline workflows with dbt, Airflow, and Great Expectations.1MIT
- FlicenseNot gradedqualityDmaintenanceA governed MCP server exposing Databricks operations as tools for jobs orchestration, SQL execution, notebook creation, Unity Catalog governance, lineage, clusters, and DLT pipelines, with safety features like dry-run and audit logging.-
- FlicenseAqualityBmaintenanceAn MCP server that exposes a dbt project's run state as tools, enabling AI assistants to answer questions like 'is the warehouse healthy?' or 'what broke and why?' via plain English, using read-only access to dbt artifacts and warehouse data.4-