@codewright/mcp

A Model Context Protocol server that exposes Codewright's public, read-only API v1 to any MCP-compatible agent host (Claude Desktop, Claude Code, etc). It never talks to the database directly and never executes any command locally.

Configuration

Env varDefaultPurpose
CODEWRIGHT_API_BASE_URLhttps://codewright.tools/api/v1Base URL of the Codewright public API v1.

Running

Run it directly with npx:

npx @codewright/mcp

Or add it to a Claude Desktop / Claude Code MCP configuration:

{

"mcpServers": {

"codewright": {

"command": "npx",

"args": ["-y", "@codewright/mcp"],

"env": {

"CODEWRIGHT_API_BASE_URL": "https://codewright.tools/api/v1"

}

}

}

}

Tools

search_recipes

{ query: string, limit?: number }

Full-text search over the recipe library (GET /api/v1/recipes/search). Returns recipe summaries (id, title, risk, platforms, tags, etc).

get_recipe

{ id: string }

The full recipe document (GET /api/v1/recipes/{id}), including parameters, per-platform steps, verification, and undo.

render_recipe

{ id: string, platform: "macos" | "linux" | "windows", params?: Record<string, string | number | boolean> }

Concrete, parameter-substituted commands for the given platform (POST /api/v1/recipes/{id}/render).

search_workflows

{ query: string, category?: string }

Full-text search over the workflow library (GET /api/v1/workflows/search). Returns workflow summaries.

get_workflow

{ id: string }

The full workflow document (GET /api/v1/workflows/{id}), including the entry node id and the entire nodes map.

Safety

render_recipe (and this package as a whole) never executes any command. It only relays the JSON returned by the Codewright API verbatim — including risk and requires_confirmation — so the calling agent/host is responsible for deciding whether and how to run the returned commands. There is no child_process/exec usage anywhere in this package.