Skip to content

nimwire/server

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

MCP server registry and typed feature dispatch.

McpToolHandler = proc (arguments: JsonNode; context: McpContext): Future[
McpToolResult] {.closure.}

View source

McpSyncToolHandler = proc (arguments: JsonNode; context: McpContext): McpToolResult {.
closure.}

View source

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

View source

McpResourceFilter = proc (uri: string; principal: McpPrincipal): bool {.closure.}

View source

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

View source

McpTool = object

View source

McpToolGroup = object
namespace*: string
tools*: seq[McpTool]

View source

McpServer = ref object

View source

proc newMcpServer(name, version: string; instructions = ""; listTtlMs = 0;
listCacheScope = "private"; listPageSize = 0;
eventBus: McpEventBus = nil;
requestStateSealer: McpRequestStateSealer = nil;
requestStateVerifier: McpRequestStateVerifier = nil): McpServer {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpServer.

Name Type Default
name string
version string
instructions inferred ""
listTtlMs inferred 0
listCacheScope inferred "private"
listPageSize inferred 0
eventBus McpEventBus nil
requestStateSealer McpRequestStateSealer nil
requestStateVerifier McpRequestStateVerifier nil

View source

proc closeSubscription(server: McpServer; subscription: McpSubscription;
graceful = true): bool {.
raises: [Exception, KeyError, McpError], tags: [RootEffect], forbids: [].}

Returns: bool.

Name Type Default
server McpServer
subscription McpSubscription
graceful inferred true

View source

proc findResourceTemplate(server: McpServer; uriTemplate: string): int {.
raises: [], tags: [], forbids: [].}

Returns: int.

Name Type Default
server McpServer
uriTemplate string

View source

proc newMcpTool(name, description: string; inputSchema: JsonNode;
handler: McpToolHandler; outputSchema: JsonNode = nil;
title = ""; icons: JsonNode = nil; annotations: JsonNode = nil): McpTool {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpTool.

Name Type Default
name string
description string
inputSchema JsonNode
handler McpToolHandler
outputSchema JsonNode nil
title inferred ""
icons JsonNode nil
annotations JsonNode nil

View source

proc newMcpTool(name, description: string; inputSchema: JsonNode;
handler: McpSyncToolHandler; outputSchema: JsonNode = nil;
title = ""; icons: JsonNode = nil; annotations: JsonNode = nil): McpTool {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpTool.

Name Type Default
name string
description string
inputSchema JsonNode
handler McpSyncToolHandler
outputSchema JsonNode nil
title inferred ""
icons JsonNode nil
annotations JsonNode nil

View source

proc newMcpTaskTool(name, description: string; inputSchema: JsonNode;
handler: McpTaskHandler; outputSchema: JsonNode = nil;
title = ""; icons: JsonNode = nil;
annotations: JsonNode = nil): McpTool {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpTool.

Name Type Default
name string
description string
inputSchema JsonNode
handler McpTaskHandler
outputSchema JsonNode nil
title inferred ""
icons JsonNode nil
annotations JsonNode nil

View source

proc toolName(tool: McpTool): string {.raises: [], tags: [], forbids: [].}

Returns: string.

Name Type Default
tool McpTool

View source

proc addTool(server: McpServer; tool: McpTool) {.raises: [McpError], tags: [],
forbids: [].}
Name Type Default
server McpServer
tool McpTool

View source

proc addTool(group: var McpToolGroup; tool: McpTool) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
group var McpToolGroup
tool McpTool

View source

proc newMcpToolGroup(namespace = ""; tools: seq[McpTool] = @[]): McpToolGroup {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpToolGroup.

Name Type Default
namespace inferred ""
tools seq[McpTool] @[]

View source

proc addToolGroup(server: McpServer; group: McpToolGroup) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
group McpToolGroup

View source

proc addTools(server: McpServer; namespace: string; tools: openArray[McpTool]) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
namespace string
tools openArray[McpTool]

View source

proc addTools(server: McpServer; tools: openArray[McpTool]) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
tools openArray[McpTool]

View source

proc markResourcesChanged(server: McpServer) {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer

View source

proc markResourceUpdated(server: McpServer; uri: string) {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer
uri string

View source

proc addResource(server: McpServer; resource: McpResource) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
resource McpResource

View source

proc addResourceTemplate(server: McpServer;
resourceTemplate: McpResourceTemplate) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
resourceTemplate McpResourceTemplate

View source

addResourceTemplateCompletion (overload 1)

Section titled “addResourceTemplateCompletion (overload 1)”
proc addResourceTemplateCompletion(server: McpServer;
uriTemplate, argument: string;
handler: McpResourceCompletionHandler) {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer
uriTemplate string
argument string
handler McpResourceCompletionHandler

View source

addResourceTemplateCompletion (overload 2)

Section titled “addResourceTemplateCompletion (overload 2)”
proc addResourceTemplateCompletion(server: McpServer; uriTemplate: string;
completion: McpCompletion) {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer
uriTemplate string
completion McpCompletion

View source

addResourceTemplateCompletion (overload 3)

Section titled “addResourceTemplateCompletion (overload 3)”
proc addResourceTemplateCompletion(server: McpServer;
uriTemplate, argument: string;
handler: McpSyncResourceCompletionHandler) {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer
uriTemplate string
argument string
handler McpSyncResourceCompletionHandler

View source

proc findResource(server: McpServer; uri: string): int {.raises: [], tags: [],
forbids: [].}

Returns: int.

Name Type Default
server McpServer
uri string

View source

proc addPrompt(server: McpServer; prompt: McpPrompt) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
prompt McpPrompt

View source

proc findPrompt(server: McpServer; name: string): int {.raises: [], tags: [],
forbids: [].}

Returns: int.

Name Type Default
server McpServer
name string

View source

proc parseSubscriptionFilter(value: JsonNode): McpSubscriptionFilter {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpSubscriptionFilter.

Name Type Default
value JsonNode

View source

proc openSubscription(server: McpServer; id: McpId;
requested: McpSubscriptionFilter;
handler: McpSubscriptionMessageHandler): McpSubscription {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: McpSubscription.

Name Type Default
server McpServer
id McpId
requested McpSubscriptionFilter
handler McpSubscriptionMessageHandler

View source

proc subscriptionCount(server: McpServer): int {.raises: [], tags: [],
forbids: [].}

Returns: int.

Name Type Default
server McpServer

View source

proc findSubscription(server: McpServer; id: McpId): McpSubscription {.
raises: [], tags: [], forbids: [].}

Returns: McpSubscription.

Name Type Default
server McpServer
id McpId

View source

proc closeSubscriptions(server: McpServer; graceful = true): int {.
raises: [Exception, KeyError, McpError], tags: [RootEffect], forbids: [].}

Returns: int.

Name Type Default
server McpServer
graceful inferred true

View source

proc cancelSubscription(server: McpServer; id: McpId): bool {.
raises: [Exception, KeyError, McpError], tags: [RootEffect], forbids: [].}

Returns: bool.

Name Type Default
server McpServer
id McpId

View source

proc addPromptCompletion(server: McpServer; promptName, argument: string;
handler: McpPromptCompletionHandler) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
promptName string
argument string
handler McpPromptCompletionHandler

View source

proc addPromptCompletion(server: McpServer; promptName: string;
completion: McpCompletion) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
promptName string
completion McpCompletion

View source

proc addPromptCompletion(server: McpServer; promptName, argument: string;
handler: McpSyncPromptCompletionHandler) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
promptName string
argument string
handler McpSyncPromptCompletionHandler

View source

proc completePromptArgument(server: McpServer;
promptName, argument, prefix: string;
context: McpContext): Future[seq[string]] {.
stackTrace: false, raises: [Exception, ValueError, McpError, KeyError],
tags: [RootEffect], forbids: [].}

Returns: Future[seq[string]].

Name Type Default
server McpServer
promptName string
argument string
prefix string
context McpContext

View source

proc markPromptsChanged(server: McpServer) {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer

View source

proc completeResourceTemplate(server: McpServer;
uriTemplate, argument, prefix: string;
context: McpContext): Future[seq[string]] {.
stackTrace: false, raises: [Exception, ValueError, McpError, KeyError],
tags: [RootEffect], forbids: [].}

Returns: Future[seq[string]].

Name Type Default
server McpServer
uriTemplate string
argument string
prefix string
context McpContext

View source

proc markToolsChanged(server: McpServer) {.
raises: [McpError, Exception, KeyError], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer

View source

proc findTool(server: McpServer; name: string): int {.raises: [], tags: [],
forbids: [].}

Returns: int.

Name Type Default
server McpServer
name string

View source

proc setToolFilter(server: McpServer; filter: McpToolFilter) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
filter McpToolFilter

View source

proc setResourceFilter(server: McpServer; filter: McpResourceFilter) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
filter McpResourceFilter

View source

proc setPromptFilter(server: McpServer; filter: McpPromptFilter) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
filter McpPromptFilter

View source

proc setToolTimeout(server: McpServer; toolName: string; timeoutMs: int) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
toolName string
timeoutMs int

View source

proc setSecurityLimits(server: McpServer; limits: McpSecurityLimits) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
limits McpSecurityLimits

View source

proc setObservability(server: McpServer; hooks: McpObservability) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
hooks McpObservability

View source

proc use(server: McpServer; middleware: McpToolMiddleware) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
middleware McpToolMiddleware

View source

proc use(server: McpServer; middlewares: openArray[McpToolMiddleware]) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
middlewares openArray[McpToolMiddleware]

View source

proc registerExtension(server: McpServer; extension: McpExtension) {.
raises: [McpError], tags: [], forbids: [].}
Name Type Default
server McpServer
extension McpExtension

View source

proc finalizeExtension(server: McpServer; name: string) {.raises: [McpError],
tags: [], forbids: [].}
Name Type Default
server McpServer
name string

View source

proc hasExtension(server: McpServer; name: string): bool {.raises: [], tags: [],
forbids: [].}

Returns: bool.

Name Type Default
server McpServer
name string

View source

proc finalizedExtensions(server: McpServer): seq[McpExtension] {.raises: [],
tags: [], forbids: [].}

Returns: seq[McpExtension].

Name Type Default
server McpServer

View source

proc draftExtensions(server: McpServer): seq[McpExtension] {.raises: [],
tags: [], forbids: [].}

Returns: seq[McpExtension].

Name Type Default
server McpServer

View source

proc enableTasks(server: McpServer; store: McpTaskStore = nil) {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}
Name Type Default
server McpServer
store McpTaskStore nil

View source

proc cancelRequest(server: McpServer; id: McpId; reason = ""): bool {.
raises: [Exception, KeyError], tags: [RootEffect], forbids: [].}

Returns: bool.

Name Type Default
server McpServer
id McpId
reason inferred ""

View source

proc cancelActiveRequests(server: McpServer; reason = "server shutdown"): int {.
raises: [Exception], tags: [RootEffect], forbids: [].}

Returns: int.

Name Type Default
server McpServer
reason inferred "server shutdown"

View source

proc dispatchAsync(server: McpServer; request: McpRpcRequest;
context: McpContext): Future[McpWireResult] {.
stackTrace: false,
raises: [Exception, ValueError, McpError, KeyError, OSError],
tags: [RootEffect, TimeEffect], forbids: [].}

Returns: Future[McpWireResult].

Name Type Default
server McpServer
request McpRpcRequest
context McpContext

View source

proc handleMessageAsync(server: McpServer; message: McpJsonRpcMessage;
context: McpContext; subscriptionHandler: McpSubscriptionMessageHandler = nil): Future[
Option[McpJsonRpcMessage]] {.stackTrace: false, raises: [Exception,
ValueError, OSError, McpError], tags: [RootEffect, TimeEffect], forbids: [].}

Returns: Future[Option[McpJsonRpcMessage]].

Name Type Default
server McpServer
message McpJsonRpcMessage
context McpContext
subscriptionHandler McpSubscriptionMessageHandler nil

View source

Decode one JSON-RPC message, dispatch its typed form, then encode it.

proc handleJsonAsync(server: McpServer; request: JsonNode): Future[JsonNode] {.
stackTrace: false, raises: [Exception, ValueError, McpError, KeyError],
tags: [RootEffect, TimeEffect], forbids: [].}

Returns: Future[JsonNode].

Name Type Default
server McpServer
request JsonNode

View source

proc handleJson(server: McpServer; request: JsonNode): JsonNode {.
raises: [ValueError, Exception, OSError, McpError, KeyError],
tags: [TimeEffect, RootEffect], forbids: [].}

Returns: JsonNode.

Name Type Default
server McpServer
request JsonNode

View source

Concise tool declaration that works with sync or async handlers.

template mcpTool(name, description: string; inputSchema: JsonNode;
handler: untyped; outputSchema: JsonNode = nil; title = "";
icons: JsonNode = nil; annotations: JsonNode = nil): McpTool

Returns: McpTool.

Name Type Default
name string
description string
inputSchema JsonNode
handler untyped
outputSchema JsonNode nil
title inferred ""
icons JsonNode nil
annotations JsonNode nil

View source

Register a typed tool; the expansion remains a normal McpTool.

macro tool(server: McpServer; name, description: static[string]; handler: typed;
inputSchema: untyped = nil; outputSchema: untyped = nil): untyped

Type parameters: name:type, description:type.

Returns: untyped.

Name Type Default
server McpServer
name static[string]
description static[string]
handler typed
inputSchema untyped nil
outputSchema untyped nil

View source

Build a server declaratively while keeping registration code local.

macro mcpServer(name, version: static[string]; body: untyped): untyped

Type parameters: name:type, version:type.

Returns: untyped.

Name Type Default
name static[string]
version static[string]
body untyped

View source

iterator toolHeaderBindings(server: McpServer; name: string): McpHeaderBinding {.
raises: [], tags: [], forbids: [].}

Returns: McpHeaderBinding.

Name Type Default
server McpServer
name string

View source