Skip to content

nimwire/transports/http

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

Stateless Streamable HTTP transport.

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

View source

McpHttpStreamCloser = proc (): Future[void] {.closure.}

View source

McpHttpHeader = object
name*: string
value*: string

View source

Framework-neutral HTTP request passed to handleHttpRequest.

McpHttpRequest = object
httpMethod*: string
path*: string
headers*: seq[McpHttpHeader]
body*: string
transport*: McpTransportInfo
principal*: McpPrincipal
extensionState*: JsonNode
stateStore*: McpStateStore
logger*: McpLogger
progress*: McpProgressReporter
cancellation*: McpCancellation
notificationSender*: McpNotificationSender
streamResponses*: bool
timeoutMs*: int
streamWriter*: McpHttpStreamWriter
streamCloser*: McpHttpStreamCloser

View source

McpHttpResponse = object
status*: int
headers*: seq[McpHttpHeader]
body*: string
streamed*: bool
subscriptionId*: McpId

View source

McpHttpConfig = object
endpoint*: string
host*: string
port*: Port
maxBodyBytes*: int
maxNestingDepth*: int
requestTimeoutMs*: int
maxConcurrentRequests*: int
allowedHosts*: seq[string]
allowedOrigins*: seq[string]
preferSse*: bool
authorization*: McpAuthorizationConfig

View source

McpHttpServer = ref object

View source

proc newMcpHttpConfig(endpoint = "/mcp"; host = "127.0.0.1"; port = Port(0);
maxBodyBytes = mcpDefaultMaxMessageBytes;
maxNestingDepth = mcpDefaultMaxNestingDepth;
requestTimeoutMs = 0; maxConcurrentRequests = 0;
allowedHosts: seq[string] = @[];
allowedOrigins: seq[string] = @[]; preferSse = false;
authorization = McpAuthorizationConfig()): McpHttpConfig {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpHttpConfig.

Name Type Default
endpoint inferred "/mcp"
host inferred "127.0.0.1"
port inferred Port(0)
maxBodyBytes inferred mcpDefaultMaxMessageBytes
maxNestingDepth inferred mcpDefaultMaxNestingDepth
requestTimeoutMs inferred 0
maxConcurrentRequests inferred 0
allowedHosts seq[string] @[]
allowedOrigins seq[string] @[]
preferSse inferred false
authorization inferred McpAuthorizationConfig()

View source

proc newMcpHttpRequest(httpMethod, path: string; body = "";
headers: seq[McpHttpHeader] = @[]): McpHttpRequest {.
raises: [], tags: [], forbids: [].}

Returns: McpHttpRequest.

Name Type Default
httpMethod string
path string
body inferred ""
headers seq[McpHttpHeader] @[]

View source

proc header(name, value: string): McpHttpHeader {.raises: [], tags: [],
forbids: [].}

Returns: McpHttpHeader.

Name Type Default
name string
value string

View source

Encode a UTF-8 value for Mcp-Name or Mcp-Param-*.

proc encodeMcpHeaderValue(value: string): string {.raises: [McpError], tags: [],
forbids: [].}

Returns: string.

Name Type Default
value string

View source

proc mcpParamHeaderName(name: string): string {.raises: [], tags: [],
forbids: [].}

Returns: string.

Name Type Default
name string

View source

proc handleHttpRequest(server: McpServer; request: McpHttpRequest;
config = newMcpHttpConfig()): Future[McpHttpResponse] {.
stackTrace: false,
raises: [Exception, ValueError, McpError, KeyError, OSError],
tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect], forbids: [].}

Returns: Future[McpHttpResponse].

Name Type Default
server McpServer
request McpHttpRequest
config inferred newMcpHttpConfig()

View source

proc toMcpHttpRequest(request: asynchttpserver.Request): McpHttpRequest {.
raises: [Exception], tags: [RootEffect], forbids: [].}

Returns: McpHttpRequest.

Name Type Default
request asynchttpserver.Request

View source

proc newMcpHttpServer(server: McpServer; config = newMcpHttpConfig()): McpHttpServer {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpHttpServer.

Name Type Default
server McpServer
config inferred newMcpHttpConfig()

View source

proc getPort(server: McpHttpServer): Port {.
raises: [McpError, OSError, Exception], tags: [], forbids: [].}

Returns: Port.

Name Type Default
server McpHttpServer

View source

proc serveHttp(server: McpHttpServer): Future[void] {.stackTrace: false, raises: [
Exception, McpError, OSError, ValueError, CatchableError, KeyError,
LibraryError, SslError],
tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect], forbids: [].}

Returns: Future[void].

Name Type Default
server McpHttpServer

View source

proc shutdown(server: McpHttpServer) {.raises: [Exception, KeyError, McpError,
LibraryError, SslError], tags: [RootEffect], forbids: [].}
Name Type Default
server McpHttpServer

View source