Merge pull request #18 from modelcontextprotocol/davidsp/list_tools

Add support for tools/list
This commit is contained in:
David Soria Parra 2024-10-14 13:19:11 +01:00 • committed by GitHub
commit 5c70e16475
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -24,6 +24,8 @@ from mcp_python.types import (
ListPromptsResult, ListPromptsResult,
ListResourcesRequest, ListResourcesRequest,
ListResourcesResult, ListResourcesResult,
ListToolsRequest,
ListToolsResult,
LoggingLevel, LoggingLevel,
ProgressNotification, ProgressNotification,
Prompt, Prompt,
@ -36,6 +38,7 @@ from mcp_python.types import (
ServerResult, ServerResult,
SetLevelRequest, SetLevelRequest,
SubscribeRequest, SubscribeRequest,
Tool,
UnsubscribeRequest, UnsubscribeRequest,
) )
@ -79,7 +82,7 @@ class Server:
return ServerCapabilities( return ServerCapabilities(
prompts=get_capability(ListPromptsRequest), prompts=get_capability(ListPromptsRequest),
resources=get_capability(ListResourcesRequest), resources=get_capability(ListResourcesRequest),
tools=get_capability(ListPromptsRequest), tools=get_capability(ListToolsRequest),
logging=get_capability(SetLevelRequest), logging=get_capability(SetLevelRequest),
) )
@ -205,6 +208,7 @@ class Server:
return decorator return decorator
def set_logging_level(self): def set_logging_level(self):
from mcp_python.types import EmptyResult from mcp_python.types import EmptyResult
@ -250,6 +254,19 @@ class Server:
return decorator 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): def call_tool(self):
from mcp_python.types import CallToolResult from mcp_python.types import CallToolResult