Skip to main content
Glama
minmax

qwen-cli-mcp

qwen-cli-mcp

MCP-Server, der Coding-Aufgaben an die lokal installierte Qwen Code CLI delegiert.

Er kapselt die echte qwen-Binärdatei, statt eine eigene Kopie des Agenten mitzuliefern, sodass jeder Aufruf Ihre qwen-Authentifizierung, Ihre Modelle, MCP-Server und Einstellungen erbt. Nichts von Ihrem Modell-Stack wird hier dupliziert, und der Server driftet nicht, wenn Sie qwen aktualisieren.

Geschwisterprojekt von pi-cli-mcp — gleiche Architektur, gleiche Prinzipien, qwen am Steuer. Das maßgebliche Designdokument ist SPEC.md.

Verwenden Sie ihn, wenn Ihr primärer Agent (Claude Code, Cursor, pi selbst, ein beliebiger MCP-Client) Arbeit an qwen übergeben soll: eine zweite Meinung aus einer anderen Modellfamilie, eine Untersuchung, die Sie aus dem Hauptkontextfenster heraushalten möchten, oder parallele Arbeit.

Installation

npx -y qwen-cli-mcp         # no install
npm install -g qwen-cli-mcp # or global

Erfordert Node.js ≥ 22 und ein funktionierendes qwen im PATH (npm i -g @qwen-code/qwen-code).

Claude Code

claude mcp add-json qwen -s user '{
  "type": "stdio",
  "command": "npx",
  "args": ["-y", "qwen-cli-mcp"],
  "timeout": 3600000
}'
claude mcp list | grep '^qwen:'    # expect: ✔ Connected

Der großzügige timeout ist wichtig: Eine echte delegierte Aufgabe kann mehrere Minuten laufen.

Jeder andere MCP-Client

{
  "mcpServers": {
    "qwen": { "command": "npx", "args": ["-y", "qwen-cli-mcp"] }
  }
}

Halten Sie den Servernamen kurz (qwen): Er wird Teil der Tool-Namen, die Ihr Modell sieht.

⚠️ Standard-Genehmigungsmodus ist yolo. Delegation ist nur nützlich, wenn der Beauftragte handeln kann. Deshalb startet dieser Server qwen standardmäßig mit voller Tool-Genehmigung — innerhalb von cwd, unter Ihrem Benutzerkonto. Sie können das mit QWEN_MCP_APPROVAL_MODE, dem approval_mode pro Aufruf oder allowed_tools eingrenzen. Für reine Analysearbeit übergeben Sie Allowlists im Stil von allowed_tools: "read,grep,ls".

Tools

Tool

Zweck

qwen

Startet eine Sitzung. Liefert [session: <uuid>], das Ergebnis und Statistiken zurück.

qwen_reply

Setzt eine abgeschlossene oder unterbrochene Sitzung fort — auch eine, die durch ein Timeout beendet wurde.

qwen_models

Listet Modelle auf, die qwen gerade tatsächlich erreichen kann (Live-Probe über die Control Plane).

qwen_send

Liefert in eine gerade laufende Runde hinein (abort / steer / follow_up; nur Stream-Transport).

qwen_running

Listet gerade laufende Runden auf, die qwen_send erreichen kann.

qwen_sessions

Listet bekannte Sitzungen auf, die neueste zuerst, mit ihrem Arbeitsverzeichnis.

qwen

Argument

Hinweise

prompt

Erforderlich. Muss in sich abgeschlossen sein — qwen kann Ihre Konversation nicht sehen.

cwd

Absoluter Pfad; standardmäßig das cwd dieses Servers.

model

-m-Wert. Standardmäßig qwens eigene Einstellungen; qwen_models listet gültige Werte.

approval_mode

plan | default | auto-edit | auto | yolo. Server-Standard: siehe die Warnung oben.

allowed_tools

Mit Kommas getrennte Tool-Allowlist, die als --allowed-tools übergeben wird.

