The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Qodercli MCP listing page.
English | 简体中文
The missing MCP server mode for Qoder CLI — delegate coding tasks to local Qoder agents from any MCP client (Qoder IDE, Claude Code, Cursor…).
A minimal MCP server that wraps the local qodercli (Qoder CLI) as MCP tools, letting any MCP client (Qoder IDE, Claude Code, Cursor, …) call Qoder like a sub-agent.

30s demo: MCP client ⇄ qodercli-mcp ⇄ qodercli — initialize → tools/list → list-models (real output, not sped up)
Zero-config via npx — add this to your MCP client config (~/.qoder/mcp.json, claude_desktop_config.json, …):
Three tools are exposed:
| Tool | Purpose |
|---|---|
ask-qoder | Delegate a task to qodercli |
list-sessions | Discover resumable sessions |
list-models | Runtime model discovery |
Highlights: verified permission semantics (see below — e.g. dont_ask is read-only),
codex-style sandbox/approval_policy, structured output (session_id/duration_ms/total_credits).
Full configuration options are in Install.
Some CLI agents ship an official MCP server mode (e.g. codex mcp-server), but qodercli currently only acts as an MCP client. This project fills that gap with a thin wrapper: it spawns qodercli -p <prompt> under the hood and streams the result back over MCP stdio.
ask-qoder tool — delegate a prompt to qoderclisession_id, is_error, duration_ms, total_credits, num_turns) via -o json parsinglist-sessions tool to discover resumable sessionslist-models tool for runtime model discovery (no stale model lists)reasoning_effort parameter (--reasoning-effort)instructions in the MCP initialize result guide clients on usagesandbox levels (read-only / workspace-write / danger-full-access)system_prompt / append_system_prompt)resume_session_id) for multi-turn delegationHTTP_PROXY / HTTPS_PROXY injection)qodercli installed and signed in (qodercli login)Option A — npx (recommended): no clone needed, the MCP client downloads the package on first use.
Option B — from source (for development):
Add to ~/.qoder/mcp.json. Prefer the absolute path of node and set QODERCLI_PATH explicitly (nvm-managed binaries are often missing from the PATH seen by MCP child processes):
Proxy Support: To use your Qoder CLI proxy quota, add
HTTP_PROXYand/orHTTPS_PROXYto the server's environment. When these are set at the MCP server level, they will be passed to all qodercli subprocesses.
Developers running a local checkout instead of the published package (Option B) should replace command/args with the absolute node path and /path/to/qodercli-mcp/src/index.js (nvm-managed node is often missing from the PATH seen by MCP child processes).
ask-qoder| Parameter | Type | Description |
|---|---|---|
prompt | string (required) | The task or question for qodercli |
cwd | string | Working directory |
model | string | Model for this session; call list-models to discover available names |
reasoning_effort | string | Reasoning effort level (--reasoning-effort), e.g. low/medium/high; depends on the model |
permission_mode | enum | dont_ask (default, read-only) | accept_edits (auto-approve file edits) | bypass_permissions (full access incl. shell) | auto | default; mutually exclusive with approval_policy, prefer sandbox |
approval_policy | enum | codex-style: untrusted→read-only | on-request→auto | never→full access |
sandbox | enum | read-only | workspace-write | danger-full-access (codex-style; controls the effective permission mode) |
system_prompt | string | Replace the default system prompt |
append_system_prompt | string | Append instructions to the default system prompt |
resume_session_id | string | Resume a previous session |
output_format | string | Passed to -o (default json). Note: non-json formats degrade structured output (session_id etc. become unavailable) |
extra_args | string[] | Raw CLI args appended before the prompt; reserved flags (permission mode, system prompt, model, -o, -r, -w...) are rejected |
timeout_ms | number | Timeout in ms, default 600000 |
ask-qoder declares an MCP outputSchema and returns, in addition to the
human-readable text, a structuredContent object:
| sandbox | Effective permission mode | Effect on qodercli |
|---|---|---|
| (omitted) | dont_ask | Read-only: permission-requiring tools are silently denied |
read-only | dont_ask | Plus --disallowed-tools write_file,replace,run_shell_command as defense in depth |
workspace-write | accept_edits | Agent can create/modify files in cwd |
danger-full-access | bypass_permissions | Full access including shell |
Explicit permission_mode or approval_policy always wins over sandbox.
| Mode | Behavior |
|---|---|
dont_ask | Read-only: silently denies every tool call that requires permission. Headless-safe default |
accept_edits | Auto-approves file edits; shell still governed by policy |
bypass_permissions | Auto-approves everything including shell |
auto | qodercli's own automatic policy |
default | Interactive confirmation — not headless-friendly, avoid in MCP calls |
list-sessionsLists local qodercli sessions (index, summary, session id) so a client can
pick a resume_session_id. Takes no arguments.
list-modelsLists models currently supported by qodercli (via --list-models), so a
client can pick a valid model value at runtime instead of relying on
stale knowledge. Returns both a text list and a structured models array.
Takes no arguments.
read-only disables write/shell tools — good for audits and reviews.
cwd when operating on a specific projecttimeout_ms shorter than 60minresume_session_id instead of repeating contextlist-models first to discover currently supported models; larger models are better for deep analysisdont_ask); set QODERCLI_DEFAULT_PERMISSION_MODE=bypass_permissions to make full (YOLO) access the default for personal deployments. Per-call: tasks that must create/modify files need sandbox: "workspace-write"; shell access needs danger-full-access. Do not combine sandbox with an explicit permission_mode (the latter wins)| Variable | Default | Description |
|---|---|---|
QODERCLI_PATH | qodercli | Path to the qodercli binary |
QODERCLI_TIMEOUT_MS | 600000 | Default timeout |
QODERCLI_MAX_OUTPUT_MB | 50 | Per-call stdout/stderr cap in MB (OOM protection) |
QODERCLI_DEFAULT_PERMISSION_MODE | dont_ask | Default permission mode when the caller omits permission_mode/approval_policy/sandbox; set bypass_permissions for full (YOLO) access |
HTTP_PROXY | - | HTTP proxy URL for qodercli |
HTTPS_PROXY | - | HTTPS proxy URL for qodercli |
This is an unofficial, third-party tool. It is not affiliated with, endorsed, or sponsored by Qoder. Use permission_mode: bypass_permissions with care — delegated prompts may modify files in the target working directory.
Main gallery image (1270×760, dark tech theme): ph-gallery.png. Optional demo video can be converted from the GIF (docs/demo.gif).
MIT