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