Make MCP servers and skills personal, not managed - #438
Open
david-siqi-liu wants to merge 1 commit into
Open
Conversation
This was referenced Sep 1, 2026
david-siqi-liu
marked this pull request as ready for review
September 1, 2026 20:43
david-siqi-liu
force-pushed
the
david/managed-state-slots
branch
from
September 1, 2026 23:27
ba39bfa to
84859b6
Compare
david-siqi-liu
force-pushed
the
david/personal-mcp-skills
branch
from
September 1, 2026 23:28
ba90328 to
82c09bb
Compare
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
force-pushed
the
david/managed-state-slots
branch
from
September 2, 2026 00:38
84859b6 to
e2ca8e2
Compare
david-siqi-liu
force-pushed
the
david/personal-mcp-skills
branch
from
September 2, 2026 00:39
82c09bb to
223b263
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🥞 Stack (AIGTWY-4342 ucode configure)
ucode setupwith aucode configure-centered workflow #433ucode configurepath end to end #440What 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 mcpand
ucode skills.for them.
ucode skillsmoves out from underucode configure, since it configures nothing managed.tests that only existed to cover it.
src/ucode/mcp.pythat unregisters servers a previous managedconfig had installed and then drops the
managed_mcp_serversmarker. That is the only part of thisPR 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 keptmanaged 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
testpluse2eare green on CI.