mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-08 13:12:08 +00:00
fix(mcp): re-register tools after a parked server is revived
_discover_tools only filled self._tools; registry registration happened only in _discover_and_register_server (initial start) and _refresh_tools. After parking deregistered a server's tools, a revival rebuilt the transport but published zero tools — a phantom recovery. Register freshly discovered tools whenever _ready is set and the registry entry list is empty. Extracted from PR #54139 by @nicha16 (the remainder of that PR reverses the park design and is not taken).
This commit is contained in:
parent
e334700809
commit
cdbdcd6432
1 changed files with 18 additions and 0 deletions
|
|
@ -2340,6 +2340,7 @@ class MCPServerTask:
|
|||
self.name,
|
||||
)
|
||||
self._tools = []
|
||||
self._register_discovered_tools_if_needed()
|
||||
return
|
||||
async with self._rpc_lock:
|
||||
tools_result = await self.session.list_tools()
|
||||
|
|
@ -2348,6 +2349,23 @@ class MCPServerTask:
|
|||
if hasattr(tools_result, "tools")
|
||||
else []
|
||||
)
|
||||
self._register_discovered_tools_if_needed()
|
||||
|
||||
def _register_discovered_tools_if_needed(self) -> None:
|
||||
"""Re-register tools after a post-ready reconnect if needed.
|
||||
|
||||
Initial registration is performed by ``_discover_and_register_server``
|
||||
after ``start()`` completes. During a later reconnect, however,
|
||||
``_ready`` remains set; if outage handling previously deregistered
|
||||
stale tools (parking calls ``_deregister_tools``), a successful
|
||||
revival must publish the freshly discovered tools again — otherwise
|
||||
the transport comes back alive with zero registered tools.
|
||||
"""
|
||||
if not self._ready.is_set() or self._registered_tool_names:
|
||||
return
|
||||
self._registered_tool_names = _register_server_tools(
|
||||
self.name, self, self._config
|
||||
)
|
||||
|
||||
async def run(self, config: dict):
|
||||
"""Long-lived coroutine: connect, discover tools, wait, disconnect.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue