@procedures/bundle-mcp
v0.1.0
Published
The curated tool surface for Claude: registers the docker, mongo, sqlite, cue, vitest and workspace procedures and selects which ones an MCP server exposes.
Maintainers
Readme
@procedures/bundle-mcp
npm install @procedures/bundle-mcpbundle-mcp sets the tools that Claude gets from the MCP server (impl-mcp-dev). It imports the procedure packages, and it exports two lists that select the tools.
The tools
src/register.ts exports these lists:
mcpNamespaces: the namespaces whose procedures are tools. At this time:client,cue,db,docker,lib,logs,mongo,procedureandvitest.mcpExclude: procedures of those namespaces that are not tools.vitest.watch,vitest.stopandvitest.listmanage processes that live longer than a tool call.procedure.store,procedure.load,procedure.sync,procedure.remoteandprocedure.registerneed a procedure store, and the MCP server has none.
The result is 62 tools (October 2026):
| Namespace | Tools |
|---|---|
| client | 15: the control-flow procedures (chain, parallel, conditional, tryCatch, map, reduce, and, or) and all, any, none, not, identity, constant, throw |
| cue | 5: add, generate, init, remove, validate |
| db | 2: execute, query |
| docker | 10: build, compose.down, compose.up, exec, logs, ps, pull, rm, run, stop |
| lib | 4: audit, new, rename, scan |
| logs | 2: query, store |
| mongo | 16: the collections, database, documents and indexes procedures |
| procedure | 6: define, delete, export, get, list, new |
| vitest | 2: coverage, run |
packages/impl-mcp-dev/tools.snapshot.txt has the exact list. A test of impl-mcp-dev starts the real server and compares its tools with the list. The site shows the list too: https://mark1russell7.github.io/client/claude/.
What stays out
shell.*is registered, becausedocker.*and other wrappers start programs throughshell.run. It is not a tool.cli.runstarts anymarkcommand,shell exectoo. Thuscliis not in the list.fs.*,git.*andpnpm.*are not tools: Claude Code has its own tools for files, git and the shell.snapshot.*ands3.*are not in the bundle:snapshot.restoreands3.deletechange data.
A data-driven procedure (client.chain, client.eval, a procedure of procedure.define) can use only the exposed procedures. Thus client.chain cannot reach shell.exec. A procedure of code still uses its dependencies: docker.run uses shell.run.
The packages of the bundle
register.ts imports client-lib, client-procedure, client-cue, client-docker, client-mongo, client-sqlite and client-vitest. Their dependencies register shell.*, fs.* and the dag.traverse, core.catch and ecosystem.procedures procedures of client-lib. These procedures are registered but are not tools.
Use
The MCP server imports @procedures/bundle-mcp/register.js. That import registers the procedures and gives the two lists. The root import @procedures/bundle-mcp registers nothing.
import { mcpNamespaces, mcpExclude } from "@procedures/bundle-mcp/register.js";
const exposed = (path: string[]): boolean =>
mcpNamespaces.includes(path[0] ?? "") && !mcpExclude.includes(path.join("."));To change the tools, change the lists and tools.snapshot.txt in one commit. The test fails when the two do not agree.
Related packages
impl-mcp-dev: the MCP server that uses this bundle.client-mcp: the MCP transport of the procedure server.bundle-dev: the bundle for development work.
