Skip to content

Repository files navigation

Dataiku

$ dataiku-headless

Dataiku Headless: Agentic Analytics, Data Science, and AI Development powered by Dataiku Cobuild

SUPERVISE · DELEGATE · VERIFY

License: Apache 2.0 Python 3.10+ Built with FastMCP


About Dataiku Headless

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.

Requirements

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.

Get started with the Codex app or Claude Desktop app

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.

Installing and setting up the Dataiku Headless plugin with Codex

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:

Building a Dataiku project with Dataiku Headless and Claude Code

Install with another agent

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 uv is installed and on your PATH:

uv --version

If 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 CLI

codex plugin marketplace add https://github.com/dataiku/dataiku-headless.git
codex plugin add dataiku-headless@dataiku

Claude Code CLI

claude plugin marketplace add https://github.com/dataiku/dataiku-headless.git
claude plugin install dataiku-headless@dataiku

Grok CLI

grok plugin install dataiku/dataiku-headless --trust

Cursor Agent CLI

cursor agent plugin marketplace add github.com/dataiku/dataiku-headless
# Tip: use /plugins in interactive mode to install `dataiku-headless` plugin from this marketplace.

Snowflake CoCo

cortex plugin install dataiku/dataiku-headless

Other AI assistants

MCP

Add 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
    }
  }
}

Skills

The skills/*/SKILL.md files follow the universal skill format:

npx skills add dataiku/dataiku-headless

What it does

Dataiku 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.

Capability reference

For a quick reference to what Headless can inspect, what Cobuild builds, and the limited direct actions Headless supports, see the Headless capability matrix.

MCP Server

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.

Agent Skills

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.

Stdio onboarding and authentication

The onboarding flow is:

  1. Ask the agent to Set up Dataiku Headless (or run /dataiku-headless:dataiku-headless-setup in Claude Code).
  2. Approve the MCP URL prompt.
  3. Enter an instance name, Dataiku URL, and personal API key.
  4. Repeat to add more instances; use list_instances and switch_instance while working.

The API key never appears in MCP tool arguments.

Where configuration lives

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:

  1. An existing ./.dataiku/stdio-config.json in the server's working directory.
  2. ~/.dataiku/stdio-config.json otherwise.

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=false

The 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:

  1. Environment variables: DKU_DSS_URL, DKU_API_KEY, and optional DKU_NO_CHECK_CERTIFICATE
  2. The resolved configuration file, using its default_instance

Run

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

Project Structure

.
├── 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

Contributing

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.

License

Licensed under the Apache License 2.0. Copyright 2026 Dataiku.

About

No description, website, or topics provided.

Resources

Stars

11 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages