Skip to content

Commit 5c70e16

Browse files
authored
Merge pull request #18 from modelcontextprotocol/davidsp/list_tools
Add support for tools/list
2 parents db5ca59 + 631c589 commit 5c70e16

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

mcp_python/server/__init__.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
ListPromptsResult,
2525
ListResourcesRequest,
2626
ListResourcesResult,
27+
ListToolsRequest,
28+
ListToolsResult,
2729
LoggingLevel,
2830
ProgressNotification,
2931
Prompt,
@@ -36,6 +38,7 @@
3638
ServerResult,
3739
SetLevelRequest,
3840
SubscribeRequest,
41+
Tool,
3942
UnsubscribeRequest,
4043
)
4144

@@ -79,7 +82,7 @@ def get_capability(req_type: type) -> dict[str, Any] | None:
7982
return ServerCapabilities(
8083
prompts=get_capability(ListPromptsRequest),
8184
resources=get_capability(ListResourcesRequest),
82-
tools=get_capability(ListPromptsRequest),
85+
tools=get_capability(ListToolsRequest),
8386
logging=get_capability(SetLevelRequest),
8487
)
8588

@@ -205,6 +208,7 @@ async def handler(req: ReadResourceRequest):
205208

206209
return decorator
207210

211+
208212
def set_logging_level(self):
209213
from mcp_python.types import EmptyResult
210214

@@ -250,6 +254,19 @@ async def handler(req: UnsubscribeRequest):
250254

251255
return decorator
252256

257+
def list_tools(self):
258+
def decorator(func: Callable[[], Awaitable[list[Tool]]]):
259+
logger.debug("Registering handler for ListToolsRequest")
260+
261+
async def handler(_: Any):
262+
tools = await func()
263+
return ServerResult(ListToolsResult(tools=tools))
264+
265+
self.request_handlers[ListToolsRequest] = handler
266+
return func
267+
268+
return decorator
269+
253270
def call_tool(self):
254271
from mcp_python.types import CallToolResult
255272

0 commit comments

Comments
 (0)