RooQuiz 文档
集成与 API

MCP 接入

RooQuiz 提供一个 MCP(Model Context Protocol)server,让 Claude Desktop、Claude Code、Cursor、Codex 等 AI 客户端能在你的团队下直接操作测验——用自然语言就能创建考试、评分测验、分型测验,追加题目、调整顺序、配置报告维度与分型结果;还能复制 / 删除测验、做多语言译文、管理考生,以及读取答题记录、统计与转化漏斗——而不必手动在编辑器里一个个搭。

MCP 是面向进阶用户的能力,需要你会使用支持 MCP 的 AI 客户端。基础的可视化搭建仍推荐用 编辑器

工作原理

  • AI 客户端连接到 RooQuiz 的 MCP 端点(/api/mcp),认证方式有两种:OAuth 授权(推荐,支持的客户端在浏览器里登录授权即可)或 个人 API Token
  • 无论哪种方式,AI 都会以你的身份在当前激活的团队下执行操作。
  • 所有操作都会经过与后台一致的权限校验,写操作还会记录到审计日志
  • 所以 AI 能做什么,完全取决于你在该团队里的角色与权限,不会越权。

连接方式一:OAuth 授权(推荐)

claude.ai、Claude Code 等支持 MCP OAuth 的客户端无需手动创建 Token——只要填入 Endpoint URL,客户端会自动发现授权服务并打开浏览器,你登录 RooQuiz 账号、选择要授权的团队、点「授权」即完成连接。

