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 {.
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
View source
View source
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: [],
| Name |
Type |
Default |
server |
McpServer |
|
tool |
McpTool |
|
View source
proc addTool(group: var McpToolGroup; tool: McpTool) {.raises: [McpError],
| 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],
| 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],
| 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
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
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
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: [],
Returns: int.
| Name |
Type |
Default |
server |
McpServer |
|
uri |
string |
|
View source
proc addPrompt(server: McpServer; prompt: McpPrompt) {.raises: [McpError],
| Name |
Type |
Default |
server |
McpServer |
|
prompt |
McpPrompt |
|
View source
proc findPrompt(server: McpServer; name: string): int {.raises: [], tags: [],
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: [],
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],
| 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: [],
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],
| 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],
| Name |
Type |
Default |
server |
McpServer |
|
name |
string |
|
View source
proc hasExtension(server: McpServer; name: string): bool {.raises: [], tags: [],
Returns: bool.
| Name |
Type |
Default |
server |
McpServer |
|
name |
string |
|
View source
proc finalizedExtensions(server: McpServer): seq[McpExtension] {.raises: [],
Returns: seq[McpExtension].
| Name |
Type |
Default |
server |
McpServer |
|
View source
proc draftExtensions(server: McpServer): seq[McpExtension] {.raises: [],
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] {.
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