Skip to content

nimwire/context

This page is generated from the module’s exported API and ## documentation comments.

Request-scoped context and explicit application state handles.

McpTransportKind = enum
mcpTransportUnknown, mcpTransportStdio, mcpTransportHttp,
mcpTransportInProcess

View source

McpTransportInfo = object
kind*: McpTransportKind
name*: string
endpoint*: string
remoteAddress*: string

View source

McpPrincipal = ref object
subject*: string
issuer*: string
scopes*: seq[string]
claims*: JsonNode

View source

McpCancellation = ref object
reason*: string

View source

McpLogger = proc (level: McpLogLevel; message: string) {.closure.}

View source

McpProgressReporter = proc (progress, total: float; message: string): Future[
void] {.closure.}

View source

McpNotificationSender = proc (message: JsonNode): Future[void] {.closure.}

View source

McpRequestStateSealer = proc (payload: JsonNode; context: McpContext): string {.
closure.}

View source

McpRequestStateVerifier = proc (state: string; context: McpContext): JsonNode {.
closure.}

View source

McpStateClaim = object
subject*: string
value*: JsonNode
expiresAt*: int64

View source

McpStateStore = ref object

View source

This object is created once per request and must not be shared.

McpContext = ref object
requestId*: McpId
correlationId*: string
requestBytes*: int
methodName*: string
metadata*: McpRequestMeta
cancellation*: McpCancellation
progress*: McpProgressReporter
logger*: McpLogger
transport*: McpTransportInfo
principal*: McpPrincipal
extensionState*: JsonNode
completionArguments*: JsonNode
inputResponses*: JsonNode
hasRequestState*: bool
requestState*: string
requestStatePayload*: JsonNode
requestStateSealer*: McpRequestStateSealer
requestStateVerifier*: McpRequestStateVerifier
stateStore*: McpStateStore
notificationSender*: McpNotificationSender
hasProgressToken*: bool
progressToken*: McpId
deadlineAt*: float
lastProgress*: float
hasReportedProgress*: bool
hasInputRequired*: bool
inputRequired*: McpWireResult

View source

