remove direct _components usage, prep for v3 rollout
This commit is contained in:
@@ -20,6 +20,7 @@ import sys
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from auth.oauth_config import set_transport_mode
|
||||
from core.tool_registry import _get_tool_components
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -36,21 +37,14 @@ def get_registered_tools(server) -> Dict[str, Any]:
|
||||
"""
|
||||
tools = {}
|
||||
|
||||
# FastMCP v3: access tools via local_provider._components
|
||||
lp = getattr(server, "local_provider", None)
|
||||
if lp is not None:
|
||||
components = getattr(lp, "_components", {})
|
||||
for key, tool in components.items():
|
||||
if not key.startswith("tool:"):
|
||||
continue
|
||||
name = key.split(":", 1)[1].rsplit("@", 1)[0]
|
||||
tools[name] = {
|
||||
"name": name,
|
||||
"description": getattr(tool, "description", None)
|
||||
or _extract_docstring(tool),
|
||||
"parameters": _extract_parameters(tool),
|
||||
"tool_obj": tool,
|
||||
}
|
||||
for name, tool in _get_tool_components(server).items():
|
||||
tools[name] = {
|
||||
"name": name,
|
||||
"description": getattr(tool, "description", None)
|
||||
or _extract_docstring(tool),
|
||||
"parameters": _extract_parameters(tool),
|
||||
"tool_obj": tool,
|
||||
}
|
||||
|
||||
return tools
|
||||
|
||||
|
||||
@@ -83,8 +83,13 @@ def _get_tool_components(server) -> dict:
|
||||
"""Get tool components dict from server's local_provider.
|
||||
|
||||
Returns a dict mapping tool_name -> tool_object for introspection.
|
||||
|
||||
Note: Uses local_provider._components because the public list_tools()
|
||||
is async-only, and callers (startup filtering, CLI) run synchronously.
|
||||
"""
|
||||
lp = server.local_provider
|
||||
lp = getattr(server, "local_provider", None)
|
||||
if lp is None:
|
||||
return {}
|
||||
components = getattr(lp, "_components", {})
|
||||
tools = {}
|
||||
for key, component in components.items():
|
||||
@@ -103,7 +108,6 @@ def filter_server_tools(server):
|
||||
return
|
||||
|
||||
tools_removed = 0
|
||||
lp = server.local_provider
|
||||
tool_components = _get_tool_components(server)
|
||||
|
||||
read_only_mode = is_read_only_mode()
|
||||
@@ -144,7 +148,7 @@ def filter_server_tools(server):
|
||||
tools_to_remove.add(tool_name)
|
||||
|
||||
for tool_name in tools_to_remove:
|
||||
lp.remove_tool(tool_name)
|
||||
server.local_provider.remove_tool(tool_name)
|
||||
tools_removed += 1
|
||||
|
||||
if tools_removed > 0:
|
||||
|
||||
Reference in New Issue
Block a user