44
55from agent_chat_cli .components .spacer import Spacer
66from agent_chat_cli .utils .config import load_config
7+ from agent_chat_cli .utils .mcp_server_status import MCPServerStatus
78
89
910class Header (Widget ):
@@ -18,7 +19,8 @@ def compose(self) -> ComposeResult:
1819 )
1920
2021 yield Label (
21- f"[dim]Available MCP Servers:[/dim] { mcp_servers } " ,
22+ f"[dim]Available MCP Servers: { mcp_servers } [/dim]" ,
23+ id = "header-mcp-servers" ,
2224 )
2325
2426 if agents :
@@ -35,3 +37,29 @@ def compose(self) -> ComposeResult:
3537 id = "header-instructions" ,
3638 classes = "header-instructions" ,
3739 )
40+
41+ def on_mount (self ) -> None :
42+ MCPServerStatus .subscribe (self ._handle_mcp_server_status )
43+
44+ def on_unmount (self ) -> None :
45+ MCPServerStatus .unsubscribe (self ._handle_mcp_server_status )
46+
47+ def _handle_mcp_server_status (self ) -> None :
48+ config = load_config ()
49+ server_names = list (config .mcp_servers .keys ())
50+
51+ server_parts = []
52+ for name in server_names :
53+ is_connected = MCPServerStatus .is_connected (name )
54+
55+ if is_connected :
56+ server_parts .append (f"{ name } " )
57+ else :
58+ # Error connecting to MCP
59+ server_parts .append (f"[#ffa2dc][strike]{ name } [/strike][/]" )
60+
61+ mcp_servers = ", " .join (server_parts )
62+ markup = f"[dim]Available MCP Servers:[/dim] { mcp_servers } "
63+
64+ label = self .query_one ("#header-mcp-servers" , Label )
65+ label .update (markup )
0 commit comments