Skip to main content
Glama
minmax

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 global

Requiere 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: ✔ Connected

El 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 de cwd, como tu usuario. Limítalo con QWEN_MCP_APPROVAL_MODE, con el parámetro approval_mode en cada llamada, o con allowed_tools. Para trabajo de solo análisis, pasa listas permitidas al estilo de allowed_tools: "read,grep,ls".

Herramientas

Herramienta

Propósito

qwen

Inicia una sesión. Devuelve [session: <uuid>], el resultado y las estadísticas.

qwen_reply

Continúa una sesión terminada o interrumpida, incluida una que haya cortado un timeout.

qwen_models

Enumera los modelos que qwen puede alcanzar ahora mismo (sondeo en vivo a través del plano de control).

qwen_send

Introduce un turno en ejecución (abort / steer / follow_up; solo transporte stream).

qwen_running

Enumera los turnos en ejecución ahora mismo a los que puede llegar qwen_send.

qwen_sessions

Enumera las sesiones conocidas, de la más reciente a la más antigua, con su directorio de trabajo.

qwen

Argumento

Notas

prompt

Obligatorio. Debe ser autónomo: qwen no puede ver tu conversación.

cwd

Ruta absoluta; por defecto, el directorio de este servidor.

model

Valor de -m. Por defecto usa los ajustes propios de qwen; qwen_models enumera los valores válidos.

approval_mode

plan | default | auto-edit | auto | yolo. Por defecto en el servidor: ver la advertencia anterior.

allowed_tools

Lista de herramientas permitidas separadas por comas, que se pasa como --allowed-tools.

effort

lowmax esfuerzo de razonamiento. Solo transporte stream; qwen no tiene una opción CLI.

system_prompt_append

Texto que se añade al prompt del sistema de qwen para esta ejecución.

transport

stream (por defecto) o print. Normalmente se omite.

timeout_ms

Tiempo real para esta ejecución. Si se corta en el plazo, puede reanudarse con qwen_reply.

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 · 41s

La 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

stream (por defecto)

print

comando

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

-p --output-format stream-json

proceso

permanece activo y habla de la plana de control por stdin

un proceso por turno, termina al salir

entrega in-run

qwen_send (abort / steer / follow_up)

imposible: qwen no lee nada mientras trabaja

plazo / cancelación

interrupt primero, las señales solo como recurso final

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

QWEN_MCP_BIN

qwen

Ruta al binario de qwen.

QWEN_MCP_APPROVAL_MODE

yolo

Modo de aprobación predeterminado para cada llamada. Consulta la advertencia anterior.

QWEN_MCP_MODEL

sin definir

Modelo predeterminado para cada llamada.

QWEN_MCP_TRANSPORT

stream

Transporte predeterminado: stream o print.

QWEN_MCP_TIMEOUT_MS

1800000

Tiempo máximo predeterminado; timeout_ms lo supera en cada llamada.

QWEN_MCP_MAX_TIMEOUT_MS

86400000

Límite máximo de lo que puede pedir timeout_ms.

QWEN_MCP_MAX_CONCURRENT

4

Procesos qwen concurrentes.

QWEN_MCP_MAX_OUTPUT

sin definir

Límite de la salida. Sin definir, no se trunca.

QWEN_MCP_STDERR_LIMIT

1500

Cola de stderr que se incluye en la respuesta.

QWEN_MCP_STDERR_KEEP_EVENTS

sin definir

1 reenvía stderr tal cual, incluidas las líneas de los datos.

QWEN_MCP_MAX_CAPTURE

16000000

Protección del búfer de lectura para evitar un flujo descontrolado.

QWEN_MCP_MAX_LINE

8000000

Longitud máxima de una línea de mensaje de qwen antes de que se descarte.

QWEN_MCP_MAX_FRAME

8000000

Longitud máxima de un único frame JSON-RPC del cliente.

QWEN_MCP_MAX_SESSIONS

200

Sesiones recordadas antes de descartar la más antigua.

QWEN_MCP_KILL_GRACE_MS

5000

Período de gracia entre SIGTERM y SIGKILL.

QWEN_MCP_INTERRUPT_GRACE_MS

5000

Cuánto recibe interrupt antes de las señales (solo stream).

QWEN_MCP_INIT_TIMEOUT_MS

15000

Tiempo máximo para la inicialización (handshake) (solo stream).

QWEN_MCP_MODELS_TIMEOUT_MS

60000

Tiempo total asignado al sondeo de qwen_models.

QWEN_MCP_STATE

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

Archivo del mapa de sesión → directorio.

QWEN_MCP_WRAP

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/sdk mediante import 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 --write

Licencia

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