8000 feat(minimal-workspace): ship a .mcp.json registering the dlt workspace MCP server by hibajamal · Pull Request #28 · dlt-hub/dlthub-init · GitHub
[go: up one dir, main page]

Skip to content

feat(minimal-workspace): ship a .mcp.json registering the dlt workspace MCP server - #28

Merged
bjoaquinc merged 2 commits into
develfrom
add-mcp
Sep 9, 2026
Merged

bjoaquinc merged 2 commits into
develfrom
add-mcp

Conversation

@hibajamal
Copy link
Copy Markdown
Contributor

Overview

Ship a .mcp.json in the minimal_workspace scaffold so a freshly scaffolded workspace comes with the dlt workspace MCP server already registered — no manual MCP setup needed after dlthub-init.

Changes

  • scaffolds/minimal_workspace/.mcp.json: new file registering the dlt-workspace-mcp server, run via uv run dlthub ai mcp --stdio.
  • tests/test_scaffold.py: add .mcp.json to EXPECTED, the exact payload set enumerate_payload is asserted against.

No packaging or scaffold-logic changes were needed: enumerate_payload walks the scaffold tree including dotfiles, and hatchling's default package-data inclusion picks the file up.

Tests

  • uv run --extra dev pytest tests — 125 passed, 7 subtests passed.

@bjoaquinc bjoaquinc left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a note in the change log (following the convention for how thats added) regarding this change?

