claude-cli-mcp
Allows OpenAI Codex CLI to delegate work to Claude Code as a sub-agent via MCP tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-cli-mcpwrite a Python script to fetch and display the current weather from OpenWeatherMap API"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bridge Anthropic Claude Code CLI to any MCP client
English | 한국어
npm · GitHub · Issues
Overview
An MCP (Model Context Protocol) server that wraps Anthropic Claude Code CLI as tools. Lets MCP clients like Claude Desktop, Cursor, Windsurf, and Claude Code itself invoke headless Claude Code sessions.
Forked from
@nayagamez/codex-cli-mcp. Same architecture (stdio MCP, stream-json parser, idle timeout, progress notifications) — adapted forclaudeCLI semantics.
Related MCP server: claude-code-mcp
Prerequisites
1. Install Claude Code CLI
The recommended method is the native installer (Node.js not required, auto-updates):
# macOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell
irm https://claude.ai/install.ps1 | iex
# Windows CMD
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmdOther options: brew install --cask claude-code · winget install Anthropic.ClaudeCode · apt/dnf/apk via downloads.claude.ai · npm install -g @anthropic-ai/claude-code (advanced).
Windows native install requires Git for Windows. See Claude Code setup docs for details.
2. Authenticate
Run claude and follow the browser prompt to sign in. Requires a Pro, Max, Team, Enterprise, or API plan.
For headless / CI:
export ANTHROPIC_API_KEY="sk-ant-..."See Authentication docs.
3. Node.js (npm) installed
The Setup snippets below invoke this server with npx -y (ships with npm). Verify Node ≥ 18:
node --version
npm --versionIf missing, install Node.js LTS from nodejs.org.
If you'd rather use Bun's bunx (avoids Windows .cmd shim issues), see the installation guide §5.7 for the alternative TOML block.
Tools
claude
Start a new Claude Code session.
Parameter | Type | Required | Description |
| string | Yes | The prompt to send |
| string | No | Model id or alias ( |
| enum | No |
|
| enum | No |
|
| string | No | Working directory |
| string[] | No | Additional read/write directories ( |
| string[] | No | e.g. |
| string[] | No | Tools that may not be used |
| string | No | Text appended to default system prompt |
| string[] | No | MCP server config files or JSON strings |
| number | No | Limit agentic turns (headless safety stop) |
| boolean | No |
|
| number | No | Idle timeout in ms (default: |
The response includes a Session ID that can be passed to claude-reply.
claude-reply
Continue an existing Claude Code session.
Parameter | Type | Required | Description |
| string | Yes | Follow-up prompt |
| string | Yes | Session ID from a previous |
| No | Same as | |
| boolean | No | Create a new session ID instead of reusing the original ( |
No
cwdparameter. Sessions are tied to the directory they were started in (Claude Code issue #5768). Run from the original cwd.
⚠️ Known Issues & Warnings
bypassPermissionsis the default — Matchescodex --full-autoparity. Bypass mode has known instability (issue #39523) where protected directory writes still prompt and the mode can reset mid-session. For sensitive workspaces usepermissionMode: "acceptEdits"or"auto".Resume requires the original cwd — Sessions cannot be moved across directories. Same-cwd execution is the user's responsibility (issue #5768).
Windows native CLI bug — Claude Code on Windows native may exit silently with no output, hang, or report
Query closed before response received(issue #50616). Recommended fallback: WSL.bare: truebreaks OAuth —--bareskips OAuth and keychain reads. Authentication must come fromANTHROPIC_API_KEYorapiKeyHelper. Pro/Max OAuth users must keepbare: false(the default).--bareis the future default for-p— Anthropic has stated--barewill become the default for-pin a future release (headless docs). v0.1 explicitly defaults tobare: falsefor OAuth compatibility; behavior may need to be revisited.
Setup
The primary use case is OpenAI Codex CLI delegating work to Claude Code as a sub-agent. Cursor and Windsurf are also supported. Calling this server from Claude Code itself is not useful (Claude calling Claude).
For Humans
Copy the prompt below and paste it into your LLM agent (Codex, Cursor, Windsurf, etc.) — it will install and configure everything automatically:
Install and configure @nayagamez/claude-cli-mcp by following: https://raw.githubusercontent.com/nayagamez/claude-cli-mcp/main/docs/guide/installation.mdOr set it up manually — see Manual Setup below.
For LLM Agents
curl -s https://raw.githubusercontent.com/nayagamez/claude-cli-mcp/main/docs/guide/installation.mdManual Setup
Examples below use
npx -yas the default runner. If you'd rather use Bun'sbunx, see installation guide §5.7.
Codex CLI
Edit ~/.codex/config.toml (global) or .codex/config.toml (project-scoped, trusted projects only):
[mcp_servers.claude-cli-mcp]
command = "npx"
args = ["-y", "@nayagamez/claude-cli-mcp"]
# Codex defaults (10s / 60s) are too short for npx cold install +
# Claude Code first response. Do not omit these.
startup_timeout_sec = 30
tool_timeout_sec = 600Restart Codex to load the server. See installation guide for project-scope and trusted-project notes.
Cursor / Windsurf
Add to the appropriate MCP config (.cursor/mcp.json, ~/.cursor/mcp.json, .windsurf/mcp.json, etc.):
{
"mcpServers": {
"claude-cli-mcp": {
"command": "npx",
"args": ["-y", "@nayagamez/claude-cli-mcp"]
}
}
}Progress Notifications
The server sends MCP progress notifications in real-time as Claude processes your request:
[5s] Session started (<id>, model: claude-sonnet-4-6)— init received[12s] Tool use: Bash— agent invoked a tool[18s] Message: Refactoring the auth module...— assistant text[24s] Retry 2/3 in 1000ms (rate_limit)—system/api_retryevent[25s] Result: success (24230ms, $0.0142)— final result
Idle-based Timeout
Timeout is idle-based: the timer resets on every event. Long-running tasks with continuous activity never time out; truly stuck processes are killed after the configured idle period.
Default: 10 minutes
Override per-call via
timeout, or globally viaCLAUDE_TIMEOUT_MS
Environment Variables
Variable | Default | Description |
|
| Path to the Claude Code CLI binary |
|
| Idle timeout for child Claude process |
| (unset) | Set to enable debug logging to stderr |
The server automatically scrubs the following env vars from the spawned child to prevent parent Claude Code state from leaking into headless invocations:
CLAUDECODE,CLAUDE_CODE_SIMPLE(officially documented parent-detection signals)CLAUDE_CODE_ENTRYPOINT,CLAUDE_CODE_SSE_PORT,CLAUDE_PROJECT_DIR(observed contributors to parent stop-hook injection)
ANTHROPIC_API_KEY, apiKeyHelper, and Bedrock/Vertex/Foundry credentials are preserved.
How It Works
MCP Client → Tool Call (claude / claude-reply)
→ Spawn `claude -p --output-format stream-json --verbose ...`
→ Pipe a stream-json user envelope into stdin
→ Parse JSONL events from stdout
→ Send progress notifications on each event (idle timer resets)
→ Return aggregated result + session idMCP client sends
claudeorclaude-replytool callServer spawns
claudewith-p,--output-format stream-json,--input-format stream-json,--verbose, plus user-specified flagsPrompt is delivered as a single-line user envelope on stdin (avoids Windows 8191-char
cmd.exelimit)stream-json events are parsed in real time (
system/init,system/api_retry,system/plugin_install,assistant,user,result,rate_limit_event)Progress notifications are sent on every event; idle timer resets
Final result includes session id, messages, tool uses, structured error, usage, and cost
License
MIT
Available Tools
2 toolsclaudeA
Run a Claude Code CLI session. Executes claude -p --output-format stream-json as a subprocess and returns the result.
Use this tool to start a new coding task with Claude Code. The response includes a Session ID that can be used with the claude-reply tool to continue the conversation.
WARNING: defaults to permission mode bypassPermissions (parity with codex --full-auto). Use a safer mode (e.g. acceptEdits or auto) for sensitive workspaces.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The prompt to send to Claude | |
| model | No | Model id or alias (e.g. "sonnet", "opus", "claude-sonnet-4-6"). Do NOT set this unless the user explicitly requests a specific model. | |
| effort | No | Reasoning effort. Auto-select based on task complexity: low/medium for simple tasks, high for moderate, xhigh/max for complex multi-file work. Do NOT set if the user has not asked for a specific level. | |
| permissionMode | No | Permission mode. Defaults to "bypassPermissions" (parity with codex --full-auto). Use "acceptEdits" or "auto" for safer behavior. | |
| cwd | No | Working directory for the Claude session | |
| addDirs | No | Additional directories Claude can read/edit (--add-dir). | |
| allowedTools | No | Tools Claude may use without permission prompt (e.g. ["Bash(git *)", "Edit"]). See Claude permission rule syntax. | |
| disallowedTools | No | Tools Claude must not use. | |
| appendSystemPrompt | No | Text appended to the default system prompt. | |
| mcpConfig | No | MCP server config files or JSON strings (--mcp-config, repeatable). | |
| maxTurns | No | Limit the number of agentic turns (--max-turns). Headless safety stop. | |
| bare | No | Run with --bare (skip hooks/skills/plugins/MCP/CLAUDE.md). NOTE: requires ANTHROPIC_API_KEY or apiKeyHelper — Pro/Max OAuth users will fail to authenticate. | |
| timeout | No | Idle timeout in milliseconds (default: 600000 = 10 min). Resets on every event. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses execution as subprocess, output format, session ID generation, and default permission mode with safety warning. However, lacks details on idempotency, error handling, or side effects beyond the permission mode note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: three short paragraphs front-loading the main purpose, continuation usage, and a critical warning. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 13 parameters and no output schema, but description only covers high-level behavior and permission mode. Missing details on return value structure, error behavior, and parameter interactions. Could be more complete given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds no extra meaning beyond what schema already provides, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a Claude Code CLI session and starts a new coding task. It distinguishes from the sibling tool claude-reply by noting that session ID can be used to continue the conversation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool to start a new coding task and points to claude-reply for continuation. Also includes a warning about permission mode defaults, guiding safer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claude-replyA
Continue a Claude Code CLI conversation by providing the session ID from a previous claude call and a follow-up prompt.
Uses claude --resume <session-id> to load the previous session and continue.
NOTE: Sessions are tied to the directory they were started in (Claude Code issue #5768). The MCP server cannot change the resumed session's working directory — make sure the host process runs from the original cwd, otherwise the session may not be found.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The follow-up prompt to send to Claude | |
| sessionId | Yes | The session ID from a previous claude tool call | |
| model | No | Model id or alias. Do NOT set unless the user explicitly requests one. | |
| effort | No | Reasoning effort. Auto-select based on task complexity. | |
| permissionMode | No | Permission mode. Whether resume honors mid-session changes is experimental — see plan §6.5. | |
| allowedTools | No | Tools Claude may use without permission prompt (e.g. ["Bash(git *)", "Edit"]). | |
| disallowedTools | No | Tools Claude must not use. | |
| appendSystemPrompt | No | Text appended to the default system prompt. | |
| mcpConfig | No | MCP server config files or JSON strings (--mcp-config, repeatable). | |
| maxTurns | No | Limit the number of agentic turns (--max-turns). | |
| forkSession | No | Create a new session ID instead of reusing the original (--fork-session). | |
| bare | No | Run with --bare. Requires ANTHROPIC_API_KEY or apiKeyHelper. | |
| timeout | No | Idle timeout in milliseconds (default: 600000 = 10 min). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the underlying mechanism (claude --resume) and a known issue (directory dependency). However, lacks details on error handling, return behavior, or consequences of invalid session IDs. Relies on schema for parameter descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs with no redundant information. First sentence clearly states the tool's purpose, followed by mechanism and a necessary caveat. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters and no output schema, the description provides essential context on usage and a critical limitation. Could include more on return values or error states, but the caveat about directory binding is valuable for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes all 13 parameters with 100% coverage, so baseline is 3. The description adds context about session ID directory binding but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it continues a Claude Code CLI conversation using a session ID and follow-up prompt. Distinguishes itself from the sibling 'claude' tool by specifying resumption rather than initiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (follow-up conversations) and includes a critical caveat about directory binding. Could explicitly exclude use for new conversations, but the distinction from 'claude' is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.7- First observed
claude - First observed
claude-reply
TDQS
The two tools have clearly distinct purposes: 'claude' starts a new Claude Code CLI session, while 'claude-reply' continues an existing session using a session ID. There is no overlap or ambiguity.
Both tool names use a consistent lowercase-with-hyphen pattern ('claude' and 'claude-reply'), where the first is a base command and the second adds a modifier. The naming is predictable and clear.
With only two tools, the set is minimal but sufficient for starting and continuing Claude Code sessions. The count is slightly low but reasonable given the focused scope of the server.
The server covers the essential actions (starting and continuing sessions) but lacks tools for explicitly ending sessions, listing active sessions, or changing session parameters. The absence of session management creates a notable gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Claude Code / MCP skills for the dev pipeline: discover, spec, design, build, ship, operate.
Related MCP Servers
- AlicenseAqualityBmaintenanceLocal MCP server that wraps the headless Claude Code CLI as MCP tools, providing stateless access to Claude's coding capabilities through prompt-based interactions. It enables users to execute Claude Code commands with various prompt formats and structured outputs directly from MCP clients.3MIT
- AlicenseAqualityDmaintenanceWraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.45720MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that wraps AI CLI tools — Claude Code, Antigravity CLI, and Codex CLI — so any MCP client can call them as tools.4539MIT
- FlicenseNot gradedqualityCmaintenanceExposes Claude Code's file editing, command execution, and test running capabilities as composable MCP tools for any MCP-compatible host, enabling code operations via a stateless bridge.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nayagamez/claude-cli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server