TUI config cleanup: MCP inventory (#24265)

## Summary

The TUI `/mcp` inventory flow should reflect the app server’s MCP status
response. It was also joining those results with the TUI process’s local
`config.mcp_servers`, which can diverge once MCP state is owned by a
remote app server and cause stale local command, URL, status, or
empty-state details to render.

This change removes the local config join from the app-server-backed
inventory renderer. The TUI now renders directly from the existing
`mcpServerStatus/list` payload and treats an empty status response as
the empty MCP inventory state.

## Known limitation

The existing `mcpServerStatus/list` payload does not include
disabled-state or disabled-reason fields. To preserve the current
app-server API, this PR does not try to infer that state from
client-local config. If remote `/mcp` needs to show disabled/reason
details again, that should come from app-server-owned status data in a
follow-up.

Related to #22914, #22915, and #22916.
This commit is contained in:
Eric Traut authored and GitHub committed 2026-05-25 09:56:21 -07:00
1 parent bb55736906
commit 613e5149a4
6 files changed
+30 -147

No files matched your search

+4 -5
View File
@@ -529,14 +529,13 @@ impl App {
/// Process the completed MCP inventory fetch: clear the loading spinner, then
/// render either the full tool/resource listing or an error into chat history.
///
/// When both the local config and the app-server report zero servers, a special
/// "empty" cell is shown instead of the full table.
/// When the app-server reports zero servers, a special "empty" cell is shown
/// instead of the full table.
pub(super) fn handle_mcp_inventory_result(
&mut self,
result: Result<Vec<McpServerStatus>, String>,
detail: McpServerStatusDetail,
) {
let config = self.chat_widget.config_ref().clone();
self.chat_widget.clear_mcp_inventory_loading();
self.clear_committed_mcp_inventory_loading();
@@ -549,7 +548,7 @@ impl App {
}
};
if config.mcp_servers.get().is_empty() && statuses.is_empty() {
if statuses.is_empty() {
self.chat_widget
.add_to_history(history_cell::empty_mcp_output());
return;
@@ -557,7 +556,7 @@ impl App {
self.chat_widget
.add_to_history(history_cell::new_mcp_tools_output_from_statuses(
&config, &statuses, detail,
&statuses, detail,
));
}