使用说明

千问 MCP(对接)

如何把文稿智库 MCP 挂到通义千问 / 百炼(论文平台、自有后端、百炼应用等)。

工具清单与参数(query / tags / path / knowledge_base 等)以 MCP 工具(参数) 为准。控制台侧栏「千问问答」是站内试用,与正式接入共用同一套工具;只用侧栏时不必按本文接入。

MCP 是什么(一分钟)

接入时不要手写 search / read HTTP。流程是:

  1. 接入代码只调百炼 Responses API,在 tools 里挂上文稿智库的 MCP 地址。
  2. 百炼让千问决定何时调工具;百炼再去连文稿智库 MCP(SSE)。
  3. 工具结果回到模型,模型继续推理并给出最终回答。

接入时需要: DashScope API Key(sk-…,调千问)+ 文稿智库 sv_…(让百炼连上 MCP)+ 公网 MCP URL。

流程图加载中…

接入前准备

说明
空间 slug建库返回的 knowledge_base.slug,或控制台空间地址里的短名
MCP URL推荐 https://<公网主机>/{slug}/mcp(已锁空间)
sv_…文稿智库 设置页创建的 API 密钥
DASHSCOPE_API_KEY阿里云百炼密钥(sk-…),调千问用

控制台也可:打开空间 → 侧栏「复制 MCP」,或设置页复制锁定空间的 JSON。

本地调试可用 http://localhost:8080/{slug}/mcp挂百炼时 server_url 必须对百炼公网可达(HTTPS)。仅本机 127.0.0.1 百炼连不上。

两种入口(/{slug}/mcp 与全局 /mcp)见 MCP 工具 · 入口

接入请求填什么、模型填什么

Responses 请求里配置的是 MCP 服务本身,不是 search / read 的业务参数:

字段谁填作用
server_url接入代码MCP 地址;用 /{slug}/mcp 即锁定空间
headers.Authorization接入代码Bearer sv_…
server_description接入代码(可选)自然语言提示(先 guide、再 search 等);不是 API 传参
server_label接入代码标签名,便于区分多个 MCP
input接入代码用户问题 / 写作任务;按学科时在此写明科目
query / tags / path / knowledge_base模型详见表与语义见 MCP 工具(参数)
✅  server_url = https://host/{slug}/mcp
❌  指望 server_description 里写 knowledge_base=xxx 当作强制参数
❌  在 Responses 请求体里直接塞 tags=[...](无效)

完整示例(Node.js)

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
});

const SLUG = "your-space-slug";
const MCP_HOST = "https://your-host";
const SV_KEY = process.env.LLMWIKI_API_KEY; // sv_…

const mcpTool = {
  type: "mcp",
  server_protocol: "sse",
  server_label: "wenxian-bianyi",
  server_description:
    "文稿智库。先 guide,再 search/read;可省略 knowledge_base。用户要求落稿时再 write。",
  server_url: `${MCP_HOST}/${SLUG}/mcp`,
  headers: {
    Authorization: `Bearer ${SV_KEY}`,
  },
};

const response = await client.responses.create({
  model: "qwen3.5-plus", // 须支持 MCP,见百炼文档
  input: "根据库里的资料,简要说明某某方法的适用条件。",
  tools: [mcpTool],
});

console.log(response.output_text);

流式:

const stream = await client.responses.create({
  model: "qwen3.5-plus",
  input: "根据库里资料回答:……",
  tools: [mcpTool],
  stream: true,
});

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  }
}
process.stdout.write("\n");

保存为 qwen-mcp.mjs 后:

export DASHSCOPE_API_KEY=sk-…
export LLMWIKI_API_KEY=sv_…
node qwen-mcp.mjs

官方说明:百炼 · 通过 Responses API 接入 MCP。若使用业务空间专属域名,把 baseURL 换成文档中的 {WorkspaceId}.cn-beijing.maas.aliyuncs.com/... 即可,tools 里 MCP 字段写法相同

知识库按学科缩小范围

接入时把科目写进 input(并可用 server_description 提醒),由模型调用 search(..., tags=[...])。参数语义见 MCP 工具 · tags

const SUBJECT_TAGS = ["生命医学", "医学"]; // 一级、二级;可再加三级
const QUESTION = "免疫治疗的适用条件是什么?";

const response = await client.responses.create({
  model: "qwen3.5-plus",
  input: [
    `检索范围:仅限科目 tags = ${JSON.stringify(SUBJECT_TAGS)}(AND)。`,
    `调用 search 时必须传 tags 参数,取值与上完全一致;不要用 path 传科目目录。`,
    `问题:${QUESTION}`,
  ].join("\n"),
  tools: [
    {
      ...mcpTool,
      server_description:
        "文稿智库知识库。若用户指定了科目,search 必须带 tags(一级/二级/三级,AND)。" +
        "先 guide,再 search/read;可省略 knowledge_base。",
    },
  ],
});

console.log(response.output_text);

精确到三级时例如 ["生命医学", "医学", "临床医学"]。科目须与库内资料上的 tags 一致。

全局 /mcp 时,在 input 中写死 knowledge_base = <slug>(更稳妥仍用 /{slug}/mcp)。

论文写作场景

  1. 建库并保存 knowledge_base.slug(及 id)。
  2. 写作请求按上文挂载 …/{slug}/mcp + Bearer sv_…
  3. 模型自行检索;片段作为工具结果进入上下文。
  4. 仅当 MCP 不可达时,再走 HTTP 摘录并注入 prompt(回退)。

步骤与接口见 论文平台对接Node 对接示例

鉴权对照

用途凭证
调百炼 / 千问Authorization: Bearer sk-…DASHSCOPE_API_KEY
百炼连接文稿智库 MCPMCP headersBearer sv_…
调文稿智库 HTTP API同样可用 Bearer sv_… 或登录 JWT
控制台网页登录即可;侧栏问答由站内代连 MCP

常见踩坑:把 sk- 填进 MCP headers,或把 sv_ 当成 DashScope Key——两边密钥用途不同,不要混用。

相关

MCP 工具(参数) · 论文平台对接 · 典型流程 · 常用标识