@bjoaquinc
bjoaquinc self-requested a review September 9, 2026 13:49
@bjoaquinc
bjoaquinc merged commit 63137ab into devel Sep 9, 2026
5 checks passed
@bjoaquinc
bjoaquinc deleted the add-mcp branch September 9, 2026 13:50
bjoaquinc added a commit that referenced this pull request Sep 16, 2026
* Refresh uv.lock files (#17)

* Refresh uv.lock files

Ran u
A8C7
v lock --upgrade on the root project and the minimal_workspace scaffold.
Notable scaffold bumps: dlt 1.29.0 -> 1.29.1, duckdb 1.5.4 -> 1.5.5, sqlglot
30.13 -> 30.14, cryptography 49.0 -> 50.0, marimo 0.23.14 -> 0.23.16. Root bumps:
posthog, ruff, certifi. Added an [Unreleased] CHANGELOG entry for the scaffold
refresh.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Cap ruff below 0.16 to hold the lint ruleset

ruff 0.16 turns on new default lint rules that flag pre-existing code; adopting
them is a separate migration. Pin ruff <0.16 so the lock refresh does not drag
in a new ruleset. Re-locked the root (scaffold lock unaffected).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* Release v0.2.6 (#18)

Refreshed the bundled minimal workspace uv.lock (dlt 1.29.0 -> 1.29.1, duckdb
1.5.4 -> 1.5.5, sqlglot 30.13 -> 30.14, cryptography 49.0 -> 50.0, marimo
0.23.14 -> 0.23.16). Capped ruff below 0.16 to hold the lint ruleset.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* Refresh uv.lock files (#20)

Ran uv lock --upgrade on the root project and the minimal_workspace scaffold.
Notable scaffold bumps: dlt 1.29.1 -> 1.30.0, dlthub 0.29.0 -> 0.30.0, starlette
1.3.1 -> 1.6.0, sqlglot 30.14 -> 30.17, setuptools 83.0 -> 84.0. Root bumps:
ast-serialize, librt, mypy, posthog, charset-normalizer, packaging. ruff stays
capped below 0.16. Added an [Unreleased] CHANGELOG entry for the scaffold refresh.

* Release v0.2.7 (#21)

Refreshed the bundled minimal workspace uv.lock (dlt 1.29.1 -> 1.30.0, dlthub
0.29.0 -> 0.30.0, starlette 1.3.1 -> 1.6.0, sqlglot 30.14 -> 30.17, setuptools
83.0 -> 84.0) plus the root dev toolchain lock.

* Refresh uv.lock files (#22)

Ran uv lock --upgrade on the root project and the minimal_workspace scaffold.
Scaffold bumps: marimo 0.23.16 -> 0.24.0, dlthub-client 0.28.2 -> 0.28.3,
authlib 1.7.2 -> 1.8.0, cyclopts 4.22.5 -> 4.23.3, cryptography 50.0.0 ->
50.0.1, pydantic 2.13.4 -> 2.13.5, plus transitives; colorama dropped. Root
bumps: posthog 7.39.1 -> 7.45.1, pygments 2.20.0 -> 2.21.0, idna 3.18 -> 3.19.
dlt and dlthub had no in-constraint bump available.

This scaffold ships no marimo notebook, so the 0.24 bump needs no session
snapshot lockstep here. Added an [Unreleased] CHANGELOG entry. make ci is green.

* Release v0.2.8 (#23)

Bump 0.2.7 -> 0.2.8 (pyproject.toml + uv.lock) and promote the [Unreleased]
CHANGELOG section to 0.2.8.

Ships the lockfile refresh from #22: bundled minimal workspace scaffold picks up
marimo 0.23.16 -> 0.24.0, dlthub-client 0.28.2 -> 0.28.3, authlib 1.7.2 -> 1.8.0,
cyclopts 4.22.5 -> 4.23.3, cryptography 50.0.0 -> 50.0.1, pydantic 2.13.4 ->
2.13.5, plus transitives. Root dev toolchain picks up posthog 7.39.1 -> 7.45.1,
pygments and idna.

Patch level: dependency refresh only, no CLI behavior or API change. make ci and
dlthub-init --help are green.

* Run check-skills in CI (#26)

'make check-skills' was only reachable via 'make ci' locally, so skills/
drifting from the pinned workbench ref would not fail a pull request. Adds a
skills-check job mirroring lock-check.

Placed above lock-check rather than as another step in it, so this does not
collide with the workspace deps drift check landing in a separate PR.

* chore(scaffold): sync workspace deps with dlt WORKSPACE_DEPS and check for drift (#25)

* Add workspace deps sync and drift check

The bundled scaffold's dependency list is a copy of dlt's WORKSPACE_DEPS,
which upstream documents as kept in sync but nothing enforced. The copy sat
frozen at dlt's 2026-05-10 state and drifted.

scripts/sync_workspace_deps.py reads WORKSPACE_DEPS from the dlt wheel the
scaffold's uv.lock resolves, so the lock stays the only pin. It parses the
wheel rather than importing dlt, since dlthub-init deliberately does not
depend on dlt. 'make scaffold-deps-sync' rewrites the list, and
'make scaffold-deps-check' fails on drift in CI and 'make ci'.

BASE_SPECS (dlt[hub], dlthub, dlthub-client) is this repo's own prefix and is
never rewritten by a sync; trimming those is a separate decision.

* Sync scaffold deps with dlt 1.30.0 WORKSPACE_DEPS

Applies the first sync: adds s3fs>=2022.4.0 (dlt-hub/dlt#4044) and drops the
python_version >= '3.10' markers on ibis-framework and fastmcp, which upstream
removed with Python 3.9 support (dlt-hub/dlt#4074). Re-resolves the bundled
uv.lock.

s3fs pulls aiobotocore/aiohttp/botocore, taking a synced workspace from 415 MB
/ 120 packages to 444 MB / 133. Upstream carries it so the job and module
launchers can prune it from their runtime requirements and get it pinned from
the workspace lock instead of installing it unpinned at deploy time.

* Document local platform stack testing workflow (#27)

* feat(minimal-workspace): ship a .mcp.json registering the dlt workspace MCP server (#28)

* feat(minimal-workspace): ship a .mcp.json registering the dlt workspace MCP server

* docs(changelog): note the scaffolded .mcp.json

* test(scaffold): cover .mcp.json and guard the packaged payload (#29)

* Cover scaffold .mcp.json and guard the packaged payload

* Document .mcp.json in the README

* Release v0.2.9 (#30)

* chore(scaffold): bump dlthub-client 0.28.3 to 0.28.4

* Release v0.2.10 (#32)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Hiba Jamal <35984866+hibajamal@users.noreply.github.com>
Co-authored-by: Anton Burnashev <anton.burnashev@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0