Add meta to Client methods (#1923)
This commit is contained in:
parent
d77292fb06
commit
f0ab53e194
3 changed files with 221 additions and 156 deletions
|
|
@ -7,7 +7,7 @@ from typing_extensions import TypeVar
|
|||
|
||||
from mcp.shared.message import CloseSSEStreamCallback
|
||||
from mcp.shared.session import BaseSession
|
||||
from mcp.types import RequestId, RequestParams
|
||||
from mcp.types import RequestId, RequestParamsMeta
|
||||
|
||||
SessionT = TypeVar("SessionT", bound=BaseSession[Any, Any, Any, Any, Any])
|
||||
LifespanContextT = TypeVar("LifespanContextT")
|
||||
|
|
@ -17,7 +17,7 @@ RequestT = TypeVar("RequestT", default=Any)
|
|||
@dataclass
|
||||
class RequestContext(Generic[SessionT, LifespanContextT, RequestT]):
|
||||
request_id: RequestId
|
||||
meta: RequestParams.Meta | None
|
||||
meta: RequestParamsMeta | None
|
||||
session: SessionT
|
||||
lifespan_context: LifespanContextT
|
||||
# NOTE: This is typed as Any to avoid circular imports. The actual type is
|
||||
|
|
|
|||
|
|
@ -48,10 +48,11 @@ def progress(
|
|||
ProgressContext[SendRequestT, SendNotificationT, SendResultT, ReceiveRequestT, ReceiveNotificationT],
|
||||
None,
|
||||
]:
|
||||
if ctx.meta is None or ctx.meta.progress_token is None: # pragma: no cover
|
||||
progress_token = ctx.meta.get("progress_token") if ctx.meta else None
|
||||
if progress_token is None: # pragma: no cover
|
||||
raise ValueError("No progress token provided")
|
||||
|
||||
progress_ctx = ProgressContext(ctx.session, ctx.meta.progress_token, total)
|
||||
progress_ctx = ProgressContext(ctx.session, progress_token, total)
|
||||
try:
|
||||
yield progress_ctx
|
||||
finally:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ from mcp.types import (
|
|||
JSONRPCRequest,
|
||||
JSONRPCResponse,
|
||||
ProgressNotification,
|
||||
RequestParams,
|
||||
ProgressToken,
|
||||
RequestParamsMeta,
|
||||
ServerNotification,
|
||||
ServerRequest,
|
||||
ServerResult,
|
||||
|
|
@ -71,7 +72,7 @@ class RequestResponder(Generic[ReceiveRequestT, SendResultT]):
|
|||
def __init__(
|
||||
self,
|
||||
request_id: RequestId,
|
||||
request_meta: RequestParams.Meta | None,
|
||||
request_meta: RequestParamsMeta | None,
|
||||
request: ReceiveRequestT,
|
||||
session: BaseSession[SendRequestT, SendNotificationT, SendResultT, ReceiveRequestT, ReceiveNotificationT],
|
||||
on_complete: Callable[[RequestResponder[ReceiveRequestT, SendResultT]], Any],
|
||||
|
|
@ -501,7 +502,7 @@ class BaseSession(
|
|||
|
||||
async def send_progress_notification(
|
||||
self,
|
||||
progress_token: str | int,
|
||||
progress_token: ProgressToken,
|
||||
progress: float,
|
||||
total: float | None = None,
|
||||
message: str | None = None,
|
||||
|
|
|
|||
Loading…
Reference in a new issue