{
  "markdown": "# claude-wrap-mcp\n\n[![npm version](https://img.shields.io/npm/v/claude-wrap-mcp.svg)](https://www.npmjs.com/package/claude-wrap-mcp)\n[![license](https://img.shields.io/npm/l/claude-wrap-mcp.svg)](./LICENSE)\n\nAn [MCP](https://modelcontextprotocol.io) server that lets an agent spawn and\ndrive real Claude Code sessions, so Claude Code can run a fleet of Claude Code\nsub-agents. Built on [`claude-wrap`](https://www.npmjs.com/package/claude-wrap).\n\nNeeds Node ≥ 18 and the `claude` CLI on your `PATH`. Headless sessions work\neverywhere; attaching to visible terminal windows is Windows-first.\n\n## Install\n\n```sh\nnpm install -g claude-wrap-mcp\nclaude mcp add claude-wrap -- claude-wrap-mcp\n```\n\nOr in `.mcp.json` / `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"claude-wrap\": { \"command\": \"npx\", \"args\": [\"-y\", \"claude-wrap-mcp\"] }\n  }\n}\n```\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `claude_spawn` | Start a session in an **absolute** `cwd`. Returns a `sessionId`. |\n| `claude_ask` | Send a prompt, wait for idle, return the transcript tail + parsed state. |\n| `claude_send` | Send raw input (`text` / `line` / `key`) without waiting — for long tasks. |\n| `claude_status` | Busy, mode, tokens, pending permission prompt, todos, last 5 tool **names**. |\n| `claude_tool_calls` | Page through the session's tool calls. Ids + names by default. |\n| `claude_tool_result` | One tool call by id: its args and result. |\n| `claude_snapshot` | The rendered transcript lines. |\n| `claude_list` | Every session — spawned here or discovered. |\n| `claude_resolve_permission` | `approve` / `deny` a pending permission prompt. |\n| `claude_stop` | Shut down a session this server spawned. |\n\nThere is a second family, `claudep_*`, that drives non-interactive `claude -p`\nsessions and returns structured JSON, tool calls, usage and cost.\n\nTwo things worth knowing:\n\n- **Permission prompts are surfaced, not bypassed.** When `claude_ask` or\n  `claude_status` reports a `permissionPrompt`, answer it with\n  `claude_resolve_permission`.\n- **Tool calls are paged, not dumped.** A status poll stays cheap because it\n  carries only names; `claude_tool_calls` lists the rest and\n  `claude_tool_result` fetches one call's output by id.\n\n## Develop\n\n```sh\npnpm install\npnpm --filter claude-wrap-mcp build\npnpm --filter claude-wrap-mcp test\n```\n\n## License\n\n[MIT](./LICENSE) © Alex Kaffetzakis\n",
  "bytes": 2385,
  "sha": "8b3a12fa427b9a764261fe4c67363f80452a0843091d0b78839a13dfb37ed7f5",
  "repo_slug": "alex-kaff/claude-wrap-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_alex_kaff_claude_wrap_mcp_89441c46/readme"
}