Skip to content

Make MCP servers and skills personal, not managed - #438

Open
david-siqi-liu wants to merge 1 commit into
david/managed-state-slotsfrom
david/personal-mcp-skills
Open

Make MCP servers and skills personal, not managed#438
david-siqi-liu wants to merge 1 commit into
david/managed-state-slotsfrom
david/personal-mcp-skills

Conversation

@david-siqi-liu

@david-siqi-liu david-siqi-liu commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

🥞 Stack (AIGTWY-4342 ucode configure)


What did you change, and why?

MCP servers and UC Skills were carried inside the managed config, which meant an admin publishing a
config could silently rewrite a developer's own MCP registrations. Both are per-developer settings,
so they come out of the managed path entirely and stay with the commands that own them, ucode mcp
and ucode skills.

  • Managed manifests no longer carry MCP servers or skills, and the authoring wizard no longer asks
    for them.
  • ucode skills moves out from under ucode configure, since it configures nothing managed.
  • Net effect is about 1200 lines deleted: the managed MCP and skills reconciliation logic plus the
    tests that only existed to cover it.
  • Reviewer focus: the upgrade path in src/ucode/mcp.py that unregisters servers a previous managed
    config had installed and then drops the managed_mcp_servers marker. That is the only part of this
    PR that touches a developer's existing state rather than just deleting code. It diffs from the
    marker list, not from the developer's mcp_servers, because the old apply path deliberately kept
    managed servers out of that list.

How do you know it works?

The MCP, skills, wizard, and CLI suites were reworked to the new boundary, including a case for the
upgrade path above. Full unit suite green locally at this layer (2125 passed, 37 skipped; the count drops because the tests for the removed managed MCP and skills path are deleted with it), and test plus e2e are green on CI.

An admin could publish `mcp_servers` and `skills` in the workspace's managed
config, and every launch applied them to each developer's coding tools. That is
the wrong owner: which MCP servers and skills a developer wants is a property of
their machine and their project, not of workspace policy, and a managed launch
silently rewrote registrations they had made themselves.

Move both out of the managed config entirely. The manifest no longer reads,
authors, serializes, or applies them; `ucode setup mcps` and `ucode setup skills`
are gone, and the personal commands move to the top level as `ucode mcp` and
`ucode skills`. A launch calls `migrate_off_managed_mcp_and_skills` once to drop
the registrations a previous managed launch installed, so a developer isn't left
with servers nobody owns.

That migration unregisters what the marker recorded rather than diffing
`mcp_servers`. The old apply path kept managed servers out of `mcp_servers`, so
diffing that list found nothing to undo: the marker was cleared and the developer
told the servers were removed while they stayed registered.

`publish` keeps `mcp_servers` and `skills` in the update mask so publishing
clears whatever a workspace already has, and it ignores those fields in a config
file exported by an older ucode rather than rejecting the file.

Co-authored-by: Isaac <no-reply@databricks.com>
@david-siqi-liu
david-siqi-liu force-pushed the david/managed-state-slots branch from 84859b6 to e2ca8e2 Compare September 2, 2026 00:38
@david-siqi-liu
david-siqi-liu force-pushed the david/personal-mcp-skills branch from 82c09bb to 223b263 Compare September 2, 2026 00:39
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.

1 participant