Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
d8cd953
feat(config): require explicit Dataiku instance types
nmartorell Oct 1, 2026
6f262ee
chore: merge origin/main into feat/add-instance-types
nmartorell Oct 2, 2026
b6fb063
chore(config): forgot to remove DKU_CONFIG_FILE deprecation code in P…
nmartorell Oct 2, 2026
45afad6
Merge branch 'main' into feat/add-instance-types
nmartorell Oct 2, 2026
75ca16b
fix(config): reconcile instance types with Code Studio authentication
nmartorell Oct 2, 2026
772b9ae
fix(config): migrate stdio profiles missing instance types
nmartorell Oct 2, 2026
94d20e2
feat(config): accept Govern instance types
nmartorell Oct 5, 2026
4e68f13
feat(tools): enforce instance-type policies
nmartorell Oct 5, 2026
aa86cfe
chore: Added Contributors file
hanneshapke Oct 19, 2026
5a807d3
Update CONTRIBUTORS.md with maintainers and contributors
hanneshapke Oct 19, 2026
c99eb42
feat(plugins): restore installation and managed environment setup
yjouini Oct 20, 2026
034131c
fix(mcp): shorten plugin and tool names for Bedrock
nmartorell Oct 21, 2026
8a91f6b
Fixing some names
pmasiphelps Oct 22, 2026
98710ea
docs(skills): include explicit requirements in Cobuild requests and c…
yjouini Oct 28, 2026
b4d5705
fix(plugins): make plugin code-env recovery work against real futures
yjouini Oct 28, 2026
8b802ad
fix(plugins): stop failed-build hint from promising a rebuild fixes d…
yjouini Oct 28, 2026
429beb1
refactor(plugins): simplify code-env setup, its guide, and install tests
yjouini Oct 28, 2026
4d9d576
docs(readme): drop plugin installation paragraph
yjouini Oct 29, 2026
ae1e530
refactor(plugins): trim response hints and comments to what agents ac…
yjouini Oct 29, 2026
e579465
fix(plugins): allow store sources over HTTP and mark env setup additive
yjouini Oct 29, 2026
59876f8
refactor(plugins): reuse the interpreter Literal and tidy plugin docs
yjouini Oct 29, 2026
ac2bcb2
feat(plugins): support Git sources and guide plugin development
pmasiphelps Oct 29, 2026
fff50aa
Merge pull request #191 from dataiku/feat/skills-benchmark-guidance
pmasiphelps Oct 30, 2026
85031e2
Merge pull request #188 from dataiku/chore/add-missing-contributors-file
pmasiphelps Oct 30, 2026
a61398b
fix(plugins): verify Git targets and preserve safe recovery
yjouini Nov 2, 2026
38bdb2e
fix(runtime): declare the SDK six requirement
yjouini Nov 2, 2026
4b36daa
refactor(plugins): keep Git updates on DSS
yjouini Nov 2, 2026
c090bf3
fix(jobs): preserve progress in plugin future receipts
pmasiphelps Nov 2, 2026
820cc88
docs(plugins): clarify interpreter selection
pmasiphelps Nov 2, 2026
01fac34
docs(agents): qualify Cobuild support for plugin tools
pmasiphelps Nov 2, 2026
38868f4
docs(plugins): add public ServiceNow agent tool example
pmasiphelps Nov 2, 2026
aaa32ae
docs(plugins): link caller-ticket impersonation example
pmasiphelps Nov 2, 2026
e78dea4
docs(plugins): remove unnecessary template guidance
pmasiphelps Nov 2, 2026
625f91b
docs(plugins): simplify custom agent description
pmasiphelps Nov 2, 2026
8de2bee
docs(plugins): clarify Visual ML code environments
pmasiphelps Nov 2, 2026
a9adc69
refactor(validation): keep general-purpose helpers first
pmasiphelps Nov 2, 2026
a790395
fix(plugins): preserve updates after rebuild exceptions
pmasiphelps Nov 2, 2026
9d2d908
refactor(plugins): fold single-use helpers into their callers
pmasiphelps Nov 2, 2026
d3326ce
feat(plugins): support GitHub Copilot CLI
crmapj Nov 3, 2026
95ab4c9
feat(setup): add connection management form
yjouini Nov 3, 2026
65fd2af
test(setup): trim redundant connection manager checks
yjouini Nov 3, 2026
7287255
fix(setup): preserve connection selection and close cancelled setup
yjouini Nov 3, 2026
4538f53
fix(runtime): declare the SDK six dependency
yjouini Nov 3, 2026
72b554f
refactor(setup): simplify connection rendering and guidance
yjouini Nov 3, 2026
963a839
Merge pull request #193 from dataiku/codex/headless-plugin-install
pmasiphelps Nov 3, 2026
5c40b14
refactor(tools): clarify instance policies and defer product support
pmasiphelps Oct 30, 2026
d83f6b1
fix(setup): close connection manager when startup is cancelled
pmasiphelps Nov 3, 2026
17bcb23
fix(setup): name saved Dataiku instances consistently
pmasiphelps Nov 3, 2026
af8f702
Merge pull request #199 from dataiku/codex/connection-manager
pmasiphelps Nov 3, 2026
6e522c3
fix(plugins): migrate shortened plugin names safely
pmasiphelps Nov 3, 2026
9f5866f
docs(changelog): clarify Claude plugin rename upgrade behavior
pmasiphelps Nov 3, 2026
bb5cc7d
refactor(tools): shorten RAG LLM listing tool name
pmasiphelps Nov 3, 2026
1b98a77
fix: resolve instance policy conflicts with release/0.9.0
pmasiphelps Nov 4, 2026
9a57813
Merge pull request #179 from dataiku/feat/instance-tool-policies
pmasiphelps Nov 4, 2026
b60f625
feat(plugins): separate GitHub Copilot manifests
nmartorell Nov 4, 2026
83a5d0b
docs(plugins): streamline shared startup guidance
nmartorell Nov 4, 2026
03e56e2
chore: merge release/0.9.0 into Copilot support branch
nmartorell Nov 4, 2026
54c70c2
Merge pull request #201 from dataiku/feat/tool-name-shortening
pmasiphelps Nov 4, 2026
5b6ddaa
fix: resolve Copilot plugin conflicts with release/0.9.0
pmasiphelps Nov 4, 2026
5a1546c
Merge pull request #198 from dataiku/feat/copilot-cli-support
pmasiphelps Nov 4, 2026
e7e742c
chore: refresh runtime lock for 0.9.0 release
pmasiphelps Nov 4, 2026
bc6e7bd
Merge pull request #202 from dataiku/release/prepare-0.9.0
pmasiphelps Nov 5, 2026
72ff72b
fix(tls): trust operating system certificate authorities
JedIV Nov 5, 2026
94799e6
test(tls): isolate launcher SSL activation in unit tests
JedIV Nov 5, 2026
c839d9c
fix(datasets): recompute dataset metrics before reading them
crmapj Nov 5, 2026
8ad9763
style(tests): apply ruff format to dataset metric tests
crmapj Nov 5, 2026
5736ad8
feat(tools): create and update R recipes and Shiny webapps directly (…
crmapj Nov 5, 2026
178d156
test(tls): allow server authentication in test certificate
pmasiphelps Nov 5, 2026
3d5fa0d
docs(setup): diagnose HTTPS certificate verification failures
nmartorell Nov 5, 2026
ddd4204
fix(instances): expose connection errors for setup diagnosis
nmartorell Nov 5, 2026
b642eb2
fix(setup): show underlying connection test errors
nmartorell Nov 5, 2026
537cc01
fix(tls): upgrade truststore to 0.10.5
nmartorell Nov 5, 2026
32303aa
fix(datasets): verify metric computation before claiming freshness
pmasiphelps Nov 5, 2026
28bdca9
fix(setup): improve connection errors and saved key display
nmartorell Nov 5, 2026
e6836fc
chore: merge release/0.9.0 into dataset metrics fix
pmasiphelps Nov 5, 2026
c044ef3
fix(tls): trust operating system certificate authorities (#204)
JedIV Nov 5, 2026
531e51d
Merge pull request #205 from dataiku/fix/dataset-metrics-freshness
pmasiphelps Nov 5, 2026
9568e7f
fix(plugins): align Codex plugin and agent marketplace identity
nmartorell Nov 5, 2026
d3b106e
fix(plugins): align client identities and marketplace catalogs
nmartorell Nov 5, 2026
447cb94
chore: align release runtime lock format with CI (#203)
pmasiphelps Nov 5, 2026
17c63fa
revert(tools): defer R recipes and Shiny webapps from 0.9.0 (#206)
pmasiphelps Nov 5, 2026
8078b7c
Merge remote-tracking branch 'origin/release/0.9.0' into fix/agent-pl…
nmartorell Nov 5, 2026
5d77c43
Merge pull request #207 from dataiku/fix/agent-plugin-marketplaces
pmasiphelps Nov 5, 2026
6735e60
chore: refresh runtime dependencies before 0.9.0 finalization (#208)
pmasiphelps Nov 5, 2026
ffd7efe
bump: finalize 0.9.0 (#209)
github-actions[bot] Nov 5, 2026
bd2751e
docs: condense 0.9.0 changelog to release highlights (#211)
pmasiphelps Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "dataiku",
"owner": {
"name": "Dataiku"
},
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"plugins": [
{
"name": "dataiku-headless",
"source": "./",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"category": "developer-tools",
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
}
}
]
}
7 changes: 5 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"plugins": [
{
"name": "dataiku-headless",
"name": "headless",
"source": "./",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"category": "developer-tools"
}
]
],
"renames": {
"dataiku-headless": "headless"
}
}
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dataiku-headless",
"name": "headless",
"displayName": "Dataiku Headless",
"version": "0.8.0",
"version": "0.9.0",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"author": {
"name": "Dataiku",
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dataiku-headless",
"version": "0.8.0",
"version": "0.9.0",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"author": {
"name": "Dataiku",
Expand All @@ -11,7 +11,7 @@
"license": "Apache-2.0",
"keywords": ["dataiku", "cobuild"],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"mcpServers": "./.codex-plugin/mcp.json",
"interface": {
"displayName": "Dataiku Headless",
"shortDescription": "Build AI and data apps",
Expand Down
2 changes: 1 addition & 1 deletion .cortex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dataiku-headless",
"displayName": "Dataiku Headless",
"version": "0.8.0",
"version": "0.9.0",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"author": {
"name": "Dataiku",
Expand Down
17 changes: 17 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "dataiku",
"owner": {
"name": "Dataiku"
},
"plugins": [
{
"name": "dataiku-headless",
"source": "./",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"category": "developer-tools"
}
],
"metadata": {
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets."
}
}
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dataiku-headless",
"version": "0.8.0",
"version": "0.9.0",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"author": {
"name": "Dataiku"
Expand Down
17 changes: 17 additions & 0 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "dataiku",
"owner": {
"name": "Dataiku"
},
"plugins": [
{
"name": "dataiku-headless",
"source": "./",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"category": "developer-tools"
}
],
"metadata": {
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets."
}
}
33 changes: 33 additions & 0 deletions .github/plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "dataiku-headless",
"version": "0.9.0",
"description": "Connect your agent to Dataiku: inspect projects, datasets, recipes, ML, and agents with typed MCP tools, and drive Dataiku Cobuild to build project-level assets.",
"author": {
"name": "Dataiku",
"url": "https://www.dataiku.com/"
},
"homepage": "https://github.com/dataiku/dataiku-headless",
"repository": "https://github.com/dataiku/dataiku-headless",
"license": "Apache-2.0",
"keywords": [
"dataiku",
"cobuild"
],
"mcpServers": {
"dataiku": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--quiet",
"--locked",
"--script",
"${PLUGIN_ROOT}/runtime/run_mcp.py",
"--transport",
"stdio"
],
"cwd": "${PLUGIN_ROOT}"
}
},
"skills": "./skills/"
}
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Use this file when changing this repository. It is not an operating guide for us
- Tool registration imports: `dataiku_mcp/__init__.py`.
- Project dependencies, Python support, version, and CLI entry points: `pyproject.toml`.
- Standalone server dependency pins and Python floor: the PEP 723 block in `runtime/run_mcp.py`.
- Plugin launch configuration: `.mcp.json`, `.claude-plugin/plugin.json`, and `.codex-plugin/plugin.json`.
- Plugin launch configuration: `.codex-plugin/mcp.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, and `.github/plugin/plugin.json` with its sibling marketplace manifest. Keep client-specific MCP configurations scoped to their manifests to avoid discovery conflicts.
- User-facing installation and architecture overview: `README.md`.
- Release behavior: `RELEASE.md` and `.github/workflows/bump.yml`.
- CI behavior: `.github/workflows/ci.yml`, `.github/workflows/pr-title.yml`, and `.github/workflows/cla.yml`.
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
## v0.9.0 (2026-11-05)

### Feat

- **setup**: manage saved instance connections (#199)
- **plugins**: install from Git and manage plugin code environments (#193)
- **tools**: enforce instance-type policies (#179)
- **plugins**: support GitHub Copilot CLI (#198)

### Fix

- **tls**: trust operating system certificate authorities (#204)
- **datasets**: recompute metrics before reading them (#205)
- **plugins**: shorten Claude Code plugin and tool names for Bedrock; reinstall with `/plugin install headless@dataiku` (#201, #207)

## v0.8.0 (2026-10-08)

### Feat
Expand Down
6 changes: 5 additions & 1 deletion CODING_STANDARDS_AND_STRUCTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ export DKU_API_KEY="your-api-key"

## Tool Metadata

- Every registered tool declares `meta.allowed_instance_types` using the shared presets in `dataiku_mcp/instance_policy.py`. Middleware enforces this declaration against the request-pinned instance before DSS token exchange or dispatch; missing or malformed declarations fail closed. Keep the complete catalog visible and extend the exact policy contract in `tests/test_instance_policy.py` when adding or changing a tool.

- Give each tool a short human title and a one-line description of what it is for and when to reach for it.
- The tool catalog is re-sent to the model on every turn of every session, used or not. Keep workflow detail and safety rules in the relevant `skills/**/references/` guide, which loads on demand, and describe only parameters whose correct use a name and type cannot convey.
- Set `readOnlyHint`, `destructiveHint`, and `openWorldHint` explicitly, classified from the handler's actual code paths rather than its name. Omit `idempotentHint` where it cannot apply. A tool whose effect depends on a runtime argument is catalogued at its maximum possible effect.
Expand All @@ -103,12 +105,14 @@ export DKU_API_KEY="your-api-key"
## Cobuild Write-Routing Convention
- This server intentionally does not expose direct create/update/delete tools for in-project flow and analytic assets (recipes, ML analyses, dashboards, insights, agents, agent tools, scenarios, webapps, wiki articles, data quality rules, knowledge banks, semantic models, evaluation stores). Project-level building goes through `dataiku_mcp/tools/cobuild.py`'s Cobuild conversation tools instead. `set_container_exec_config` is the narrow, placement-only exception; all other changes stay with Cobuild.
- Do not add a new direct write tool for an in-project asset type beyond the fixed exceptions below. If a gap in Cobuild's coverage is found, note it in the relevant SKILL.md rather than adding an MCP write tool around it.
- A new direct write tool is only justified when the operation is cross-project, instance-level, or must happen before a project/Cobuild conversation exists. The fixed bootstrap exceptions are `create_project`, `create_upload_dataset`, `create_managed_folder`, `upload_file_to_managed_folder`, `write_project_library_file`, and `set_project_variables`; all but `create_project` write into a project, and each creates a container or carries local content rather than building logic. The other fixed exceptions are deterministic execution of existing assets (`build_datasets`, `run_recipe`, `run_scenario`, and `abort_job`, which stops an existing job) and deterministic container execution placement for an existing object (`set_container_exec_config`).
- A new direct write tool is only justified when the operation is cross-project, instance-level, or must happen before a project/Cobuild conversation exists. The fixed bootstrap exceptions are `create_project`, `create_upload_dataset`, `create_managed_folder`, `upload_file_to_managed_folder`, `write_project_library_file`, and `set_project_variables`; all but `create_project` write into a project, and each creates a container or carries local content rather than building logic. The other fixed exceptions are deterministic execution of existing assets (`build_datasets`, `run_recipe`, `run_scenario`, `abort_job`, which stops an existing job, and `get_dataset_metrics`, which recomputes a dataset's existing metric probes so a read does not return stale stored values) and deterministic container execution placement for an existing object (`set_container_exec_config`).

## Fixed Tool Surface

- `runtime/run_mcp.py` is the single launcher. It requires `--transport stdio` for the local plugin or `--transport http` for the authenticated Streamable HTTP deployment. Keep the transports explicitly selected and preserve the same registered tool catalog.
- Register one directly visible tool catalog. Do not add an MCP search mode.
- Classify explicit tools with `PROJECT_READ_POLICY`, `PROJECT_EXECUTION_POLICY`, `ADMIN_POLICY` or `PROJECT_EDIT_POLICY`; use `INSTANCE_MANAGEMENT_POLICY` for connection controls. Execution includes status/polling, administration includes instance inspection and project folders, and project edits include project Cobuild. Only connection management is exempt from requiring a selected profile.
- `SUPPORTED_DSS_INSTANCE_TYPES` defines the currently supported backend types independently of all valid `InstanceType` values. Agent Management, Govern and Deployer remain configurable profiles with instance controls only until their product support lands.
- The registered set is the contract; `tests/test_tool_surface.py` pins the exact catalog. Any tool add/remove/rename updates that pinned set in the same change.

## Guardrails
Expand Down
24 changes: 24 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Contributors

Thank you to everyone who has contributed to Dataiku Headless!

## Maintainers

- **Patrick Phrayme (Masi-Phelps)** ([@pmasiphelps](https://github.com/pmasiphelps))
- **Ned Martorell** ([@nmartorell](https://github.com/nmartorell))
- **Youssef Jouini** ([@yjouini](https://github.com/yjouini))
- **Christiaan Burrett** ([@crmapj](https://github.com/crmapj))

## Contributors

- **Hannes Hapke** ([@hanneshapke](https://github.com/hanneshapke))
- **Pierre Portal** ([@pportal2](https://github.com/pportal2))
- **Jed Dougherty** ([@JedIV](https://github.com/JedIV))
- **Michael Jeckmans** ([@mjeckmans](https://github.com/mjeckmans))
- **Ludwig Ehlert** ([@ludwigehlert-gif](https://github.com/ludwigehlert-gif))
- **Li-Heng Fu** ([@lhfudataiku](https://github.com/lhfudataiku))
- **Arnaud Pichery** ([@apichery](https://github.com/apichery))

---

Want to contribute? See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
Loading
Loading