Docs Packages
@procedures/mcp-dev-tools
mcp-dev-tools is the MCP server that gives procedures to Claude as tools. Its folder in the monorepo is packages/impl-mcp-dev. Claude Code (or Claude Desktop) starts it over stdio. By default it loads bundle-mcp, which selects 62 tools.
Set up Claude Code#
Add the server to the MCP configuration of Claude Code. npx gets the package from npm:
{
"mcpServers": {
"dev-tools": { "command": "npx", "args": ["-y", "@procedures/mcp-dev-tools"] }
}
}
From a clone of the monorepo, build it first (pnpm install, then pnpm build). Then give the path of the server file:
{
"mcpServers": {
"dev-tools": {
"command": "node",
"args": ["/path/to/client/packages/impl-mcp-dev/dist/server.js"]
}
}
}
The package has the bin mcp-dev-tools, which starts the same file.
Claude Code starts the server once for each session. After a rebuild, restart the MCP server (or the session) to get the changes.
Configuration#
| Environment variable | Default | Function |
|---|---|---|
MCP_BUNDLES | @procedures/bundle-mcp | The bundles to load, separated by commas. The server imports <bundle>/register.js for each one. |
MCP_SERVER_NAME | impl-mcp-dev | The server name in the MCP handshake |
MCP_SERVER_VERSION | 1.0.0 | The server version in the MCP handshake |
MCP_DEBUG | false | With true, the server writes debug lines to stderr |
How it selects the tools#
- The server loads each bundle. A bundle can export
mcpNamespacesandmcpExclude. - A procedure is a tool when its namespace is in
mcpNamespacesof a bundle, and its key is not inmcpExclude. - A
ProcedureServerserves the registry with that rule as itsexposerule. A data-driven procedure (client.chain,client.eval, a procedure ofprocedure.define) can use only exposed procedures. McpServerTransportgives the exposed procedures as tools over stdio. It tells Claude when the list of tools changes.
[!WARNING] A bundle without
mcpNamespacesexposes every registered procedure,shell.exectoo.bundle-devhas nomcpNamespaces. ThusMCP_BUNDLES=@procedures/bundle-devgives Claude shell access through this server.
The server sends console.log output to stderr, because stdout carries the MCP protocol.
The tool list#
tools.snapshot.txt has the names of the 62 tools. src/tools.test.ts starts the real server over stdio and compares its tools with the file. It also examines that a docker.* tool cannot start a shell command. To change the tools, change bundle-mcp and tools.snapshot.txt in one commit. The bundle-mcp README lists the tools and the reasons for the procedures that stay out.
Troubleshooting#
- No tools in Claude. Build the monorepo, and examine the path in the configuration. Start the server with
MCP_DEBUG=trueand read stderr. - Old tools or old behavior. Restart the MCP server after a rebuild.
- A bundle fails to load. The server stops with the message
Failed to load bundle. Build the bundle, and examine the name inMCP_BUNDLES.