跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

MCP 服务器

通过 MCP 把 Qwen Code 连接到外部工具和数据:快速开始、作用域、stdio/HTTP/SSE 配置、qwen mcp 命令、MCP 提示与资源、渐进发现与超时。

Qwen Code 可以通过 Model Context Protocol(MCP)连接到外部工具和数据源。MCP 服务器让 Qwen Code 访问你的工具、数据库和 API。连接 MCP 服务器后,你可以让 Qwen Code:处理文件和仓库(按你启用的工具读/搜索/写);查询数据库(模式检查、查询、报告);集成内部服务(把你的 API 包装成 MCP 工具);自动化工作流(把可重复的任务暴露为工具/提示)。

快速开始

Qwen Code 从 settings.json 里的 mcpServers 加载 MCP 服务器。你可以直接编辑 settings.json,或用 qwen mcp 命令配置。添加第一个服务器(以远程 HTTP MCP 服务器为例):

qwen mcp add --transport http my-server http://localhost:3000/mcp

然后启动 Qwen Code 并输入 /mcp 打开 MCP 管理对话框查看和管理服务器;如果 Qwen Code 在你添加服务器之前就在运行,在同一项目里重启它,然后让模型使用该服务器的工具。配置存放的作用域:大多数用户只需要两个作用域:**用户作用域(默认)**是 ~/.qwen/settings.json(你机器上的所有项目);项目作用域是项目根目录的 .qwen/settings.json。写入用户作用域:qwen mcp add --scope user --transport http my-server http://localhost:3000/mcp。

配置服务器

选择传输方式:

传输何时使用JSON 字段
http推荐用于远程服务;适合云 MCP 服务器httpUrl(+ 可选 headers)
sse只支持 Server-Sent Events 的旧式/已弃用服务器url(+ 可选 headers)
stdio你机器上的本地进程(脚本、CLI、Docker)command、args(+ 可选 cwd、env)

服务器同时支持两者时,优先用 HTTP 而不是 SSE。settings.json 与 qwen mcp add 两种配置方式产生相同的 mcpServers 条目,用你喜欢的即可。

Stdio 服务器(本地进程):

{
  "mcpServers": {
    "pythonTools": {
      "command": "python",
      "args": ["-m", "my_mcp_server", "--port", "8080"],
      "cwd": "./mcp-servers/python",
      "env": {
        "DATABASE_URL": "$DB_CONNECTION_STRING",
        "API_KEY": "${EXTERNAL_API_KEY}"
      },
      "timeout": 15000
    }
  }
}

对应的 CLI(默认写入用户作用域):qwen mcp add pythonTools -e DATABASE_URL=$DB_CONNECTION_STRING -e API_KEY=$EXTERNAL_API_KEY --timeout 15000 python -m my_mcp_server --port 8080。HTTP 服务器(远程可流式 HTTP):

{
  "mcpServers": {
    "httpServerWithAuth": {
      "httpUrl": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer your-api-token"
      },
      "timeout": 5000
    }
  }
}

CLI:qwen mcp add --transport http httpServerWithAuth http://localhost:3000/mcp --header "Authorization: Bearer your-api-token" --timeout 5000。SSE 服务器:"sseServer": { "url": "http://localhost:8080/sse", "timeout": 30000 };CLI:qwen mcp add --transport sse sseServer http://localhost:8080/sse --timeout 30000。

用 qwen mcp 管理