proc newMcpPrincipal(subject: string; claims: JsonNode = nil; issuer = "";
scopes: seq[string] = @[]): McpPrincipal {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpPrincipal.

Name Type Default
subject string
claims JsonNode nil
issuer inferred ""
scopes seq[string] @[]

View source

proc newMcpCancellation(): McpCancellation {.raises: [], tags: [], forbids: [].}

Returns: McpCancellation.

View source

proc cancel(cancellation: McpCancellation; reason = "") {.raises: [Exception],
tags: [RootEffect], forbids: [].}
Name Type Default
cancellation McpCancellation
reason inferred ""

View source

proc waitCancelled(cancellation: McpCancellation): Future[void] {.
raises: [McpError], tags: [], forbids: [].}

Returns: Future[void].

Name Type Default
cancellation McpCancellation

View source

proc isCancelled(cancellation: McpCancellation): bool {.raises: [], tags: [],
forbids: [].}

Returns: bool.

Name Type Default
cancellation McpCancellation

View source

proc checkCancelled(cancellation: McpCancellation) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
cancellation McpCancellation

View source

proc newMcpStateStore(ttlSeconds = 900; maxEntries = 10000): McpStateStore {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpStateStore.

Name Type Default
ttlSeconds inferred 900
maxEntries inferred 10000

View source

proc newMcpCorrelationId(): string {.raises: [OSError], tags: [], forbids: [].}

Returns: string.

View source

proc mintStateHandle(store: McpStateStore; subject: string; value: JsonNode): string {.
raises: [McpError, OSError], tags: [TimeEffect], forbids: [].}

Returns: string.

Name Type Default
store McpStateStore
subject string
value JsonNode

View source

proc verifyStateHandle(store: McpStateStore; handle, subject: string): Option[
McpStateClaim] {.raises: [KeyError], tags: [TimeEffect], forbids: [].}

Returns: Option[McpStateClaim].

Name Type Default
store McpStateStore
handle string
subject string

View source

proc revokeStateHandle(store: McpStateStore; handle: string): bool {.raises: [],
tags: [], forbids: [].}

Returns: bool.

Name Type Default
store McpStateStore
handle string

View source

proc newMcpContext(request: McpRpcRequest; transport = McpTransportInfo();
cancellation: McpCancellation = nil;
principal: McpPrincipal = nil;
extensionState: JsonNode = nil;
stateStore: McpStateStore = nil; logger: McpLogger = nil;
progress: McpProgressReporter = nil;
requestStateSealer: McpRequestStateSealer = nil;
requestStateVerifier: McpRequestStateVerifier = nil;
notificationSender: McpNotificationSender = nil;
deadlineMs = 0; requestBytes = 0; correlationId = ""): McpContext {.
raises: [OSError, KeyError], tags: [TimeEffect], forbids: [].}

Returns: McpContext.

Name Type Default
request McpRpcRequest
transport inferred McpTransportInfo()
cancellation McpCancellation nil
principal McpPrincipal nil
extensionState JsonNode nil
stateStore McpStateStore nil
logger McpLogger nil
progress McpProgressReporter nil
requestStateSealer McpRequestStateSealer nil
requestStateVerifier McpRequestStateVerifier nil
notificationSender McpNotificationSender nil
deadlineMs inferred 0
requestBytes inferred 0
correlationId inferred ""

View source

proc cancel(context: McpContext; reason = "") {.raises: [Exception],
tags: [RootEffect], forbids: [].}
Name Type Default
context McpContext
reason inferred ""

View source

proc isCancelled(context: McpContext): bool {.raises: [], tags: [], forbids: [].}

Returns: bool.

Name Type Default
context McpContext

View source

proc checkCancelled(context: McpContext) {.raises: [McpError, Exception],
tags: [TimeEffect, RootEffect], forbids: [].}
Name Type Default
context McpContext

View source

proc remainingTimeMs(context: McpContext): int {.raises: [], tags: [TimeEffect],
forbids: [].}

Returns: int.

Name Type Default
context McpContext

View source

proc sealRequestState(context: McpContext; payload: JsonNode): string {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}

Returns: string.

Name Type Default
context McpContext
payload JsonNode

View source

proc verifyRequestState(context: McpContext): JsonNode {.
raises: [Exception, McpError], tags: [RootEffect], forbids: [].}

Returns: JsonNode.

Name Type Default
context McpContext

View source

proc requireInput(context: McpContext; value: McpWireResult) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
context McpContext
value McpWireResult

View source

proc inputResponse(context: McpContext; key: string): JsonNode {.
raises: [KeyError], tags: [], forbids: [].}

Returns: JsonNode.

Name Type Default
context McpContext
key string

View source

proc log(context: McpContext; level: McpLogLevel; message: string) {.
raises: [Exception], tags: [RootEffect], forbids: [].}
Name Type Default
context McpContext
level McpLogLevel
message string

View source

proc reportProgress(context: McpContext; progress: float; total = -1.0;
message = ""): Future[void] {.stackTrace: false,
raises: [Exception, McpError, ValueError], tags: [RootEffect, TimeEffect],
forbids: [].}

Returns: Future[void].

Name Type Default
context McpContext
progress float
total inferred -1.0
message inferred ""

View source

proc mintStateHandle(context: McpContext; value: JsonNode): string {.
raises: [McpError, OSError], tags: [TimeEffect], forbids: [].}

Returns: string.

Name Type Default
context McpContext
value JsonNode

View source

proc verifyStateHandle(context: McpContext; handle: string): Option[
McpStateClaim] {.raises: [KeyError], tags: [TimeEffect], forbids: [].}

Returns: Option[McpStateClaim].

Name Type Default
context McpContext
handle string

View source