Install — Claude Code, Cursor, or Windsurf
Install — Claude Code, Cursor, or Windsurf
Section titled “Install — Claude Code, Cursor, or Windsurf”Worthless ships an MCP server exposing lock, scan, status, and spend
tools to AI coding agents. The recommended install path needs only Node 18+;
Python and uv are bootstrapped automatically on first run.
Recommended — npm wrapper via .mcp.json
Section titled “Recommended — npm wrapper via .mcp.json”Add this to your editor’s MCP config. Manually verified on Claude Code
(.mcp.json) and Cursor (~/.cursor/mcp.json — appears as worthless
with all 4 tools enabled under Settings → MCP; macOS, 2026-07-09). Windsurf
reads its own config path and is unverified:
{ "mcpServers": { "worthless": { "command": "npx", "args": ["-y", "worthless-mcp"] } }}Restart your editor. On first launch, worthless-mcp:
- Finds or installs
uv(one-time). - Runs
uvx worthless[mcp]==<pinned-version> mcp—uvxcaches the Python environment, so subsequent starts reuse it instead of re-downloading. - Streams MCP protocol over stdio to the editor.
The first run takes longer while uv and the Python environment download;
later starts reuse the cached environment and skip that download. No Python
toolchain awareness required.
Available tools
Section titled “Available tools”worthless_status()— running proxy state, protected keysworthless_lock(env_path)— split the real key, rewrite.envwith a shardworthless_scan(paths, deep)— find accidental key exposuresworthless_spend(alias)— per-provider spend readout
worthless_lockinterrupt safety. Over MCP the lock runs in a worker thread, where OS interrupts (SIGINT/SIGTERM) aren’t delivered — so the CLI’s mid-lock rollback-on-Ctrl-C does not apply here. Crash-safety still holds via atomic writes (an interrupted lock can’t leave a half-written key). The tool’s JSON includesstate_consistent; if it’sfalse, runworthless doctorto reconcile before trusting the result.
Alternative — manual CLI install
Section titled “Alternative — manual CLI install”If you already use pipx or want the full CLI (worthless wrap,
worthless up, proxy mode), install the Python package directly:
pipx install worthless# or: curl -sSL https://worthless.sh | shworthless lock # protect your .env keysworthless wrap claude # starts proxy + launches Claude CodeThen point your editor at the HTTP proxy:
worthless up -d # background proxy on :8787export OPENAI_BASE_URL=http://localhost:8787export ANTHROPIC_BASE_URL=http://localhost:8787Cursor
Section titled “Cursor”The section below is a different integration — pointing Cursor’s built-in
AI at the proxy via OPENAI_BASE_URL — which we have not verified:
Start the proxy, then configure Cursor’s environment:
worthless up -dIn Cursor settings, add:
OPENAI_BASE_URL=http://localhost:8787Windsurf
Section titled “Windsurf”Start the proxy, then configure Windsurf’s environment:
worthless up -dIn Windsurf settings, add:
OPENAI_BASE_URL=http://localhost:8787Run the proxy in Docker (alternative)
Section titled “Run the proxy in Docker (alternative)”You don’t have to run the proxy locally. The same proxy ships as a signed
container — see Docker install. Start it, then point your
editor’s BASE_URL at the mapped port (localhost:8787) exactly as above.
How it works
Section titled “How it works”worthless locksplits your API key and replaces.envwith shard-A (format-preserving, looks like a real key)worthless up(orwrap) starts a local HTTP proxy on port 8787- Your editor’s SDK calls hit
localhost:8787instead of the provider directly - The proxy reconstructs the real key in memory, makes the upstream call, and zeros the key
Your editor works identically. Your key is never stored in plaintext.