Implement SEP-986: Tool name validation (#1655)
This commit is contained in:
parent
998f0ee4db
commit
091afb82dc
1 changed files with 334 additions and 0 deletions
|
|
@ -90,6 +90,7 @@ from mcp.shared.context import RequestContext
|
|||
from mcp.shared.exceptions import McpError
|
||||
from mcp.shared.message import ServerMessageMetadata, SessionMessage
|
||||
from mcp.shared.session import RequestResponder
|
||||
from mcp.shared.tool_name_validation import validate_and_warn_tool_name
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -422,6 +423,7 @@ class Server(Generic[LifespanResultT, RequestT]):
|
|||
if isinstance(result, types.ListToolsResult): # pragma: no cover
|
||||
# Refresh the tool cache with returned tools
|
||||
for tool in result.tools:
|
||||
validate_and_warn_tool_name(tool.name)
|
||||
self._tool_cache[tool.name] = tool
|
||||
return types.ServerResult(result)
|
||||
else:
|
||||
|
|
@ -429,6 +431,7 @@ class Server(Generic[LifespanResultT, RequestT]):
|
|||
# Clear and refresh the entire tool cache
|
||||
self._tool_cache.clear()
|
||||
for tool in result:
|
||||
validate_and_warn_tool_name(tool.name)
|
||||
self._tool_cache[tool.name] = tool
|
||||
return types.ServerResult(types.ListToolsResult(tools=result))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue