Skip to content

nimwire/middleware

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

Composable request middleware for tool handlers.

McpToolNext = proc (): Future[McpToolResult] {.closure.}

View source

McpToolMiddleware = proc (name: string; arguments: JsonNode;
context: McpContext; next: McpToolNext): Future[
McpToolResult] {.closure.}

View source

McpToolAuthorization = proc (name: string; principal: McpPrincipal): bool {.
closure.}

View source

McpToolPolicy = proc (name: string; arguments: JsonNode; context: McpContext): bool {.
closure.}

View source

McpToolValidation = proc (name: string; arguments: JsonNode; context: McpContext) {.
closure.}

View source

McpToolTimingHook = proc (name: string; durationMs: float) {.closure.}

View source

McpToolRetryPredicate = proc (error: ref CatchableError): bool {.closure.}

View source

McpToolApprovalDecision = enum
mcpApprovalAllow, mcpApprovalDeny

View source

McpToolApprovalPolicy = proc (name: string; arguments: JsonNode;
context: McpContext): Future[
McpToolApprovalDecision] {.closure.}

View source

McpSyncToolApprovalPolicy = proc (name: string; arguments: JsonNode;
context: McpContext): McpToolApprovalDecision {.
closure.}

View source

proc mcpAuthMiddleware(authorize: McpToolAuthorization): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
authorize McpToolAuthorization

View source

proc mcpValidationMiddleware(validate: McpToolValidation): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
validate McpToolValidation

View source

proc mcpTimingMiddleware(timing: McpToolTimingHook): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
timing McpToolTimingHook

View source

proc defaultMcpRetry(error: ref CatchableError): bool {.raises: [], tags: [],
forbids: [].}

Returns: bool.

Name Type Default
error ref CatchableError

View source

proc mcpRetryMiddleware(maxAttempts = 2; delayMs = 0;
retryOn: McpToolRetryPredicate = nil): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
maxAttempts inferred 2
delayMs inferred 0
retryOn McpToolRetryPredicate nil

View source

proc mcpPolicyMiddleware(policy: McpToolPolicy): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
policy McpToolPolicy

View source

proc mcpApprovalMiddleware(policy: McpToolApprovalPolicy): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
policy McpToolApprovalPolicy

View source

proc mcpApprovalMiddleware(policy: McpSyncToolApprovalPolicy): McpToolMiddleware {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolMiddleware.

Name Type Default
policy McpSyncToolApprovalPolicy

View source

proc runMcpToolMiddleware(middlewares: seq[McpToolMiddleware]; index: int;
name: string; arguments: JsonNode;
context: McpContext; terminal: McpToolNext): Future[
McpToolResult] {.stackTrace: false, raises: [Exception, ValueError],
tags: [RootEffect], forbids: [].}

Returns: Future[McpToolResult].

Name Type Default
middlewares seq[McpToolMiddleware]
index int
name string
arguments JsonNode
context McpContext
terminal McpToolNext

View source