打开 claude.ai 的 设置 → 连接器(Connectors)→ 添加自定义连接器:

  1. 名称随意填(例如 RooQuiz)。
  2. 远程 MCP 服务器 URL 填入你的 Endpoint(形如 https://你的域名/api/mcp)。
  3. 保存后点「连接」,浏览器会跳转到 RooQuiz 授权页——登录并选择团队,点「授权」。

关于 OAuth 连接:

  • 授权时选择的团队即初始激活团队,AI 后续仍可用 switch_active_tenant 切换。
  • 连接会出现在 设置 → MCP 接入 的 Token 列表中(标有 OAuth),吊销即断开对应客户端;它不占个人 Token 的 5 个名额。
  • 凭证由客户端自动续期(访问令牌 1 小时滚动刷新,连接本身 30 天有效,期间使用会自动延续),无需手动维护。

连接方式二:个人 Token(PAT)

不支持 OAuth 的客户端(Cursor、Codex CLI、Claude Desktop 等),或 CI 等无浏览器环境,使用个人 API Token 连接。

创建 Token

进入 设置 → MCP 接入,点「创建 Token」:

  1. 填写一个名称(便于识别,例如 Cursor - 我的 Mac)。
  2. 选择一个默认团队——Token 创建后默认操作这个团队,AI 后续可用 switch_active_tenant 工具切换到你所在的其它团队。
  3. 生成后会显示一段以 rqp_live_ 开头的明文 Token。

Token 明文只显示这一次,离开页面后无法再查看。请立刻复制保存;丢失只能吊销后重新生成。

限制:

  • 每个用户最多保有 5 个 Token(含已吊销的,OAuth 连接不计入)。要再建新的,需先删除一个释放名额(「吊销」只是停用,不释放名额)。
  • Token 是个人凭证,请勿提交到代码仓库或公开分享。

在 AI 客户端中配置

设置 → MCP 接入 页面可以直接复制各客户端的配置片段和你的 Endpoint URL(形如 https://你的域名/api/mcp)。把片段里的 rqp_live_xxx... 替换成你刚生成的 Token。

Claude Code 推荐走上方的 OAuth 方式;仅在 CI 等无浏览器环境才需要 token header:

claude mcp add --transport http rooquiz https://你的域名/api/mcp \
  --header "Authorization: Bearer rqp_live_xxx..."

示例指令

连上之后直接用自然语言说话即可。下面每一条分别调用服务器的不同部分:

从模板建卷

看一下教练类模板,用其中的 readiness 那个建一份计分测评,然后加两道关于预算的题。

依次调用 list_templatescreate_form_from_templateadd_question

处理线索

列出我的 Wheel of Life 测评这周收到的线索,给得分低于 40 的都打上 follow-up 标签,并指派给我。

依次调用 list_leadsset_lead_tagsassign_leads

诊断漏斗

我哪份测评的完成率最差?人具体是在哪一步流失的?

依次调用 list_formsget_form_statsget_form_funnel

做多语言

把 promotion-readiness 这份测评翻成西班牙语和德语,题目 code 保持不变。

依次调用 list_form_translationscreate_form_translation

答题者的姓名、邮箱和手机号返回时是脱敏的(j***[email protected])。脱敏不可逆,所以引用某个 答题者请用 id,不要把脱敏后的值再贴回指令里。

支持的工具

连接成功后,AI 助手可调用以下工具。它们都作用在 Token 当前激活的团队下。

团队(Tenant)

工具作用
list_my_tenants列出你所在的所有团队,标记当前激活的那个。
get_active_tenant返回 Token 当前激活的团队信息;所有写操作默认作用在该团队。
switch_active_tenant切换当前激活团队(持久化、跨会话保留;目标必须是你已加入的团队)。

测验(Form)

工具作用
create_form创建测验(knowledge_quiz 考试、scored_quiz 评分测验 或 outcome_quiz 分型测验),可一次性传入题目数组和报告配置,减少往返调用。分型测验必须在创建时一并传入 report.outcomes(结果类型列表),并让每个选项通过 outcomes 给类型投票。
list_forms列出当前团队的测验,支持按 scene 或标题模糊过滤。
get_form查看指定测验的完整详情(题目列表 fields[]、报告配置等);改题前需先用它拿到每道题的 code,分型测验则从 report.outcomeAnalysis.outcomes 拿结果类型的 code
update_form更新标题、描述、开启/关闭状态,或按子键合并替换 report 配置;分型测验传 report.outcomes 即按 code 合并更新结果类型(名称/描述/CTA,已配置的图片保留;删除仍被题目引用的类型会被拒绝)。场景(scene)与语言创建后锁定,不可改
delete_form把测验移入回收站(软删):列表中不再显示,5 天内可用 restore_form 找回(到期自动彻底清除)。仅测验 owner / 团队 owner 可删;答题记录在彻底清除前保留。
restore_form从回收站恢复被 delete_form 删除的测验。仅 owner / 团队 owner 可恢复;不在回收站会报错。
duplicate_form复制一份测验:克隆题目结构、评分、报告、视觉与设置以及全部语言译文,生成归属你的新测验(新链接)。不复制答题记录、共享设置、集成与封禁状态。可选传 newTitle

题目(Question)

工具作用
add_question往测验末尾追加一项:题目(单选/多选/判断/填空)或分页符(Breaker)。分型测验的选择题需为每个选项指明投给哪些结果类型(判断题用 trueOutcomes / falseOutcomes)。
insert_question在指定位置插入一项,用 after / before 引用一个已存在的 code
move_questioncode 把已有题目或分页符挪到新位置。
update_questioncode 更新题干、说明、解析、是否必答、分值、正确答案,或填空题的 AI 智能判分。不能改题型与选项内容
delete_questioncode 删除一道题目或分页符。

报告维度

工具作用
set_dimension_analysis整体设置测验的多维度分析(雷达图维度);quiz 场景每个维度引用题目 code,scored quiz 场景每个维度写公式。传空数组即清空。分型测验不适用(它没有维度概念,用 report.outcomes 配结果类型)。

多语言译文(FormTranslation)

为同一测验提供多语言版本:一份源测验(主语言)+ 每个其它语言一份译文(结构与源同构,只译文字,答题记录恒锚定源测验)。

工具作用
create_form_translation为测验新增一个语言版本,克隆源文案为初稿(同 code、源语言文字),并返回克隆内容供直接翻译。语言必须不同于主语言,每种语言至多一份。
list_form_translations列出某测验已有的语言版本(语言、启用状态、公开链接等)。
get_form_translation读取某语言版本的完整内容(含 fields[]report),用于就地翻译——所有 code 必须与源测验保持一致。
update_form_translation保存某语言版本的译文文案(title / description / fields / report / systemText),或用 isActive 暂停该语言;结构由源决定,只改文字,未传的字段视为部分翻译。
delete_form_translation删除某语言版本。

考生(Examinee)

测验的答题人。考生强绑定单一团队;工具仅返回安全字段——密码、验证码、重置令牌等敏感字段绝不外泄

工具作用
list_examinees列出当前团队的考生,支持按邮箱 / 姓名模糊搜索与状态(active / disabled)过滤。
get_examinee按业务 ID examineeId(如 AB1234567890,见列表)查看某考生详情(含自定义字段 customData)。
update_examineeexamineeId 编辑考生的姓名 / 状态 / 自定义字段(customData 按团队字段定义校验)。邮箱与所属团队不可改

数据与分析(Records & Analytics)

读取测验表现、转化漏斗与线索(leads),让 AI 形成「建卷 → 度量 → 迭代」闭环。线索类工具会返回答题人信息(PII)。

工具作用
get_form_stats读取某测验近 N 天(默认 30,上限 180)的统计:总览 KPI、每日趋势、渠道(utm_source)、登录方式、设备,以及单选类题目的答案分布。
get_form_funnel读取某测验近 N 天的转化漏斗:浏览 → 开始 → 提交 → 留资 → 看报告 → 点 CTA → 分享,以及分渠道漏斗与流失点。
list_records列出当前团队的答题记录(线索):答题人、作答、报告结果摘要与 UTM;可按测验、报告状态、提交时间筛选。
get_record按记录 id(list_records 返回)查看单条记录详情:完整作答、报告结果与提交元数据。

图片上传(Image upload)

工具作用
prepare_image_upload第一步:为封面等图片签发直传地址(把文件 PUT 上去)。
finalize_image_upload第二步:校验并把图片落库到团队媒体库,返回 media id;再用 update_formflagImg / landingImage 引用它。

典型流程:

  • 考试 / 评分测验:create_form 创建测验并拿到每道题的 code → 用 update_formset_dimension_analysiscode 配置报告公式 / 维度。
  • 分型测验:create_form 一次传齐 report.outcomes(每个类型自定义一个唯一 code,如 lion)与各题选项的投票映射 → 答题后票数最高的类型胜出(平票按列表顺序),后续用 update_form 微调类型文案 / CTA。

当前限制

  • 随机题库(Random Knowledge Quiz)不支持:这类测验的题目存放在题库(QuestionBank)中,请在后台编辑器里管理,MCP 暂不覆盖。
  • 不能直接改题型或选项内容:需要换题型或改选项时,先 delete_questionadd_question 重建。分型测验的选项投票映射同理——要改投票就删题重建。
  • 评分测验(scored quiz)的选项计分走「选项分值(Option Scoring)」:update_question 在 scored quiz 场景下不接受 score / correctAnswer / aiMatch,改选项分值请在后台编辑,或删了重建。分型测验(outcome)同样不接受这三个参数(它按票数判型,没有计分概念)。
  • 分型测验的题型范围:投票题型为单选 / 多选 / 判断(不支持填空);结果类型的配图暂不能通过 MCP 上传,请在后台编辑器配置(MCP 更新 report.outcomes 时已配置的图片会保留)。
  • 场景与语言创建后锁定,无法通过 MCP 修改。
  • 删除是软删:delete_form 移入回收站(5 天后自动彻底清除),并非立即永久删除;彻底删除请在后台二次删除。
  • 复制不含数据:duplicate_form 只克隆结构与译文,不复制答题记录、共享设置与集成(含密钥),新测验为干净状态。
  • 考生身份字段不可改:update_examinee 不能改邮箱、所属团队与 examineeId(它们是认证身份)。
  • 线索含个人信息(PII):list_records / get_record 会返回答题人邮箱、姓名、自定义字段等,请妥善使用。
  • 填空 AI 智能判分(aiMatch,仅 quiz 场景、Beta)会消耗团队的 AI 额度

安全与频率

  • 无论 OAuth 还是 Token,都以你的身份操作,会触发现有的权限校验与审计日志(写操作均会留痕)。
  • 每个连接的调用频率限制为 60 次 / 分钟,超出会被限流。
  • 不再使用时,在 设置 → MCP 接入吊销(立即失效;对 OAuth 连接即断开对应客户端)或删除(并释放名额)。
  • OAuth 流程强制 PKCE(S256),授权码一次性使用,刷新令牌每次续期自动轮换,旧令牌即刻失效。

本页目录