Skip to main content
Version 0.1.0 · Purity server-only · Purpose thin MCP protocol adapters over the @clawboo/db service cores, served over stdio bins + in-process Streamable HTTP.
  • Workspace deps: @clawboo/db
  • External deps: @modelcontextprotocol/sdk (pinned 1.30.0), zod
The package is the protocol layer of the MCP quartet (Tasks · Memory · Tools · TeamChat). Each server is a low-level SDK Server built from @clawboo/db data-access cores. The same SQLite file is the cross-process bus, so a stdio bin spawned by an external runtime and the in-process Express server read/write the same board / memory / tools / team_chat store.
Servers use the SDK’s low-level Server + setRequestHandler API, not McpServer.registerTool; the high-level API’s per-tool zod-generic inference OOMs tsc and the tsup dts build once a server has ~12 tools. Every SDK touchpoint lives in shared.ts (buildServer + a self-contained zod→JSON-Schema converter).
The bins ship as four CLI executables: clawboo-mcp-tasks, clawboo-mcp-memory, clawboo-mcp-tools, clawboo-mcp-teamchat.

Public API

Everything below is re-exported from the . barrel (src/index.ts).

Functions

Types & interfaces

Constants

The Server type (@modelcontextprotocol/sdk/server/index.js) is re-exported from shared.ts for internal use but is not part of the . barrel.

The four servers’ tools

createTasksServer (name clawboo-tasks): list_tasks, get_task, create_task, create_subtask, claim_task, assign_task, release_task, update_task_status, block_task, unblock_task, add_comment, link_task. With readOnly: true only the first two are served, which is what a team run attaches: claims and status there are engine-owned, so a model-issued create_task or claim_task would race the engine’s writes or orphan a task no dispatcher runs. createMemoryServer (name clawboo-memory): memory_save, memory_search (mode fts | vector | hybrid), memory_browse. createToolsServer (name clawboo-tools): the broker’s built-in registry, filtered to available descriptors (echo/note/web_search/delete_path, availability-gated). createTeamChatServer (name clawboo-teamchat): team_chat_post, team_chat_subscribe.
claim_task / assign_task return a tool-error on conflict (claim failed: <reason>). A conflict means another agent won the atomic claim; the model must not retry. Two more refusals sit on the same never-retry footing: link_task rejects an edge that would close a dependency cycle, and create_task (with parentTaskId) / create_subtask go through createCappedSubtask, so a parented create is refused with subtask rejected: <reason> once the parent has 24 live children or the task would nest past depth 2 (parent not found: <id> when the parent does not exist).

Used by

Only apps/web depends on @clawboo/mcp (no other package does; a @clawboo/db comment merely references it). Server-side consumers include the MCP REST/transport route (server/api/mcp.ts), the OpenClaw agent-source MCP registration, the boot probe and liveness supervisor (bootProbe.ts, mcpSupervisor.ts), the runtime drivers (claudeCodeDriver, codexDriver, hermesDriver), the native in-process bridge (runtimes/native/mcpBridge.ts), the capability sources (capabilitySource/{claudeCode,codex}.ts), the team-chat dispatcher (teamChat/dispatchChatTurn.ts), and the bin bundler (tsup.mcp-bins.config.ts).

Source

packages/mcp/src/index.ts (barrel). Servers in src/{tasks,memory,tools,teamchat}/server.ts; transports in src/{stdio,http}.ts; clients in src/{probe,inMemoryClient}.ts; attach config in src/config.ts; SDK helpers in src/shared.ts; bins in src/bin/.

See also

Last modified on August 21, 2026