Odel
claude wrap mcp

claude wrap mcp

Local
@alex-kaffTypeScriptMITUpdated 1w ago

MCP server that spawns and drives Claude Code sessions via claude-wrap.

claude-wrap-mcp

npm version license node

An MCP server that lets any MCP-capable agent (Claude Code, Claude Desktop, Cursor, …) spawn and drive Claude Code sessions — effectively turning Claude Code into an orchestratable sub-agent fleet. Built on the claude-wrap library.

Requirements

  • Node ≥ 18
  • The claude CLI on your PATH (the sessions run real Claude Code).
  • claude-wrap pulls the native node-pty addon, so a prebuilt binary or a C/C++ toolchain is needed at install time.
  • Spawning headless sessions works cross-platform; attaching to visible windows is Windows-first.

Install & register

npm install -g claude-wrap-mcp
# then, in Claude Code:
claude mcp add claude-wrap -- claude-wrap-mcp

Or via JSON config (.mcp.json / claude_desktop_config.json):

{
  "mcpServers": {
    "claude-wrap": { "command": "npx", "args": ["-y", "claude-wrap-mcp"] }
  }
}

Once published, it's also discoverable in the MCP Registry as io.github.Alex-Kaff/claude-wrap-mcp.

Tools

ToolWhat it does
claude_spawnStart a headless session in an absolute cwd. Returns a sessionId.
claude_askSend a prompt, wait for idle, return transcript tail + parsed state. Returns status:"busy" on timeout (not an error).
claude_sendSend raw input (text / line / key) without waiting — for long tasks; then poll.
claude_statusParsed state: busy, mode, tokens, pending permission prompt, todos, tool calls.
claude_snapshotThe rendered transcript lines.
claude_listAll sessions — in-process (spawned here) and external (discovered windows).
claude_resolve_permissionapprove / deny a pending permission prompt.
claude_stopShut down an in-process session.

Permission prompts are surfaced, not auto-bypassed: when claude_ask / claude_status report a pending permissionPrompt, resolve it with claude_resolve_permission.

Control models

  • In-process (primary): the server owns a claude-wrap ClaudeManager and drives headless sessions directly — full parsed state and lifecycle.
  • External (Windows-first): sessions launched elsewhere (visible windows) are discovered via the registry and driven over their pipe; parsed operations are delegated to the claude-wrap-inject bin. Best-effort; claude_stop is declined for instances this server did not spawn.

Develop

pnpm install
pnpm --filter claude-wrap-mcp build      # tsup -> dist/ (ESM + .d.ts, shebang on the bin)
pnpm --filter claude-wrap-mcp test       # vitest, in-memory MCP client against fakes
pnpm --filter claude-wrap-mcp inspect    # @modelcontextprotocol/inspector on the built server

License

MIT © Alex Kaffetzakis