fix(mcp): banner shows 'disabled' not 'failed' for enabled:false servers (#38204)
get_mcp_status() treated every non-connected server as a failure, so a server configured with enabled: false rendered as red '— failed' in the startup banner even though it was intentionally off. Add a 'disabled' field derived from the enabled flag and render disabled servers dim as '— disabled' instead.
This commit is contained in:
@@ -133,3 +133,37 @@ def test_build_welcome_banner_title_falls_back_when_no_tag():
|
||||
raw = buf.getvalue()
|
||||
assert "Hermes Agent v" in raw, "Version label missing from title"
|
||||
assert "\x1b]8;" not in raw, "OSC-8 hyperlink should not be emitted without a tag"
|
||||
|
||||
|
||||
def test_build_welcome_banner_disabled_mcp_shows_disabled_not_failed():
|
||||
"""A disabled MCP server renders '— disabled' (dim), not '— failed' (red)."""
|
||||
with (
|
||||
patch.object(model_tools, "check_tool_availability", return_value=(["web"], [])),
|
||||
patch.object(banner, "get_available_skills", return_value={}),
|
||||
patch.object(banner, "get_update_result", return_value=None),
|
||||
patch.object(
|
||||
tools.mcp_tool,
|
||||
"get_mcp_status",
|
||||
return_value=[
|
||||
{"name": "linear", "transport": "http", "tools": 0,
|
||||
"connected": False, "disabled": True},
|
||||
{"name": "broken", "transport": "stdio", "tools": 0,
|
||||
"connected": False, "disabled": False},
|
||||
],
|
||||
),
|
||||
):
|
||||
console = Console(record=True, force_terminal=False, color_system=None, width=160)
|
||||
banner.build_welcome_banner(
|
||||
console=console, model="anthropic/test-model", cwd="/tmp/project",
|
||||
tools=[{"function": {"name": "read_file"}}],
|
||||
get_toolset_for_tool=lambda n: "file",
|
||||
)
|
||||
|
||||
output = console.export_text()
|
||||
# Disabled server is labeled "disabled", not "failed"
|
||||
assert "linear" in output
|
||||
assert "disabled" in output
|
||||
# A genuinely unreachable server still reads "failed"
|
||||
assert "broken" in output
|
||||
assert "failed" in output
|
||||
|
||||
|
||||
Reference in New Issue
Block a user