qwen-cli-mcp
qwen-cli-mcp
用于将你的编码任务委派给本机安装的 Qwen Code CLI 的 MCP 服务器。
它包装了真正的 qwen 二进制文件,而不是自行捆绑 agent 副本,因此每次调用都会继承你的 qwen 认证、模型、MCP 服务器和设置。这里不会重复你的模型栈的任何部分;升级 qwen 时,服务器也不会漂移。
它是 pi-cli-mcp 的姊妹项目——相同的架构、相同的原则,由 qwen 掌控方向盘。权威设计文档是 SPEC.md。
当你的主智能体(Claude Code、Cursor、pi 本身或任何 MCP 客户端)需要把工作交给 qwen 时使用它:来自不同模型家族的第二意见、你希望保留在主上下文之外调查,或并行工作。
安装
npx -y qwen-cli-mcp # no install
npm install -g qwen-cli-mcp # or global需要 Node ≥ 22,并且 PATH 上有可用的 qwen(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宽裕的 timeout 很重要:一个真实的委派任务可能运行好几分钟。
任何其他 MCP 客户端
{
"mcpServers": {
"qwen": { "command": "npx", "args": ["-y", "qwen-cli-mcp"] }
}
}保持服务器名简短(qwen):它会成为模型看到的工具名的一部分。
⚠️ 默认批准模式是
yolo。 只有当被委派方可以行动时,委派才有意义,因此该服务器默认以完全工具批准模式启动 qwen——在你自己的用户身份下,并在cwd内。可通过QWEN_MCP_APPROVAL_MODE、每次调用的approval_mode或allowed_tools来收紧范围。对于纯分析工作,请传入allowed_tools: "read,grep,ls"风格的允许列表。
工具
工具 | 用途 |
| 开始一个会话。返回 |
| 继续一个已完成或已中断的会话——包括因超时被终止的会话。 |
| 列出 qwen 当前实际可以访问到的模型(通过控制平面实时探测)。 |
| 向当前正在执行的一个轮次投递( |
| 列出当前正在执行、且 |
| 列出已知会话,最新的优先,并包含各自的工作目录。 |
qwen
参数 | 说明 |
| 必需。必须自包含——qwen 看不到你的对话上下文。 |
| 绝对路径;默认为该服务器的 cwd。 |
|
|
|
|
| 逗号分隔的工具允许列表,会作为 |
|
|
| 附加到本轮 qwen 系统提示内容的后面。 |
|
|
| 本次运行的墙钟时间。到达期限被杀掉的运行仍可继续通过 |
返回什么
只返回 qwen 的最终结果和聚合统计——绝不返回 transcript、工具调用或原始 stdout:
[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答案来自 qwen 在一轮结束时发出的 result 信封——不会有选择答案的困惑。错误信封(error_max_turns、error_during_execution)会让调用失败,同时完整保留 qwen 能说到的一切,因此工作仍然可以恢复。如果一个流在没有 result 信封时结束,则会被报告为损坏的,绝不会被静默替换成原始输出。
会话
qwen 返回会话 ID,qwen_reply 用 --resume 恢复它。会话内容存在于 qwen 自己的会话存储中,所以该服务器重启后后续请求仍然有效——会话 → 目录映射持久化在 ~/.local/state/qwen-mcp/sessions.json。
同一会话的并发回复会通过服务器进程内的串行化处理:两个 qwen 进程同时工作同一个会话文件会导致文件损坏。跨进程注意: 如果你用两个 MCP 客户端连接两个服务器进程,并且两者同时回复 同一个 会话 ID,则不会有任何串行化机制。通常一个进程会自己一个客户端;如果需要严格保证,请只保留一个服务器进程。
传输方式
|
| |
命令 |
|
|
进程 | 保持运行,在 stdin 上使用控制平面语言 | 每个轮次一个进程,结束后退出 |
运行中接收消息 |
| 不可能:qwen 在工作中不读任何消息 |
期限 / 取消 | 先拦截后 respawn;先用 qwen 自己的 | SIGTERM,然后 SIGKILL |
stream 是默认选项,因为它是一个超集:同一消息递增,轮次运行中仍可继续,中断的轮次会在协议内结束,而不会丢弃流尾。每次调用可用 transport 选择,或用 QWEN_MCP_TRANSPORT=print 设置默认值。
该服务器永远不会自行向 qwen 发送任何内容。 没有计划好的收尾,没有注入的指令:只有当调用方发起时,才会触发 qwen_send。
环境变量
变量 | 默认值 | 含义 |
|
| qwen 可执行文件的路径。 |
|
| 每次调用的默认 |
| 未设置 | 每次调用的默认模型。 |
|
| 默认传输方式: |
|
| 默认墙钟时间;每次调用可被 |
|
|
|
|
| 并发 qwen 进程数。 |
| 未设置 | 答案的上限。未设置表示不截断。 |
|
| 响应中追加的 stderr 尾部。 |
| 未设置 | 为 |
|
| 读取缓冲保护,用于避免流失控。 |
|
| qwen 的单条消息行超过该长度将被丢弃。 |
|
| 来自客户端的单个 JSON-RPC 帧的最大长度。 |
|
| 记住的会话数,超过时丢弃最旧的。 |
|
| SIGTERM → SIGKILL 的宽限期。 |
|
| 在信号之前, |
|
| 初始化握手超时(仅 stream)。 |
|
|
|
|
| 会话 → cwd 映射。 |
| 未设置 | 命令前缀,例如 qwen 的 configurable wrapper(沙箱包裹)。 |
设计
每次调用一个进程。 qwen 自身的会话文件是唯一的真实来源,这使得后续请求在本服务器重启后仍可继续工作。
线上协议是 qwen 自身的 stream-json 协议,直接在语言-neutral 的输出/输入流上通信,ccl-defined messages, control requests and user turns on stdin。其类型通过
@qwen-code/sdk的import type继承,因此上游变更会触发编译失败而不是运行时损坏。零运行时依赖。对来自 qwen 的任何失败(fail-closed)。 未知的结果类型、失败握手、无法解析的内容行为,都会如实报告,而不会伪装成成功。
任何进程都不会存活超过其请求。 超时、取消和服务正常关闭都会回收整个 qwen 进程树;任何情况下都不会留下残留。
开发
TypeScript(使用原生 tsc),Biome,Vitest。测试通过 stdio 驱动真实服务器的二进制,并在一个会说 qwen 协议的 configurable fixture 上运行;针对已安装 qwen 的 live tests 是可选的。
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许可证
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