Add support for list_tools

This commit is contained in:
David Soria Parra
2024-10-11 16:56:25 +01:00
parent 211b5f069a
commit 631c58960f

View File

@@ -24,6 +24,8 @@ from mcp_python.types import (
ListPromptsResult,
ListResourcesRequest,
ListResourcesResult,
ListToolsRequest,
ListToolsResult,
LoggingLevel,
ProgressNotification,
Prompt,
@@ -36,6 +38,7 @@ from mcp_python.types import (
ServerResult,
SetLevelRequest,
SubscribeRequest,
Tool,
UnsubscribeRequest,
)
@@ -79,7 +82,7 @@ class Server:
return ServerCapabilities(
prompts=get_capability(ListPromptsRequest),
resources=get_capability(ListResourcesRequest),
tools=get_capability(ListPromptsRequest),
tools=get_capability(ListToolsRequest),
logging=get_capability(SetLevelRequest),
)
@@ -205,6 +208,7 @@ class Server:
return decorator
def set_logging_level(self):
from mcp_python.types import EmptyResult
@@ -250,6 +254,19 @@ class Server:
return decorator
def list_tools(self):
def decorator(func: Callable[[], Awaitable[list[Tool]]]):
logger.debug("Registering handler for ListToolsRequest")
async def handler(_: Any):
tools = await func()
return ServerResult(ListToolsResult(tools=tools))
self.request_handlers[ListToolsRequest] = handler
return func
return decorator
def call_tool(self):
from mcp_python.types import CallToolResult