|
1 | 1 | import logging |
2 | | -from typing import Any, Protocol, overload |
| 2 | +from typing import Any, Protocol |
3 | 3 |
|
4 | 4 | import anyio.lowlevel |
5 | 5 | from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream |
6 | 6 | from pydantic import AnyUrl, TypeAdapter |
7 | | -from typing_extensions import deprecated |
8 | 7 |
|
9 | 8 | import mcp.types as types |
10 | 9 | from mcp.client.experimental import ExperimentalClientFeatures |
@@ -256,112 +255,48 @@ async def set_logging_level(self, level: types.LoggingLevel) -> types.EmptyResul |
256 | 255 | types.EmptyResult, |
257 | 256 | ) |
258 | 257 |
|
259 | | - @overload |
260 | | - @deprecated("Use list_resources(params=PaginatedRequestParams(...)) instead") |
261 | | - async def list_resources(self, cursor: str | None) -> types.ListResourcesResult: ... |
262 | | - |
263 | | - @overload |
264 | | - async def list_resources(self, *, params: types.PaginatedRequestParams | None) -> types.ListResourcesResult: ... |
265 | | - |
266 | | - @overload |
267 | | - async def list_resources(self) -> types.ListResourcesResult: ... |
268 | | - |
269 | | - async def list_resources( |
270 | | - self, |
271 | | - cursor: str | None = None, |
272 | | - *, |
273 | | - params: types.PaginatedRequestParams | None = None, |
274 | | - ) -> types.ListResourcesResult: |
| 258 | + async def list_resources(self, *, params: types.PaginatedRequestParams | None = None) -> types.ListResourcesResult: |
275 | 259 | """Send a resources/list request. |
276 | 260 |
|
277 | 261 | Args: |
278 | | - cursor: Simple cursor string for pagination (deprecated, use params instead) |
279 | 262 | params: Full pagination parameters including cursor and any future fields |
280 | 263 | """ |
281 | | - if params is not None and cursor is not None: |
282 | | - raise ValueError("Cannot specify both cursor and params") |
283 | | - |
284 | | - if params is not None: |
285 | | - request_params = params |
286 | | - elif cursor is not None: |
287 | | - request_params = types.PaginatedRequestParams(cursor=cursor) |
288 | | - else: |
289 | | - request_params = None |
290 | | - |
291 | 264 | return await self.send_request( |
292 | | - types.ClientRequest(types.ListResourcesRequest(params=request_params)), |
| 265 | + types.ClientRequest(types.ListResourcesRequest(params=params)), |
293 | 266 | types.ListResourcesResult, |
294 | 267 | ) |
295 | 268 |
|
296 | | - @overload |
297 | | - @deprecated("Use list_resource_templates(params=PaginatedRequestParams(...)) instead") |
298 | | - async def list_resource_templates(self, cursor: str | None) -> types.ListResourceTemplatesResult: ... |
299 | | - |
300 | | - @overload |
301 | 269 | async def list_resource_templates( |
302 | | - self, *, params: types.PaginatedRequestParams | None |
303 | | - ) -> types.ListResourceTemplatesResult: ... |
304 | | - |
305 | | - @overload |
306 | | - async def list_resource_templates(self) -> types.ListResourceTemplatesResult: ... |
307 | | - |
308 | | - async def list_resource_templates( |
309 | | - self, |
310 | | - cursor: str | None = None, |
311 | | - *, |
312 | | - params: types.PaginatedRequestParams | None = None, |
| 270 | + self, *, params: types.PaginatedRequestParams | None = None |
313 | 271 | ) -> types.ListResourceTemplatesResult: |
314 | 272 | """Send a resources/templates/list request. |
315 | 273 |
|
316 | 274 | Args: |
317 | | - cursor: Simple cursor string for pagination (deprecated, use params instead) |
318 | 275 | params: Full pagination parameters including cursor and any future fields |
319 | 276 | """ |
320 | | - if params is not None and cursor is not None: |
321 | | - raise ValueError("Cannot specify both cursor and params") |
322 | | - |
323 | | - if params is not None: |
324 | | - request_params = params |
325 | | - elif cursor is not None: |
326 | | - request_params = types.PaginatedRequestParams(cursor=cursor) |
327 | | - else: |
328 | | - request_params = None |
329 | | - |
330 | 277 | return await self.send_request( |
331 | | - types.ClientRequest(types.ListResourceTemplatesRequest(params=request_params)), |
| 278 | + types.ClientRequest(types.ListResourceTemplatesRequest(params=params)), |
332 | 279 | types.ListResourceTemplatesResult, |
333 | 280 | ) |
334 | 281 |
|
335 | 282 | async def read_resource(self, uri: AnyUrl) -> types.ReadResourceResult: |
336 | 283 | """Send a resources/read request.""" |
337 | 284 | return await self.send_request( |
338 | | - types.ClientRequest( |
339 | | - types.ReadResourceRequest( |
340 | | - params=types.ReadResourceRequestParams(uri=uri), |
341 | | - ) |
342 | | - ), |
| 285 | + types.ClientRequest(types.ReadResourceRequest(params=types.ReadResourceRequestParams(uri=uri))), |
343 | 286 | types.ReadResourceResult, |
344 | 287 | ) |
345 | 288 |
|
346 | 289 | async def subscribe_resource(self, uri: AnyUrl) -> types.EmptyResult: |
347 | 290 | """Send a resources/subscribe request.""" |
348 | 291 | return await self.send_request( # pragma: no cover |
349 | | - types.ClientRequest( |
350 | | - types.SubscribeRequest( |
351 | | - params=types.SubscribeRequestParams(uri=uri), |
352 | | - ) |
353 | | - ), |
| 292 | + types.ClientRequest(types.SubscribeRequest(params=types.SubscribeRequestParams(uri=uri))), |
354 | 293 | types.EmptyResult, |
355 | 294 | ) |
356 | 295 |
|
357 | 296 | async def unsubscribe_resource(self, uri: AnyUrl) -> types.EmptyResult: |
358 | 297 | """Send a resources/unsubscribe request.""" |
359 | 298 | return await self.send_request( # pragma: no cover |
360 | | - types.ClientRequest( |
361 | | - types.UnsubscribeRequest( |
362 | | - params=types.UnsubscribeRequestParams(uri=uri), |
363 | | - ) |
364 | | - ), |
| 299 | + types.ClientRequest(types.UnsubscribeRequest(params=types.UnsubscribeRequestParams(uri=uri))), |
365 | 300 | types.EmptyResult, |
366 | 301 | ) |
367 | 302 |
|
@@ -422,40 +357,14 @@ async def _validate_tool_result(self, name: str, result: types.CallToolResult) - |
422 | 357 | except SchemaError as e: # pragma: no cover |
423 | 358 | raise RuntimeError(f"Invalid schema for tool {name}: {e}") # pragma: no cover |
424 | 359 |
|
425 | | - @overload |
426 | | - @deprecated("Use list_prompts(params=PaginatedRequestParams(...)) instead") |
427 | | - async def list_prompts(self, cursor: str | None) -> types.ListPromptsResult: ... |
428 | | - |
429 | | - @overload |
430 | | - async def list_prompts(self, *, params: types.PaginatedRequestParams | None) -> types.ListPromptsResult: ... |
431 | | - |
432 | | - @overload |
433 | | - async def list_prompts(self) -> types.ListPromptsResult: ... |
434 | | - |
435 | | - async def list_prompts( |
436 | | - self, |
437 | | - cursor: str | None = None, |
438 | | - *, |
439 | | - params: types.PaginatedRequestParams | None = None, |
440 | | - ) -> types.ListPromptsResult: |
| 360 | + async def list_prompts(self, *, params: types.PaginatedRequestParams | None = None) -> types.ListPromptsResult: |
441 | 361 | """Send a prompts/list request. |
442 | 362 |
|
443 | 363 | Args: |
444 | | - cursor: Simple cursor string for pagination (deprecated, use params instead) |
445 | 364 | params: Full pagination parameters including cursor and any future fields |
446 | 365 | """ |
447 | | - if params is not None and cursor is not None: |
448 | | - raise ValueError("Cannot specify both cursor and params") |
449 | | - |
450 | | - if params is not None: |
451 | | - request_params = params |
452 | | - elif cursor is not None: |
453 | | - request_params = types.PaginatedRequestParams(cursor=cursor) |
454 | | - else: |
455 | | - request_params = None |
456 | | - |
457 | 366 | return await self.send_request( |
458 | | - types.ClientRequest(types.ListPromptsRequest(params=request_params)), |
| 367 | + types.ClientRequest(types.ListPromptsRequest(params=params)), |
459 | 368 | types.ListPromptsResult, |
460 | 369 | ) |
461 | 370 |
|
@@ -494,40 +403,15 @@ async def complete( |
494 | 403 | types.CompleteResult, |
495 | 404 | ) |
496 | 405 |
|
497 | | - @overload |
498 | | - @deprecated("Use list_tools(params=PaginatedRequestParams(...)) instead") |
499 | | - async def list_tools(self, cursor: str | None) -> types.ListToolsResult: ... |
500 | | - |
501 | | - @overload |
502 | | - async def list_tools(self, *, params: types.PaginatedRequestParams | None) -> types.ListToolsResult: ... |
503 | | - |
504 | | - @overload |
505 | | - async def list_tools(self) -> types.ListToolsResult: ... |
506 | | - |
507 | | - async def list_tools( |
508 | | - self, |
509 | | - cursor: str | None = None, |
510 | | - *, |
511 | | - params: types.PaginatedRequestParams | None = None, |
512 | | - ) -> types.ListToolsResult: |
| 406 | + async def list_tools(self, *, params: types.PaginatedRequestParams | None = None) -> types.ListToolsResult: |
513 | 407 | """Send a tools/list request. |
514 | 408 |
|
515 | 409 | Args: |
516 | 410 | cursor: Simple cursor string for pagination (deprecated, use params instead) |
517 | 411 | params: Full pagination parameters including cursor and any future fields |
518 | 412 | """ |
519 | | - if params is not None and cursor is not None: |
520 | | - raise ValueError("Cannot specify both cursor and params") |
521 | | - |
522 | | - if params is not None: |
523 | | - request_params = params |
524 | | - elif cursor is not None: |
525 | | - request_params = types.PaginatedRequestParams(cursor=cursor) |
526 | | - else: |
527 | | - request_params = None |
528 | | - |
529 | 413 | result = await self.send_request( |
530 | | - types.ClientRequest(types.ListToolsRequest(params=request_params)), |
| 414 | + types.ClientRequest(types.ListToolsRequest(params=params)), |
531 | 415 | types.ListToolsResult, |
532 | 416 | ) |
533 | 417 |
|
|
0 commit comments