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 typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
from auth.oauth_config import set_transport_mode
|
from auth.oauth_config import set_transport_mode
|
||||||
|
from core.tool_registry import _get_tool_components
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -36,21 +37,14 @@ def get_registered_tools(server) -> Dict[str, Any]:
|
|||||||
"""
|
"""
|
||||||
tools = {}
|
tools = {}
|
||||||
|
|
||||||
# FastMCP v3: access tools via local_provider._components
|
for name, tool in _get_tool_components(server).items():
|
||||||
lp = getattr(server, "local_provider", None)
|
tools[name] = {
|
||||||
if lp is not None:
|
"name": name,
|
||||||
components = getattr(lp, "_components", {})
|
"description": getattr(tool, "description", None)
|
||||||
for key, tool in components.items():
|
or _extract_docstring(tool),
|
||||||
if not key.startswith("tool:"):
|
"parameters": _extract_parameters(tool),
|
||||||
continue
|
"tool_obj": tool,
|
||||||
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,
|
|
||||||
}
|
|
||||||
|
|
||||||
return tools
|
return tools
|
||||||
|
|
||||||
|
|||||||
@@ -83,8 +83,13 @@ def _get_tool_components(server) -> dict:
|
|||||||
"""Get tool components dict from server's local_provider.
|
"""Get tool components dict from server's local_provider.
|
||||||
|
|
||||||
Returns a dict mapping tool_name -> tool_object for introspection.
|
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", {})
|
components = getattr(lp, "_components", {})
|
||||||
tools = {}
|
tools = {}
|
||||||
for key, component in components.items():
|
for key, component in components.items():
|
||||||
@@ -103,7 +108,6 @@ def filter_server_tools(server):
|
|||||||
return
|
return
|
||||||
|
|
||||||
tools_removed = 0
|
tools_removed = 0
|
||||||
lp = server.local_provider
|
|
||||||
tool_components = _get_tool_components(server)
|
tool_components = _get_tool_components(server)
|
||||||
|
|
||||||
read_only_mode = is_read_only_mode()
|
read_only_mode = is_read_only_mode()
|
||||||
@@ -144,7 +148,7 @@ def filter_server_tools(server):
|
|||||||
tools_to_remove.add(tool_name)
|
tools_to_remove.add(tool_name)
|
||||||
|
|
||||||
for tool_name in tools_to_remove:
|
for tool_name in tools_to_remove:
|
||||||
lp.remove_tool(tool_name)
|
server.local_provider.remove_tool(tool_name)
|
||||||
tools_removed += 1
|
tools_removed += 1
|
||||||
|
|
||||||
if tools_removed > 0:
|
if tools_removed > 0:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ license = "MIT"
|
|||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastapi>=0.115.12",
|
"fastapi>=0.115.12",
|
||||||
"fastmcp>=3.0.0rc1",
|
"fastmcp>=3.0.2",
|
||||||
"google-api-python-client>=2.168.0",
|
"google-api-python-client>=2.168.0",
|
||||||
"google-auth-httplib2>=0.2.0",
|
"google-auth-httplib2>=0.2.0",
|
||||||
"google-auth-oauthlib>=1.2.2",
|
"google-auth-oauthlib>=1.2.2",
|
||||||
|
|||||||
2
uv.lock
generated
2
uv.lock
generated
@@ -2099,7 +2099,7 @@ valkey = [
|
|||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "cryptography", specifier = ">=45.0.0" },
|
{ name = "cryptography", specifier = ">=45.0.0" },
|
||||||
{ name = "fastapi", specifier = ">=0.115.12" },
|
{ name = "fastapi", specifier = ">=0.115.12" },
|
||||||
{ name = "fastmcp", specifier = ">=3.0.0rc1" },
|
{ name = "fastmcp", specifier = ">=3.0.2" },
|
||||||
{ name = "google-api-python-client", specifier = ">=2.168.0" },
|
{ name = "google-api-python-client", specifier = ">=2.168.0" },
|
||||||
{ name = "google-auth-httplib2", specifier = ">=0.2.0" },
|
{ name = "google-auth-httplib2", specifier = ">=0.2.0" },
|
||||||
{ name = "google-auth-oauthlib", specifier = ">=1.2.2" },
|
{ name = "google-auth-oauthlib", specifier = ">=1.2.2" },
|
||||||
|
|||||||
Reference in New Issue
Block a user