diff --git a/navi/core/container.py b/navi/core/container.py index b565508..973724d 100644 --- a/navi/core/container.py +++ b/navi/core/container.py @@ -128,9 +128,14 @@ from navi.core.events import McpStatusUpdate client = mcp_manager.clients.get(server_name) if not client: + logger.warning("_on_mcp_server_connected: no client for %r", server_name) return try: tools = await client.list_tools() + logger.info( + "_on_mcp_server_connected: %r -> %d tools", + server_name, len(tools), + ) for tool in tools: mcp_tool = McpTool( server_name=server_name, @@ -140,6 +145,9 @@ manager=mcp_manager, ) tool_registry.register_external(mcp_tool) + logger.debug( + "Registered MCP tool: %s", mcp_tool.name, + ) await get_event_bus().publish( McpStatusUpdate( server_name=server_name, diff --git a/navi/core/tool_executor.py b/navi/core/tool_executor.py index 4cc77c9..925f135 100644 --- a/navi/core/tool_executor.py +++ b/navi/core/tool_executor.py @@ -69,6 +69,10 @@ if len(legacy_matches) == 1: return legacy_matches[0] + log.warning( + "_resolve_tool: '%s' not found in tool_map (keys: %s)", + name, list(tool_map.keys()), + ) return name, None diff --git a/navi/core/tool_utils.py b/navi/core/tool_utils.py index d8821e7..f1fb686 100644 --- a/navi/core/tool_utils.py +++ b/navi/core/tool_utils.py @@ -1,10 +1,13 @@ """Tool list construction shared between Agent and SubAgentRunner.""" +import logging from pathlib import Path from navi.config import settings from navi.tools._internal.base import Tool +log = logging.getLogger(__name__) + _USER_ENABLED_FILE = Path(settings.tools_dir) / "enabled.json" @@ -47,9 +50,16 @@ names.append(full_name) result = [] + missing = [] for name in names: try: result.append(tool_registry.get(name)) except Exception: - pass + missing.append(name) + if missing: + log.warning("build_tool_list missing tools: %s", missing) + log.debug( + "build_tool_list: enabled=%d mcp_servers=%s resolved=%d missing=%d", + len(enabled), bool(mcp_servers), len(result), len(missing), + ) return result