From 32dd60d310caecbbbddd8c1eea559b0e3c0095a5 Mon Sep 17 00:00:00 2001 From: Test User Date: Tue, 4 Aug 2026 23:11:22 +0200 Subject: [PATCH] Fix FastMCP tool registration --- src/goldfish/daemon.py | 5 +++-- src/goldfish/mcp_proxy.py | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/goldfish/daemon.py b/src/goldfish/daemon.py index 7808b7d..859f811 100644 --- a/src/goldfish/daemon.py +++ b/src/goldfish/daemon.py @@ -484,8 +484,9 @@ def _register_tools(self) -> None: from goldfish.server import mcp - # Get all registered tools from FastMCP (3.x uses async _list_tools) - tools = asyncio.run(mcp._list_tools()) + # Use FastMCP's context-free middleware entrypoint. Calling + # _list_tools() directly requires a request context in FastMCP 2.13+. + tools = asyncio.run(mcp._list_tools_middleware()) for tool in tools: self.tools[tool.name] = tool.fn logger.debug("Registered tool: %s", tool.name) diff --git a/src/goldfish/mcp_proxy.py b/src/goldfish/mcp_proxy.py index 80dd127..2cd800f 100644 --- a/src/goldfish/mcp_proxy.py +++ b/src/goldfish/mcp_proxy.py @@ -319,7 +319,9 @@ def _register_proxy_tools() -> None: from goldfish.server import mcp as original_mcp - tools = asyncio.run(original_mcp._list_tools()) + # Use FastMCP's context-free middleware entrypoint. Calling _list_tools() + # directly requires a request context in FastMCP 2.13+. + tools = asyncio.run(original_mcp._list_tools_middleware()) for tool in tools: tool_name = tool.name original_fn = tool.fn