qwen-cli-mcp
qwen-cli-mcp
Servidor MCP que delega tareas de código en el Qwen Code CLI instalado localmente.
Envuelve el binario real qwen en lugar de empaquetar su propia copia del agente, de modo que cada llamada hereda tu autenticación de qwen, tus modelos, tus servidores MCP y tu configuración. Aquí no se duplica nada de tu pila de modelos y el servidor no se desfasa cuando actualizas qwen.
Es un hermano de pi-cli-mcp: misma arquitectura, mismos principios, qwen al volante. El documento de diseño de referencia es SPEC.md.
Úsalo cuando tu agente principal (Claude Code, Cursor, própiamente, cualquier cliente MCP) deba delegar trabajo en qwen: una segunda opinión de una familia de modelos diferente, una investigación que quieras mantener fuera de la ventana de contexto principal o trabajo en paralelo.
Instalación
npx -y qwen-cli-mcp # no install
npm install -g qwen-cli-mcp # or globalRequiere Node ≥ 22 y un qwen funcional en 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: ✔ ConnectedEl timeout generoso importa: una tarea delegada real puede durar minutos.
Cualquier otro cliente MCP
{
"mcpServers": {
"qwen": { "command": "npx", "args": ["-y", "qwen-cli-mcp"] }
}
}Mantén el nombre del servidor corto (qwen): pasa a formar parte de los nombres de las herramientas que ve tu modelo.
⚠️ El modo de aprobación predeterminado es
yolo. La delegación solo es útil si el delegado puede actuar, por lo que este servidor arranca qwen con aprobación completa de herramientas por defecto — dentro decwd, como tu usuario. Limítalo conQWEN_MCP_APPROVAL_MODE, con el parámetroapproval_modeen cada llamada, o conallowed_tools. Para trabajo de solo análisis, pasa listas permitidas al estilo deallowed_tools: "read,grep,ls".
Herramientas
Herramienta | Propósito |
| Inicia una sesión. Devuelve |
| Continúa una sesión terminada o interrumpida, incluida una que haya cortado un timeout. |
| Enumera los modelos que qwen puede alcanzar ahora mismo (sondeo en vivo a través del plano de control). |
| Introduce un turno en ejecución ( |
| Enumera los turnos en ejecución ahora mismo a los que puede llegar |
| Enumera las sesiones conocidas, de la más reciente a la más antigua, con su directorio de trabajo. |
qwen
Argumento | Notas |
| Obligatorio. Debe ser autónomo: qwen no puede ver tu conversación. |
| Ruta absoluta; por defecto, el directorio de este servidor. |
| Valor de |
|
|
| Lista de herramientas permitidas separadas por comas, que se pasa como |
|
|
| Texto que se añade al prompt del sistema de qwen para esta ejecución. |
|
|
| Tiempo real para esta ejecución. Si se corta en el plazo, puede reanudarse con |
Lo que devuelve
Solo el resultado final de qwen más estadísticas agregadas; nunca la transcripción, los argumentos de las herramientas ni la salida estándar en crudo:
[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 · 41sLa respuesta es el objeto result que qwen emite al final de un turno: no hay que adivinar la respuesta. Un objeto de error (error_max_turns, error_during_execution) hace fallar la llamada, pero conserva al final una lo que qwen llegó a decir, así que el trabajo sigue siendo resumible. Un flujo que termine sin ningún objeto result se reporta como roto; nunca se sustituye en silencio por la salida cruda.
Sesiones
qwen devuelve un id de sesión; qwen_reply la reanuda con --resume. La conversación vive en el almacén de sesiones propio de qwen, así que los seguimientos siguen funcionando tras reiniciar este servidor; el mapa de sesión → directorio se persiste en ~/.local/state/qwen-mcp/sessions.json.
Las respuestas concurrentes a una misma sesión se serializan por proceso del servidor: si dos procesos de qwen escriben en el mismo archivo de sesión, lo corromperían. Advertencia entre procesos: si ejecutas dos clientes MCP contra dos procesos del servidor y ambos responden a la misma id de sesión al mismo tiempo, no hay serialización posible. En la práctica, un cliente es el dueño de una sesión; para tener una garantía firme, usa un solo proceso de servidor.
Transportes
|
| |
comando |
|
|
proceso | permanece activo y habla de la plana de control por stdin | un proceso por turno, termina al salir |
entrega in-run |
| imposible: qwen no lee nada mientras trabaja |
plazo / cancelación |
| SIGTERM, luego SIGKILL |
stream es el valor por defecto porque es un superconjunto: el mismo flujo de mensajes, además de que un turno en curso sigue siendo accesible y uno interrumpido se termina dentro del protocolo, conservando la cola del flujo. Se elige el transporte con transport, o se define el valor por defecto con QWEN_MCP_TRANSPORT=print.
Este servidor nunca envía nada a qwen por su cuenta. No hay una conclusión automática antes de un plazo ni instrucciones inyectadas: qwen_send solo se dispara cuando la persona que llama lo invoca.
Entorno
Variable | Por defecto | Descripción |
|
| Ruta al binario de qwen. |
|
| Modo de aprobación predeterminado para cada llamada. Consulta la advertencia anterior. |
| sin definir | Modelo predeterminado para cada llamada. |
|
| Transporte predeterminado: |
|
| Tiempo máximo predeterminado; |
|
| Límite máximo de lo que puede pedir |
|
| Procesos qwen concurrentes. |
| sin definir | Límite de la salida. Sin definir, no se trunca. |
|
| Cola de |
| sin definir |
|
|
| Protección del búfer de lectura para evitar un flujo descontrolado. |
|
| Longitud máxima de una línea de mensaje de qwen antes de que se descarte. |
|
| Longitud máxima de un único frame JSON-RPC del cliente. |
|
| Sesiones recordadas antes de descartar la más antigua. |
|
| Período de gracia entre |
|
| Cuánto recibe |
|
| Tiempo máximo para la inicialización (handshake) (solo |
|
| Tiempo total asignado al sondeo de |
|
| Archivo del mapa de sesión → directorio. |
| sin definir | Prefijo de comando, p. ej., un envoltorio de sandbox alrededor de qwen. |
Diseño
Proceso por llamada. Los propios archivos de sesión de qwen son la fuente de verdad; por eso los seguimientos sobreviven a un reinicio de este servidor.
El contrato de comunicación es el propio protocolo stream-json de qwen, hablado directamente: mensajes delimitados por nueva línea en stdout, solicitudes de control y turnos de usuario en stdin. Sus formas se toman de
@qwen-code/sdkmedianteimport type, de modo que un cambio en el código ascendente rompe la compilación en lugar de romper el servidor. Cero dependencias en tiempo de ejecución.Cerrar ante cualquier cosa inesperada de qwen. Un subtipo de resultado desconocido, un handshake fallido, una línea que no se analiza — se reportan como tales, nunca se normalizan en éxito.
Ningún proceso sobrevive a su solicitud. Tiempos fuera, cancelación o apagado terminan todo el árbol de procesos de qwen; no queda nada en ningún camino.
Desarrollo
TypeScript (tsc nativo), Biome, Vitest. Los tests prueban el binario real del servidor a través de stdio con un accesorio que habla el protocolo de qwen; las pruebas en vivo contra el qwen instalado son opcionales.
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 --writeLicencia
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