|
13 | 13 | from collections.abc import Callable |
14 | 14 | from datetime import timedelta |
15 | 15 | from types import TracebackType |
16 | | -from typing import Any, TypeAlias |
| 16 | +from typing import Any, TypeAlias, overload |
17 | 17 |
|
18 | 18 | import anyio |
19 | 19 | from pydantic import BaseModel |
20 | | -from typing_extensions import Self |
| 20 | +from typing_extensions import Self, deprecated |
21 | 21 |
|
22 | 22 | import mcp |
23 | 23 | from mcp import types |
@@ -173,21 +173,45 @@ def tools(self) -> dict[str, types.Tool]: |
173 | 173 | """Returns the tools as a dictionary of names to tools.""" |
174 | 174 | return self._tools |
175 | 175 |
|
| 176 | + @overload |
176 | 177 | async def call_tool( |
177 | 178 | self, |
178 | 179 | name: str, |
| 180 | + arguments: dict[str, Any], |
| 181 | + read_timeout_seconds: timedelta | None = None, |
| 182 | + progress_callback: ProgressFnT | None = None, |
| 183 | + *, |
| 184 | + meta: dict[str, Any] | None = None, |
| 185 | + ) -> types.CallToolResult: ... |
| 186 | + |
| 187 | + @overload |
| 188 | + @deprecated("The 'args' parameter is deprecated. Use 'arguments' instead.") |
| 189 | + async def call_tool( |
| 190 | + self, |
| 191 | + name: str, |
| 192 | + *, |
179 | 193 | args: dict[str, Any], |
180 | 194 | read_timeout_seconds: timedelta | None = None, |
181 | 195 | progress_callback: ProgressFnT | None = None, |
| 196 | + meta: dict[str, Any] | None = None, |
| 197 | + ) -> types.CallToolResult: ... |
| 198 | + |
| 199 | + async def call_tool( |
| 200 | + self, |
| 201 | + name: str, |
| 202 | + arguments: dict[str, Any] | None = None, |
| 203 | + read_timeout_seconds: timedelta | None = None, |
| 204 | + progress_callback: ProgressFnT | None = None, |
182 | 205 | *, |
183 | 206 | meta: dict[str, Any] | None = None, |
| 207 | + args: dict[str, Any] | None = None, |
184 | 208 | ) -> types.CallToolResult: |
185 | 209 | """Executes a tool given its name and arguments.""" |
186 | 210 | session = self._tool_to_session[name] |
187 | 211 | session_tool_name = self.tools[name].name |
188 | 212 | return await session.call_tool( |
189 | 213 | session_tool_name, |
190 | | - args, |
| 214 | + arguments if args is None else args, |
191 | 215 | read_timeout_seconds=read_timeout_seconds, |
192 | 216 | progress_callback=progress_callback, |
193 | 217 | meta=meta, |
|
0 commit comments