qwen mcp add [options] <name> <commandOrUrl> [args...] 添加服务器,主要参数:<name>(服务器唯一名称)、<commandOrUrl>(stdio 的命令或 http/sse 的 URL)、[args...](stdio 命令的可选参数)、-s, --scope(配置作用域 user 或 project,默认 user)、-t, --transport(stdio、sse、http,默认 stdio)、-e, --env(设置环境变量)、-H, --header(为 SSE 和 HTTP 传输设置 HTTP 头)、--timeout(连接超时毫秒数)、--trust(信任服务器,在受信任的工作区里跳过确认)、--description、--include-tools(逗号分隔的要包含的工具,默认全部)、--exclude-tools(要排除的工具)、--oauth-client-id、--oauth-client-secret、--oauth-redirect-uri(默认 http://localhost:7777/oauth/callback)、--oauth-authorization-url、--oauth-token-url、--oauth-scopes(OAuth 标志只适用于 --transport sse 和 --transport http,与 --transport stdio 组合会被拒绝)。移除服务器:qwen mcp remove <name>。你也可以用 /import-config 从 Claude 配置导入 MCP 服务器。

使用 MCP 提示与资源

除工具之外,Qwen Code 还发现并呈现另外两种 MCP 原语。提示(斜杠命令):服务器通过 prompts/list 公布的任何提示都成为可执行的斜杠命令;发现之后输入 / 就能看到列出的提示(标为 MCP: <server>),像其他命令一样运行:/my_prompt --arg1="value" --arg2="value"(位置形式 /my_prompt "value" "value" 也行);提示的消息被发送给模型,由模型据此行动。发现对声明的 prompts 能力是宽松的:有些服务器实现了 prompts/list 但在 initialize 能力里省略 prompts,Qwen Code 仍会尝试 prompts/list,所以这些提示仍会出现。资源:服务器通过 resources/list 公布的资源按服务器被发现;用 /mcp 打开管理对话框并选一个服务器,可以看到它的 Resources 数量以及工具和提示;选 View resources 浏览服务器的资源 URI,选一个会显示它的描述和 MIME 类型,以及可粘贴进消息的确切 @server:uri 引用。用 @server:uri 语法把资源内容注入你的消息:输入 @,然后服务器名、冒号和资源 URI,如 summarize @myserver:file:///docs/spec.md and list the open questions;输入 @myserver: 显示该服务器资源的自动补全列表,继续输入可过滤(不区分大小写地匹配资源 URI 或友好名称/标题);提交时被引用的资源被读取,内容追加到你的消息(文本内联,二进制 blob 作为附件),@server:uri 引用保留在提示里,让模型知道它在看什么;server 前缀必须匹配已配置的 MCP 服务器,否则该 token 被当作普通文件路径,所以已有的 @path/to/file 引用不受影响;在不受信任的文件夹里资源读取被禁用。

渐进可用性与发现超时

Qwen Code 在 UI 已经可交互之后,在后台发现 MCP 服务器。即使你的某个 MCP 服务器需要几秒(或从不响应),你也能在几百毫秒内看到 CLI 的第一个提示,模型的工具列表在每个服务器完成发现握手后大约一帧(约 16 毫秒)内更新。交互模式下,UI 立即出现,右下角的 MCP 状态标记在发现进行期间显示 N/M MCP servers ready;在 MCP 完成之前发送提示,只意味着模型看到的是那一刻就绪的工具,之后的提示会随服务器上线看到更多工具。非交互模式(--prompt、stream-json、ACP)下,CLI 仍然等待 MCP 发现稳定后才发送第一个提示,所以脚本化/管道调用看到的是与旧的同步行为产生的同样完整的工具集。按服务器的 discoveryTimeoutMs:每个 MCP 服务器获得一个只用于发现的超时,限制初始握手(connect + tools/list + prompts/list + resources/list)可以花多久,默认:stdio 服务器 30 秒,远程 HTTP/SSE 服务器 5 秒(网络风险更高);需要时按服务器覆盖,如 "slow-stdio": { "command": "node", "args": ["./slow-server.js"], "discoveryTimeoutMs": 60000 }。已有的 timeout 字段是工具调用超时(用于每个 tools/call 请求,默认 10 分钟),不受 discoveryTimeoutMs 影响。自动 stdio 协商:stdio 服务器默认使用单进程的旧式 initialize 流程;要连接只支持新协议的 stdio 服务器,选择加入自动协议协商(见官方文档)。