Skip to main content
ClaudeWave

MCP server that wraps qodercli (Qoder CLI) — delegate coding tasks to local Qoder agents from any MCP client (Qoder IDE, Claude Code, Cursor...)

MCP ServersRegistry oficial0 estrellas0 forksJavaScriptMITActualizado today
ClaudeWave Trust Score
95/100
Verified
Passed
  • Open-source license (MIT)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Last scanned: 8/21/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/cantbeblank96/qodercli-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "qodercli-mcp": {
      "command": "node",
      "args": ["/path/to/qodercli-mcp/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/cantbeblank96/qodercli-mcp and follow its README for install instructions.
Casos de uso

Resumen de MCP Servers

# qodercli-mcp

**English** | [简体中文](./README.zh-CN.md)

[![npm version](https://img.shields.io/npm/v/qodercli-mcp)](https://www.npmjs.com/package/qodercli-mcp)
[![npm weekly downloads](https://img.shields.io/npm/dw/qodercli-mcp?label=downloads%2Fweek)](https://www.npmjs.com/package/qodercli-mcp)
[![npm total downloads](https://img.shields.io/npm/dt/qodercli-mcp?label=total%20downloads)](https://www.npmjs.com/package/qodercli-mcp)
[![License: MIT](https://img.shields.io/github/license/cantbeblank96/qodercli-mcp)](./LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/cantbeblank96/qodercli-mcp?style=social)](https://github.com/cantbeblank96/qodercli-mcp)

> **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.

![demo](docs/demo.gif)

*30s demo: MCP client ⇄ qodercli-mcp ⇄ qodercli — initialize → tools/list → list-models (real output, not sped up)*

## Quick start

Zero-config via npx — add this to your MCP client config (`~/.qoder/mcp.json`, `claude_desktop_config.json`, …):

```json
{ "mcpServers": { "qodercli-mcp": { "command": "npx", "args": ["-y", "qodercli-mcp"] } } }
```

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](#install).

## Why

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.

## Features

- `ask-qoder` tool — delegate a prompt to qodercli
- Structured output (`session_id`, `is_error`, `duration_ms`, `total_credits`, `num_turns`) via `-o json` parsing
- `list-sessions` tool to discover resumable sessions
- `list-models` tool for runtime model discovery (no stale model lists)
- `reasoning_effort` parameter (`--reasoning-effort`)
- Server `instructions` in the MCP initialize result guide clients on usage
- Codex-style `sandbox` levels (`read-only` / `workspace-write` / `danger-full-access`)
- System prompt injection (`system_prompt` / `append_system_prompt`)
- Working directory, model, permission mode, output format control
- Session resume (`resume_session_id`) for multi-turn delegation
- Timeout protection with SIGKILL fallback
- Proxy quota support (`HTTP_PROXY` / `HTTPS_PROXY` injection)
- Zero build step — plain ESM JavaScript, Node.js >= 18

## Prerequisites

1. Node.js >= 18
2. `qodercli` installed and signed in (`qodercli login`)

## Install

**Option A — npx (recommended)**: no clone needed, the MCP client downloads the package on first use.

```json
"command": "npx", "args": ["-y", "qodercli-mcp"]
```

**Option B — from source (for development)**:

```bash
git clone https://github.com/cantbeblank96/qodercli-mcp.git
cd qodercli-mcp
npm install
```

## MCP client configuration

### Qoder IDE

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_PROXY` and/or `HTTPS_PROXY` to the server's environment. When these are set at the MCP server level, they will be passed to all qodercli subprocesses.

```json
{
  "mcpServers": {
    "qodercli-mcp": {
      "command": "npx",
      "args": ["-y", "qodercli-mcp"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    },
    "qodercli-mcp-with-proxy": {
      "command": "npx",
      "args": ["-y", "qodercli-mcp"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli",
        "HTTP_PROXY": "http://127.0.0.1:39900",
        "HTTPS_PROXY": "http://127.0.0.1:39900",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}
```

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).

### Claude Code / Claude Desktop

```json
{
  "mcpServers": {
    "qodercli-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/qodercli-mcp/src/index.js"],
      "env": {
        "QODERCLI_PATH": "/absolute/path/to/qodercli"
      }
    }
  }
}
```

## Tool: `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 |

### Structured output

`ask-qoder` declares an MCP `outputSchema` and returns, in addition to the
human-readable text, a `structuredContent` object:

```json
{
  "session_id": "77826b5c-...",   // pass back as resume_session_id
  "content": "OK",
  "is_error": false,
  "exit_code": 0,
  "duration_ms": 1280,
  "total_credits": 0.53,
  "num_turns": 1,
  "timed_out": false,
  "truncated": false
}
```

### Sandbox mapping

| 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`.

### Permission modes (verified semantics)

| 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 |

## Tool: `list-sessions`

Lists local qodercli sessions (index, summary, session id) so a client can
pick a `resume_session_id`. Takes no arguments.

## Tool: `list-models`

Lists 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.

### Usage Examples

#### Example 1: Simple code explanation
```javascript
{ "name": "ask-qoder", "arguments": { 
  "prompt": "Explain what main.py does",
  "cwd": "/path/to/project",
  "timeout_ms": 180000 
}}
```

#### Example 2: Ask a second opinion
```javascript
{ "name": "ask-qoder", "arguments": { 
  "prompt": "@src/service.py Review this file for security issues and suggest improvements",
  "model": "qwen-plus",
  "permission_mode": "dont_ask",
  "timeout_ms": 300000 
}}
```

#### Example 3: Multi-turn conversation via resume
```javascript
// First call — session_id comes back in structuredContent
{ "name": "ask-qoder", "arguments": {
  "prompt": "Help me refactor this module to improve readability",
  "cwd": "/projects/backend",
  "timeout_ms": 300000 
}}
// Then reuse structuredContent.session_id:
{ "name": "ask-qoder", "arguments": {
  "prompt": "Now add error handling for database timeouts",
  "resume_session_id": "77826b5c-cd6b-4213-b423-d95b4e1deab0"
}}
// Or discover ids with list-sessions
{ "name": "list-sessions", "arguments": {} }
```

#### Example 4: Code review with specific focus
```javascript
{ "name": "ask-qoder", "arguments": {
  "prompt": "Analyze performance bottlenecks in utils.py",
  "model": "qwen-max",
  "permission_mode": "default",
  "output_format": "text",
  "timeout_ms": 240000 
}}
```

#### Example 5: Read-only analysis
```javascript
{ "name": "ask-qoder", "arguments": {
  "prompt": "Audit this codebase for security issues; do not modify anything",
  "cwd": "/workspaces/repo",
  "sandbox": "read-only",
  "timeout_ms": 300000 
}}
```
`read-only` disables write/shell tools — good for audits and reviews.

#### Example 6: Project-wide analysis
```javascript
{ "name": "ask-qoder", "arguments": {
  "p
ai-agentcli-agentllm-agentmcpmodel-context-protocolnodejsqoderstdio

Lo que la gente pregunta sobre qodercli-mcp

¿Qué es cantbeblank96/qodercli-mcp?

+

cantbeblank96/qodercli-mcp es mcp servers para el ecosistema de Claude AI. MCP server that wraps qodercli (Qoder CLI) — delegate coding tasks to local Qoder agents from any MCP client (Qoder IDE, Claude Code, Cursor...) Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-08-20.

¿Cómo se instala qodercli-mcp?

+

Puedes instalar qodercli-mcp clonando el repositorio (https://github.com/cantbeblank96/qodercli-mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar cantbeblank96/qodercli-mcp?

+

Nuestro agente de seguridad ha analizado cantbeblank96/qodercli-mcp y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene cantbeblank96/qodercli-mcp?

+

cantbeblank96/qodercli-mcp es mantenido por cantbeblank96. La última actividad registrada en GitHub es del 2026-08-20, con 0 issues abiertos.

¿Hay alternativas a qodercli-mcp?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega qodercli-mcp en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: cantbeblank96/qodercli-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/cantbeblank96-qodercli-mcp)](https://claudewave.com/repo/cantbeblank96-qodercli-mcp)
<a href="https://claudewave.com/repo/cantbeblank96-qodercli-mcp"><img src="https://claudewave.com/api/badge/cantbeblank96-qodercli-mcp" alt="Featured on ClaudeWave: cantbeblank96/qodercli-mcp" width="320" height="64" /></a>

Más MCP Servers

Alternativas a qodercli-mcp