Skip to content

[AIGTWY-4789] Fix managed MCP/Skills display in configure summary - #740

Open
david-siqi-liu wants to merge 1 commit into
mainfrom
david/ug-configure-box
Open

david-siqi-liu wants to merge 1 commit into
mainfrom
david/ug-configure-box

Conversation

@david-siqi-liu

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

Copy link
Copy Markdown
Collaborator

Problem

ug configure (and ug status) rendered a Configuration panel showing MCPs: none configured and Skills: none configured even when the workspace admin had configured them, e.g. mcp_servers: {unity_catalog_location: main.davidl} and skills: {unity_catalog_location: xsh.xsh_oncall_skills}. The MCP servers were actually registered (the Registered workspace MCP server(s): ... line proves it), so the panel was misreporting.

Cause

_print_managed_summary read the admin's raw mcp_servers/skills selector. After normalize_managed_config each is a NamesOrLocation selector, either {names: [...]} or {unity_catalog_location: <cat>.<schema>}. A UC location is just a pointer with no names or count, and the MCP branch iterated the value as a list of server dicts with a name key, which for a dict yields its string keys, so the list was always empty (broken for both selector forms).

Fix

Source the panel from what ug actually registered/downloaded, which it already persists: MCP servers from state (managed_mcp_servers) and managed skills from disk (records_for_scope("managed")). Each line now renders as N (name, name), so the count and names show uniformly, with no "all under" text and no need to resolve the UC location in this network-free summary. ug configure reloads state after reconcile so the panel counts the servers it just registered; ug status reads the same persisted set.

Also dropped the (pending) label: it dates from when this panel previewed the admin's config before ug did any local registration. Registration and skill download now happen during ug configure right before the panel prints (and are already applied by ug status), so (pending) was stale.

Behavior in the reporter's case: MCPs: 2 (main-davidl-github, main-davidl-mock_mcp_server), and since all five skills failed to download with HTTP 500 (a separate server-side issue, warned above the panel), Skills: none configured — the honest applied state.

Testing

pytest tests/test_cli.py passes (369 tests); ruff check and ruff format --check are clean. Run offline via the sibling venv since PyPI is unreachable in the sandbox.

This pull request and its description were written by Isaac.

@david-siqi-liu david-siqi-liu added the quicktree-assisted PR created with quicktree-assisted workflow label Sep 18, 2026
@david-siqi-liu
david-siqi-liu marked this pull request as ready for review September 18, 2026 15:14
The Configuration panel showed "none configured" for MCPs/Skills even when
the admin set them: it read the raw `mcp_servers`/`skills` selector, which for
a UC location is just a `{unity_catalog_location}` pointer with no names or
count (and the MCP branch iterated the dict as a list of server dicts, so it was
always empty).

Source the panel from what ug actually registered/downloaded instead — MCP
servers from state, managed skills from disk — and render each as `N (name, ...)`.
This gives a real count and names uniformly, drops the vague "all under" text,
and drops the now-stale "(pending)" label (registration/download happens during
`ug configure`, before this panel prints).

Co-authored-by: Isaac <no-reply@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

quicktree-assisted PR created with quicktree-assisted workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant