|
14 | 14 | from dataclasses import dataclass |
15 | 15 | from datetime import timedelta |
16 | 16 | from types import TracebackType |
17 | | -from typing import Any, TypeAlias |
| 17 | +from typing import Any, TypeAlias, overload |
18 | 18 |
|
19 | 19 | import anyio |
20 | 20 | from pydantic import BaseModel |
21 | | -from typing_extensions import Self |
| 21 | +from typing_extensions import Self, deprecated |
22 | 22 |
|
23 | 23 | import mcp |
24 | 24 | from mcp import types |
@@ -190,21 +190,45 @@ def tools(self) -> dict[str, types.Tool]: |
190 | 190 | """Returns the tools as a dictionary of names to tools.""" |
191 | 191 | return self._tools |
192 | 192 |
|
| 193 | + @overload |
193 | 194 | async def call_tool( |
194 | 195 | self, |
195 | 196 | name: str, |
| 197 | + arguments: dict[str, Any], |
| 198 | + read_timeout_seconds: timedelta | None = None, |
| 199 | + progress_callback: ProgressFnT | None = None, |
| 200 | + *, |
| 201 | + meta: dict[str, Any] | None = None, |
| 202 | + ) -> types.CallToolResult: ... |
| 203 | + |
| 204 | + @overload |
| 205 | + @deprecated("The 'args' parameter is deprecated. Use 'arguments' instead.") |
| 206 | + async def call_tool( |
| 207 | + self, |
| 208 | + name: str, |
| 209 | + *, |
196 | 210 | args: dict[str, Any], |
197 | 211 | read_timeout_seconds: timedelta | None = None, |
198 | 212 | progress_callback: ProgressFnT | None = None, |
| 213 | + meta: dict[str, Any] | None = None, |
| 214 | + ) -> types.CallToolResult: ... |
| 215 | + |
| 216 | + async def call_tool( |
| 217 | + self, |
| 218 | + name: str, |
| 219 | + arguments: dict[str, Any] | None = None, |
| 220 | + read_timeout_seconds: timedelta | None = None, |
| 221 | + progress_callback: ProgressFnT | None = None, |
199 | 222 | *, |
200 | 223 | meta: dict[str, Any] | None = None, |
| 224 | + args: dict[str, Any] | None = None, |
201 | 225 | ) -> types.CallToolResult: |
202 | 226 | """Executes a tool given its name and arguments.""" |
203 | 227 | session = self._tool_to_session[name] |
204 | 228 | session_tool_name = self.tools[name].name |
205 | 229 | return await session.call_tool( |
206 | 230 | session_tool_name, |
207 | | - args, |
| 231 | + arguments if args is None else args, |
208 | 232 | read_timeout_seconds=read_timeout_seconds, |
209 | 233 | progress_callback=progress_callback, |
210 | 234 | meta=meta, |
|
0 commit comments