|
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