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 globalErfordert 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: ✔ ConnectedDer 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 voncwd, unter Ihrem Benutzerkonto. Sie können das mitQWEN_MCP_APPROVAL_MODE, demapproval_modepro Aufruf oderallowed_toolseingrenzen. Für reine Analysearbeit übergeben Sie Allowlists im Stil vonallowed_tools: "read,grep,ls".
Tools
Tool | Zweck |
| Startet eine Sitzung. Liefert |
| Setzt eine abgeschlossene oder unterbrochene Sitzung fort — auch eine, die durch ein Timeout beendet wurde. |
| Listet Modelle auf, die qwen gerade tatsächlich erreichen kann (Live-Probe über die Control Plane). |
| Liefert in eine gerade laufende Runde hinein ( |
| Listet gerade laufende Runden auf, die |
| Listet bekannte Sitzungen auf, die neueste zuerst, mit ihrem Arbeitsverzeichnis. |
qwen
Argument | Hinweise |
| Erforderlich. Muss in sich abgeschlossen sein — qwen kann Ihre Konversation nicht sehen. |
| Absoluter Pfad; standardmäßig das cwd dieses Servers. |
|
|
|
|
| Mit Kommas getrennte Tool-Allowlist, die als |
|
|
| Wird für diesen Lauf an den System-Prompt von qwen angehängt. |
|
|
| Maximale Laufzeit für diesen Lauf. Ein Lauf, der an der Deadline beendet wurde, bleibt über |
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 · 41sDie 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
|
| |
Befehl |
|
|
Prozess | bleibt aktiv, spricht die Control Plane auf stdin | ein Prozess pro Runde, beendet sich, wenn fertig |
Zustellung während des Laufs |
| unmöglich: qwen liest nichts, während es arbeitet |
Deadline / Cancel | zuerst qwens eigenes | 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 |
|
| Pfad zur qwen-Binary. |
|
| Standard-Genehmigungsregime für jeden Aufruf. Siehe die Warnung oben. |
| unset | Standardmodell für jeden Aufruf. |
|
| Standardtransport: |
|
| Standard-Laufzeit; |
|
| Obergrenze für das, was |
|
| Maximal gleichzeitige qwen-Prozesse. |
| unset | Budget für die Antwort. Unset bedeutet keine Abschneidung. |
|
| stderr-Teilenden, in der Antwort enthalten. |
| unset |
|
|
| Lesepuffer-Schutz gegen einen durchlaufenden Stream. |
|
| Längste einzelne Nachzeile von qwen, bevor sie verworfen wird. |
|
| Längster einzelner JSON-RPC-Frame vom Client. |
|
| Behütete Sitzungen, bevor die älteste verworfen wird. |
|
| Schonfrist SIGTERM → SIGKILL. вип |
|
| Wie lange |
|
| Timeout beim Initialize-Handshake (nur Stream). |
|
| Gesamtbudget für die |
|
| Abbildung Sitzung → Arbeitsverzeichnis. |
| 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überimport 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 --writeLizenz
MIT
This server cannot be installed
Maintenance
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.
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/minmax/qwen-cli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server