Dataiku Headless: Agentic Analytics, Data Science, and AI Development powered by Dataiku Cobuild
SUPERVISE · DELEGATE · VERIFY
Dataiku Headless is an MCP server with tools for working in Dataiku, plus skills that teach AI assistants how to use them. Connect it to a Dataiku instance, and your AI assistant can build data pipelines, models, dashboards, agents, and more.
Dataiku Headless supports two connection modes:
| Mode | MCP server | Authentication | Installation |
|---|---|---|---|
| Local stdio | Runs on the user's workstation | Personal Dataiku API key | Install the local plugin |
| Customer-managed HTTP | Runs as an organization-managed service | Enterprise OAuth and delegated Dataiku identity | Install the customer-specific remote plugin distributed by the administrator |
Do not enable both Dataiku MCP definitions in the same client. They expose the same tools with different credential ownership and can cause the agent to target the wrong server.
The rest of this README covers the Dataiku Headless marketplace plugin, which uses stdio transport. For customer-managed HTTP installation, endpoint distribution, OAuth login, and end-user verification, see Streamable HTTP deployment.
Install the plugin from the Claude Code or Codex plugin marketplace, or install it as an agent plugin from this GitHub repository for Cursor, Snowflake CoCo, AWS Kiro, OpenCode, and more.
Dataiku Headless uses uv 0.12.0 or later to provide its isolated Python runtime and pinned dependencies. You do not need to install it before installing the plugin: the setup skill checks for uv and, with your approval, can run the official installer for your platform.
Install the plugin, then select or ask Set up Dataiku Headless. In Claude Code, you can explicitly run /dataiku-headless:dataiku-headless-setup. The setup skill checks the local runtime, helps install uv when needed, and securely saves your Dataiku URL and personal API key on your local machine.
Here's how to do it in the Codex app; Claude has a similar plugin-install flow.
Once connected, you can build in Dataiku.
Here, we use the Claude Code CLI to build a visual pipeline to clean up hospital admissions data, train a model to predict readmission within 30 days, then make predictions for new patients:
dataiku-headless also works with Snowflake CoCo (Cortex Code), Cursor, OpenCode, and custom MCP-compatible agents. Each plugin starts the same local MCP server; after installation, use the same setup flow above.
First launch: If Dataiku Headless tools are unavailable, first check that
uvis installed and on yourPATH:uv --versionIf the command is not found (or reports a version below 0.12.0), install uv using the official installation guide, then fully restart your agent app. If uv is available, the first launch may still take a little longer; wait a minute and restart the app once. An agent with local-command access can perform this check and, with your approval, run the appropriate installer for your platform.
codex plugin marketplace add https://github.com/dataiku/dataiku-headless.git
codex plugin add dataiku-headless@dataikuclaude plugin marketplace add https://github.com/dataiku/dataiku-headless.git
claude plugin install dataiku-headless@dataikugrok plugin install dataiku/dataiku-headless --trustcursor agent plugin marketplace add github.com/dataiku/dataiku-headless
# Tip: use /plugins in interactive mode to install `dataiku-headless` plugin from this marketplace.cortex plugin install dataiku/dataiku-headlessAdd the following to your .mcp.json from a checkout of this repository:
{
"mcp": {
"dataiku": {
"type": "local",
"command": ["uv", "run", "--quiet", "--locked", "--script", "./runtime/run_mcp.py", "--transport", "stdio"],
"enabled": true
}
}
}The skills/*/SKILL.md files follow the universal skill format:
npx skills add dataiku/dataiku-headlessDataiku Headless is an MCP server and agent skill library for operating Dataiku from an AI agent. Connect it to a Dataiku instance to inspect projects, gather context, and use Cobuild—Dataiku's agent for building data pipelines, analytics, machine learning models, multi-agent workflows, applications, and automation pipelines.
Cobuild runs as a retained conversation through MCP tools. This repository intentionally keeps its own tool surface small: inspection tools, three deterministic executions of existing assets (build_datasets, run_recipe, and run_scenario), and a few bootstrap actions that Cobuild cannot perform, such as creating a project or uploading a local file.
For a quick reference to what Headless can inspect, what Cobuild builds, and the limited direct actions Headless supports, see the Headless capability matrix.
dataiku_mcp is a FastMCP server that exposes Dataiku operations as typed, async MCP tools. Tools are organized by domain: projects, project folders, flow, connections, datasets, data quality, managed folders, recipes, machine learning, insights, dashboards, scenarios, WebApps, wikis, agents, LLMs and knowledge banks, instance plugins, job management, administrative tasks, and Cobuild conversations.
- Async execution for all Dataiku API calls
- Progress notifications for long-running operations
- Server-side authentication for the local stdio plugin (env API key or
.dataiku/stdio-config.json) - Modular architecture by functional domain
- Cobuild conversation tools (
start_cobuild_conversation,send_cobuild_message,answer_cobuild_confirmation,list_cobuild_conversations) as the default path for project-level asset creation
In local stdio mode, tools do not accept API keys as arguments — authentication is resolved server-side from environment variables or a config file.
For advanced multi-user deployments, see Streamable HTTP deployment.
skills exposes two prompt-based entrypoints: dataiku-headless-setup for first-time installation, runtime recovery, and instance configuration; and dataiku-headless for Dataiku work. The main entry skill decides which reference guide to read next, carries the shared operating rules, routes in-project asset changes through Cobuild by default, and documents the narrow direct-write exceptions for bootstrap, cross-project, instance-level, or administrative operations that Cobuild does not handle.
The reference library covers the main Dataiku object areas and workflows, including projects, project folders, datasets, recipes, jobs, connections, code environments, plugins, managed folders, project libraries, data quality, machine learning, agents, agent reviews, scenarios, semantic models, webapps, wikis, dashboards, insights, data collections, cross-project sharing, and migrations.
The onboarding flow is:
- Ask the agent to Set up Dataiku Headless (or run
/dataiku-headless:dataiku-headless-setupin Claude Code). - Approve the MCP URL prompt.
- Enter an instance name, Dataiku URL, and personal API key.
- Repeat to add more instances; use
list_instancesandswitch_instancewhile working.
The API key never appears in MCP tool arguments.
The resolved configuration file contains named profiles, their URLs, defaults, and a plaintext api_key. The setup page writes it atomically with user-only (0600) permissions; you can also edit it by hand. Use --settings-path PATH to select an explicit path; otherwise, the server selects its configuration file once at startup in this order:
- An existing
./.dataiku/stdio-config.jsonin the server's working directory. ~/.dataiku/stdio-config.jsonotherwise.
On upgrade, a valid legacy config.json at either location is migrated automatically
to stdio-config.json (the working-directory location takes precedence). Existing
canonical files are used without inspecting a sibling config.json; invalid legacy
files are left untouched and ignored. DKU_CONFIG_FILE is no longer supported;
replace it with --settings-path PATH in the launcher configuration.
The server loads environment and profile settings at startup. Profile additions and
deletions refresh both the resolved file and the in-memory catalog; otherwise, manual
or environment changes require a restart. See .dataiku/stdio-config.json.example for the file shape.
Environment variables are an explicit override:
.env file:
Copy .env.example to .env and fill in your values:
DKU_DSS_URL=https://your-instance.dataiku.com
DKU_API_KEY=your-api-key
DKU_MCP_MAX_WORKERS=4
DKU_NO_CHECK_CERTIFICATE=falseThe canonical runtime/run_mcp.py launcher reads this file after validating its
arguments and before importing the MCP package. .env only fills in variables
not already set in your shell or launcher—a real environment variable of the
same name always wins, even if it is empty. Importing dataiku_mcp directly does
not read .env; embedding callers must prepare their environment first.
Connect to multiple instances:
Put instance info in the resolved configuration file. See .dataiku/stdio-config.json.example for the expected shape.
After adding multiple instance configs, you can use the list_instances, switch_instance, and get_current_instance MCP tools to manage instances from the agent.
Auth resolution order:
- Environment variables:
DKU_DSS_URL,DKU_API_KEY, and optionalDKU_NO_CHECK_CERTIFICATE - The resolved configuration file, using its
default_instance
Every install path above has your harness launch the server itself. Run it standalone only if you're testing it directly — from a clone of this repo:
uv run --quiet --locked --script ./runtime/run_mcp.py --transport stdio.
├── dataiku_mcp/
│ ├── auth.py # Dataiku client creation and HTTP token exchange
│ ├── executors.py # Shared blocking and Cobuild executors
│ ├── tools/
│ │ ├── agents.py # Agent/agent-version/agent-tool inspection tools
│ │ ├── agent_reviews.py # Agent review/test/run inspection tools
│ │ ├── cobuild.py # Cobuild conversation tools (start/send/confirm/list)
│ │ ├── insights.py # Insight inspection tools, especially chart insights
│ │ ├── connections.py # Dataiku connection discovery/test tools
│ │ ├── cross_project_sharing.py # Cross-project sharing inspection tools
│ │ ├── data_collections.py # Data Collection listing/inspection tools
│ │ ├── data_quality.py # Dataset Data Quality rule inspection tools
│ │ ├── dashboards.py # Dashboard inspection tools
│ │ ├── datasets.py # Dataset inspection tools + local-file upload writes
│ │ ├── evaluation_stores.py # Evaluation Store inspection tools
│ │ ├── flow.py # Flow inspection tools
│ │ ├── instances.py # Multi-instance switching tools
│ │ ├── jobs.py # Async job status/log/wait/abort tools
│ │ ├── llms_and_knowledge_banks.py # LLM, Knowledge Bank, and RAG inspection tools
│ │ ├── managed_folders.py # Managed folder inspection tools + local-file upload write
│ │ ├── plugins.py # Instance plugin listing, updates, and deletion
│ │ ├── project_folders.py # Project folder hierarchy inspection and organization tools
│ │ ├── projects.py # Project inspection, creation, variables, and settings
│ │ ├── scenarios.py # Scenario/run-history/messaging-channel inspection tools
│ │ ├── semantic_models.py # Semantic model inspection tools
│ │ ├── groups.py # Instance group administration tools
│ │ ├── licensing.py # Instance licensing status inspection tool
│ │ ├── users.py # Instance user administration tools
│ │ ├── webapps.py # WebApp/backend-state inspection tools
│ │ ├── wikis.py # Wiki article inspection tools
│ │ ├── project_libraries.py # Project library inspection/search + local-file write
│ │ ├── recipes.py # Recipe inspection tools
│ │ ├── machine_learning/ # ML analysis/saved-model inspection tools
│ │ └── utils/ # Tool validation and response-shaping utilities
│ ├── config/ # Models, stdio/HTTP configuration, and request routing
│ ├── server.py # FastMCP construction, middleware, and transport startup
│ ├── setup_server.py # Temporary loopback page used by URL elicitation
│ └── __init__.py # Public API and tool-registration composition root
├── skills/
│ └── dataiku-headless/
│ ├── SKILL.md # Single `dataiku-headless` entry skill: route, inspect, delegate, verify
│ └── references/
│ ├── administration.md # Route instance-level user, group, and licensing tasks
│ ├── cobuild.md # Default in-project write path via Cobuild
│ ├── project-folders.md # Project folder hierarchy inspection and organization
│ ├── projects.md # Project discovery, metadata, variables, and flow orientation
│ ├── datasets.md # Dataset inspection/profiling + Uploaded Files direct-write exception
│ ├── recipes.md # Recipe inspection and recipe-family routing
│ ├── jobs.md # Dataiku job tracking, waiting, aborting, and log inspection
│ ├── connections.md # Connection discovery and capability inspection
│ ├── machine-learning.md # ML analysis, trained-model, and saved-model inspection
│ ├── agents.md # Agent and agent-tool inspection
│ ├── ... # Additional references for dashboards, insights, scenarios, wikis, migrations, and more
│ └── recipes/ # Nested recipe-family and shared recipe references
├── runtime/
│ ├── launcher.sh # Inactive legacy fallback retained for possible future use
│ ├── run_mcp.py # Server entry point: PEP 723 script pinning the runtime deps inline
│ └── run_mcp.py.lock # Committed, full dependency resolution for the entry point
├── .claude-plugin/
│ ├── plugin.json # Claude Code plugin manifest (skills + stdio MCP)
│ └── marketplace.json # Marketplace catalog (single-plugin, source: "./")
├── .codex-plugin/
│ └── plugin.json # Codex plugin manifest
├── .mcp.json # Bundled Codex/ChatGPT MCP config
├── CODING_STANDARDS_AND_STRUCTURE.md # Contributor guide
└── pyproject.toml
See CODING_STANDARDS_AND_STRUCTURE.md for local setup, coding standards, guardrails, and the PR checklist, and RELEASE.md for how versions and releases are cut.
Licensed under the Apache License 2.0. Copyright 2026 Dataiku.