effort

lowmax Reasoning-Aufwand. Nur Stream-Transport — qwen hat dafür kein CLI-Flag.

system_prompt_append

Wird für diesen Lauf an den System-Prompt von qwen angehängt.

transport

stream (Standard) oder print. Normalerweise weglassen.

timeout_ms

Maximale Laufzeit für diesen Lauf. Ein Lauf, der an der Deadline beendet wurde, bleibt über qwen_reply fortsetzbar.

Was zurückkommt

Nur qwens Endergebnis plus aggregierte Statistiken — niemals das Transkript, Tool-Argumente oder die rohe stdout-Ausgabe:

[session: 0927adc5-a840-4b68-93ca-5ca344c9fafb]

Refactored retry() in src/http.rs; all 12 tests pass.

---
qwen: qwen3-coder-plus · 6 turns · 5 tool calls: bash×2, read×2, edit · 18k in / 310 out · 41s

Die Antwort ist der result-Envelope, den qwen am Ende einer Runde aussendet — ohne Ratespiel bei der Antwortauswahl. Ein Fehler-Envelope (error_max_turns, error_during_execution) lässt den Aufruf fehlschlagen, behält aber alles, was qwen sagen konnte, sodass die Arbeit fortsetzbar bleibt. Ein Stream, der ohne einen Result-Envelope endet, wird als defekt gemeldet und nie stillschweigend durch die rohe Ausgabe ersetzt.

Sitzungen

qwen gibt eine Sitzungs-ID zurück; qwen_reply setzt sie mit --resume fort. Die Konversation lebt in qwens eigenem Sitzungsspeicher, sodass Fortsetzungen über Neustarts dieses Servers hinweg funktionieren — die Zuordnung Sitzung → Verzeichnis wird in ~/.local/state/qwen-mcp/sessions.json dauerhaft gespeichert.

Gleichzeitige Antworten auf eine Sitzung werden pro Serverprozess serialisiert: Zwei qwen-Prozesse, die eine Sitzungsdatei beschreiben, würden sie beschädigen. Hinweis für mehrere Prozesse: Wenn Sie zwei MCP-Clients gegen zwei Serverprozesse betreiben und beide gleichzeitig auf dieselbe Sitzungs-ID antworten, serialisiert sie nichts. In der Praxis gehört eine Sitzung zu einem Client; für eine harte Garantie behalten Sie einen einzigen Serverprozess.

Transporte

stream (Standard)

print

Befehl

--input-format stream-json --output-format stream-json

-p --output-format stream-json

Prozess

bleibt aktiv, spricht die Control Plane auf stdin

ein Prozess pro Runde, beendet sich, wenn fertig

Zustellung während des Laufs

qwen_send (interrupt / steer / follow_up)

unmöglich: qwen liest nichts, während es arbeitet

Deadline / Cancel

zuerst qwens eigenes interrupt, Signale nur als Fallback

SIGTERM, dann SIGKILL

stream ist der Standard, weil es eine Obermenge ist: Derselbe Nachrichtenstrom, und zusätzlich bleibt eine laufende Runde erreichbar und eine unterbrochene wird protokollgemäß beendet, sodass das Ende des Streams erhalten bleibt. Sie wählen pro Aufruf über transport oder stellen den Standard über QWEN_MCP_TRANSPORT=print ein.

Dieser Server sendet von sich aus niemals etwas an qwen. Kein automatisches Aufräumen vor einer Deadline, keine eingeschleusten irrtums: qwen_send feuert nur, wenn der Aufrufer sie entrüftet.

Umgebung

Variable

Standard

Bedeutung

QWEN_MCP_BIN

qwen

Pfad zur qwen-Binary.

QWEN_MCP_APPROVAL_MODE

yolo

Standard-Genehmigungsregime für jeden Aufruf. Siehe die Warnung oben.

QWEN_MCP_MODEL

unset

Standardmodell für jeden Aufruf.

