Skip to content

nimwire/tasks

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

Opt-in MCP tasks extension with scoped, expiring task storage.

mcpTasksExtensionName = "io.modelcontextprotocol/tasks"

View source

McpTaskStatus = enum
mcpTaskWorking, mcpTaskInputRequired, mcpTaskCompleted, mcpTaskFailed,
mcpTaskCancelled

View source

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

View source

McpTaskCreateProc = proc (task: McpTask) {.closure.}

View source

McpTaskGetProc = proc (taskId, subject: string): McpTask {.closure.}

View source

McpTaskUpdateProc = proc (task: McpTask) {.closure.}

View source

McpTask = ref object
taskId*: string
status*: McpTaskStatus
statusMessage*: string
createdAt*: string
lastUpdatedAt*: string
ttlMs*: int
pollIntervalMs*: int
progress*: float
hasProgress*: bool
total*: float
hasTotal*: bool
inputRequests*: JsonNode
result*: McpWireResult
hasResult*: bool
error*: McpRpcError
hasError*: bool
owner*: string
expiresAt*: int64
cancellation*: McpCancellation

View source

Implement create/get/update for durable storage, or use the in-memory backend created by newMcpTaskStore.

McpTaskStore = ref object
create*: McpTaskCreateProc
get*: McpTaskGetProc
update*: McpTaskUpdateProc

View source

proc taskStatusName(status: McpTaskStatus): string {.raises: [], tags: [],
forbids: [].}

Returns: string.

Name Type Default
status McpTaskStatus

View source

proc newMcpTaskStore(ttlMs = 3600000; maxTasks = 10000; pollIntervalMs = 5000): McpTaskStore {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpTaskStore.

Name Type Default
ttlMs inferred 3600000
maxTasks inferred 10000
pollIntervalMs inferred 5000

View source

proc newMcpTaskStoreBackend(create: McpTaskCreateProc; get: McpTaskGetProc;
update: McpTaskUpdateProc; ttlMs = 3600000;
pollIntervalMs = 5000): McpTaskStore {.
raises: [McpError], tags: [], forbids: [].}

Returns: McpTaskStore.

Name Type Default
create McpTaskCreateProc
get McpTaskGetProc
update McpTaskUpdateProc
ttlMs inferred 3600000
pollIntervalMs inferred 5000

View source

proc newMcpTaskResult(task: McpTask): McpWireResult {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpWireResult.

Name Type Default
task McpTask

View source

proc newMcpTaskGetResult(task: McpTask): McpWireResult {.
raises: [McpError, KeyError], tags: [], forbids: [].}

Returns: McpWireResult.

Name Type Default
task McpTask

View source

proc startMcpTask(store: McpTaskStore; handler: McpTaskHandler;
arguments: JsonNode; context: McpContext;
outputSchema: JsonNode = nil): McpTask {.
raises: [McpError, OSError, Exception], tags: [TimeEffect, RootEffect],
forbids: [].}

Returns: McpTask.

Name Type Default
store McpTaskStore
handler McpTaskHandler
arguments JsonNode
context McpContext
outputSchema JsonNode nil

View source

proc getMcpTask(store: McpTaskStore; taskId: string; context: McpContext): McpTask {.
raises: [Exception, McpError], tags: [RootEffect, TimeEffect], forbids: [].}

Returns: McpTask.

Name Type Default
store McpTaskStore
taskId string
context McpContext

View source

proc updateMcpTask(store: McpTaskStore; taskId: string; responses: JsonNode;
context: McpContext) {.
raises: [Exception, McpError, KeyError], tags: [RootEffect, TimeEffect],
forbids: [].}
Name Type Default
store McpTaskStore
taskId string
responses JsonNode
context McpContext

View source

proc cancelMcpTask(store: McpTaskStore; taskId: string; context: McpContext) {.
raises: [Exception, McpError], tags: [RootEffect, TimeEffect], forbids: [].}
Name Type Default
store McpTaskStore
taskId string
context McpContext

View source

proc newMcpTasksExtension(store: McpTaskStore): McpExtension {.
raises: [McpError, Exception], tags: [RootEffect], forbids: [].}

Returns: McpExtension.

Name Type Default
store McpTaskStore

View source