|
8 | 8 | import mcp.types as types
|
9 | 9 | from mcp.shared.context import RequestContext
|
10 | 10 | from mcp.shared.message import SessionMessage
|
11 |
| -from mcp.shared.session import BaseSession, RequestResponder |
| 11 | +from mcp.shared.session import BaseSession, ProgressFnT, RequestResponder |
12 | 12 | from mcp.shared.version import SUPPORTED_PROTOCOL_VERSIONS
|
13 | 13 |
|
14 | 14 | DEFAULT_CLIENT_INFO = types.Implementation(name="mcp", version="0.1.0")
|
@@ -201,23 +201,29 @@ async def set_logging_level(self, level: types.LoggingLevel) -> types.EmptyResul
|
201 | 201 | types.EmptyResult,
|
202 | 202 | )
|
203 | 203 |
|
204 |
| - async def list_resources(self) -> types.ListResourcesResult: |
| 204 | + async def list_resources( |
| 205 | + self, cursor: str | None = None |
| 206 | + ) -> types.ListResourcesResult: |
205 | 207 | """Send a resources/list request."""
|
206 | 208 | return await self.send_request(
|
207 | 209 | types.ClientRequest(
|
208 | 210 | types.ListResourcesRequest(
|
209 | 211 | method="resources/list",
|
| 212 | + cursor=cursor, |
210 | 213 | )
|
211 | 214 | ),
|
212 | 215 | types.ListResourcesResult,
|
213 | 216 | )
|
214 | 217 |
|
215 |
| - async def list_resource_templates(self) -> types.ListResourceTemplatesResult: |
| 218 | + async def list_resource_templates( |
| 219 | + self, cursor: str | None = None |
| 220 | + ) -> types.ListResourceTemplatesResult: |
216 | 221 | """Send a resources/templates/list request."""
|
217 | 222 | return await self.send_request(
|
218 | 223 | types.ClientRequest(
|
219 | 224 | types.ListResourceTemplatesRequest(
|
220 | 225 | method="resources/templates/list",
|
| 226 | + cursor=cursor, |
221 | 227 | )
|
222 | 228 | ),
|
223 | 229 | types.ListResourceTemplatesResult,
|
@@ -264,26 +270,32 @@ async def call_tool(
|
264 | 270 | name: str,
|
265 | 271 | arguments: dict[str, Any] | None = None,
|
266 | 272 | read_timeout_seconds: timedelta | None = None,
|
| 273 | + progress_callback: ProgressFnT | None = None, |
267 | 274 | ) -> types.CallToolResult:
|
268 |
| - """Send a tools/call request.""" |
| 275 | + """Send a tools/call request with optional progress callback support.""" |
269 | 276 |
|
270 | 277 | return await self.send_request(
|
271 | 278 | types.ClientRequest(
|
272 | 279 | types.CallToolRequest(
|
273 | 280 | method="tools/call",
|
274 |
| - params=types.CallToolRequestParams(name=name, arguments=arguments), |
| 281 | + params=types.CallToolRequestParams( |
| 282 | + name=name, |
| 283 | + arguments=arguments, |
| 284 | + ), |
275 | 285 | )
|
276 | 286 | ),
|
277 | 287 | types.CallToolResult,
|
278 | 288 | request_read_timeout_seconds=read_timeout_seconds,
|
| 289 | + progress_callback=progress_callback, |
279 | 290 | )
|
280 | 291 |
|
281 |
| - async def list_prompts(self) -> types.ListPromptsResult: |
| 292 | + async def list_prompts(self, cursor: str | None = None) -> types.ListPromptsResult: |
282 | 293 | """Send a prompts/list request."""
|
283 | 294 | return await self.send_request(
|
284 | 295 | types.ClientRequest(
|
285 | 296 | types.ListPromptsRequest(
|
286 | 297 | method="prompts/list",
|
| 298 | + cursor=cursor, |
287 | 299 | )
|
288 | 300 | ),
|
289 | 301 | types.ListPromptsResult,
|
@@ -322,12 +334,13 @@ async def complete(
|
322 | 334 | types.CompleteResult,
|
323 | 335 | )
|
324 | 336 |
|
325 |
| - async def list_tools(self) -> types.ListToolsResult: |
| 337 | + async def list_tools(self, cursor: str | None = None) -> types.ListToolsResult: |
326 | 338 | """Send a tools/list request."""
|
327 | 339 | return await self.send_request(
|
328 | 340 | types.ClientRequest(
|
329 | 341 | types.ListToolsRequest(
|
330 | 342 | method="tools/list",
|
| 343 | + cursor=cursor, |
331 | 344 | )
|
332 | 345 | ),
|
333 | 346 | types.ListToolsResult,
|
|
0 commit comments