QWEN_MCP_TRANSPORT

stream

Standardtransport: stream oder print.

QWEN_MCP_TIMEOUT_MS

1800000

Standard-Laufzeit; timeout_ms überschreibt sie pro Aufruf.

QWEN_MCP_MAX_TIMEOUT_MS

86400000

Obergrenze für das, was timeout_ms verlangen darf.

QWEN_MCP_MAX_CONCURRENT

4

Maximal gleichzeitige qwen-Prozesse.

QWEN_MCP_MAX_OUTPUT

unset

Budget für die Antwort. Unset bedeutet keine Abschneidung.

QWEN_MCP_STDERR_LIMIT

1500

stderr-Teilenden, in der Antwort enthalten.

QWEN_MCP_STDERR_KEEP_EVENTS

unset

1 reicht stderr unverändert durch, einschließlich Protokollzeilen.

QWEN_MCP_MAX_CAPTURE

16000000

Lesepuffer-Schutz gegen einen durchlaufenden Stream.

QWEN_MCP_MAX_LINE

8000000

Längste einzelne Nachzeile von qwen, bevor sie verworfen wird.

QWEN_MCP_MAX_FRAME

8000000

Längster einzelner JSON-RPC-Frame vom Client.

QWEN_MCP_MAX_SESSIONS

200

Behütete Sitzungen, bevor die älteste verworfen wird.

QWEN_MCP_KILL_GRACE_MS

5000

Schonfrist SIGTERM → SIGKILL. вип

QWEN_MCP_INTERRUPT_GRACE_MS

5000

Wie lange interrupt Zeit bekommt, bevor Signale folgen (nur Stream).

QWEN_MCP_INIT_TIMEOUT_MS

15000

Timeout beim Initialize-Handshake (nur Stream).

QWEN_MCP_MODELS_TIMEOUT_MS

60000

Gesamtbudget für die qwen_models-Probe.

QWEN_MCP_STATE

~/.local/state/qwen-mcp/sessions.json

Abbildung Sitzung → Arbeitsverzeichnis.

QWEN_MCP_WRAP

unset

Befehlspräfix, z. B. ein Sandbox-Wrapper um qwen.

Design

  • Ein Prozess pro Aufruf. Qwen eigenen Sitzungsdateien sind die Quelle der Wahrheit, und genau das lässt Folgeaufrufe einen Neustart dieses Servers überleben.

  • Der Wire-Vertrag ist qwens eigenes stream-json-Protokoll, das direkt gesprochen wird — umbruchsgetrennte Nachrichten auf stdout, Steuereingaben und Benutzerrunden auf stdin. Seine Strukturen stammen von @qwen-code/sdk über import type, sodass eine Änderung upstream den Build bricht und nicht den Server. Null-Laufzeitabhängigkeiten.

  • Fail closed bei allem von qwen. Eine unbekannte Ergebnis-Unterart, ein fehlgeschlagener Handshake, eine Zeile, die nicht geparst werden kann — wird als solche gemeldet und niemals zu Erfolg normalisiert.

  • Kein Prozess überlebt seine Anfrage. Timeouts, Abbrüche und Herunterfahren räumen den gesamten qwen-Prozessbaum ab; es bleibt auf keinem Pfad etwas übrig.

Entwicklung

TypeScript (natives tsc), Biome, Vitest. Die Tests bewegen die echte Server-Binary über die stdio-Schnittstelle gegen eine Fixture, die qwens Protokoll spricht; Live-Tests gegen das installierte qwen sind opt-in.

npm run hooks          # once per clone: git hooks from .githooks/
npm run build          # tsc -> dist/
npm test               # unit + type tests, no API access, no tokens
npm run test:live      # 4 live tests against the real qwen binary (spends tokens)
npm run check          # format + types + tests
npm run fix            # biome --write

Lizenz

MIT

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

  • MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

View all MCP Connectors

Latest Blog Posts

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/minmax/qwen-cli-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server