| name | tencent-survey |
| description | 腾讯问卷(wj.qq.com)MCP Skill。涉及「问卷」「调查」「表单」「投票」「考试」「测评」「wj.qq.com」等操作时使用。支持能力:(1) 获取问卷详情(标题、设置、页面、题目、选项完整结构 + 纯文本 DSL)(2) 使用纯文本创建问卷(text 必填,支持指定场景/指定项目)(3) 更新问卷中的单个题目(DSL 格式)(4) 获取问卷回答列表(支持游标分页)。支持场景:调查(1)、考试(3)、测评(6)、投票(8)。 |
腾讯问卷 MCP Skill
腾讯问卷 MCP Skill 提供问卷查询、创建、编辑与回答查看能力,通过 MCP 协议直接调用工具操作问卷系统。
调用方式
所有工具通过 MCP function call 直接调用:
{"name": "get_survey", "arguments": {"survey_id": 12345}}
{"name": "create_survey", "arguments": {"text": "员工满意度调查\n\n1. 您对工作环境是否满意?[单选题]\n非常满意\n满意\n一般\n不满意"}}
{"name": "update_question", "arguments": {"survey_id": 12345, "question_id": "q-1-abcd1234", "text": "您的性别[单选题]\n男\n女\n其他"}}
{"name": "list_answers", "arguments": {"survey_id": 12345}}
触发场景
明确触发
以下情况应直接激活本 skill:
- 用户提到「问卷」「调查」「表单」「投票」「考试」「测评」等关键词
- 用户提供了
wj.qq.com 链接
- 用户说「帮我做个调查」「创建一个投票」等
模糊场景
| 用户表述 | 判断方式 |
|---|
| 「帮我做个投票」 | 直接使用,scene=8 |
| 「做个考试」 | 直接使用,scene=3 |
| 「做个测评」 | 直接使用,scene=6 |
| 「收集一下大家的意见」 | 直接使用,scene=1(调查) |
| 「我有个问卷链接…」 | 解析链接提取 survey_id,调用 get_survey |
| 「修改问卷的第X题」 | 先 get_survey 获取 question_id,再 update_question |
| 「看看问卷的回答」 | 调用 list_answers,注意翻页获取全部数据 |
| 「问卷收了多少份」 | 调用 list_answers 查看 total 字段 |
工具列表
| 工具名称 | 功能说明 | 参考文档 |
|---|
get_survey | 获取指定问卷的详细信息(标题、设置、页面、题目、选项 + 纯文本 DSL) | references/get_survey.md |
create_survey | 使用纯文本创建问卷(text 必填,支持指定场景/指定项目) | references/create_survey.md |
update_question | 更新问卷中的某一道题目(需先获取 question_id) | references/update_question.md |
list_answers | 获取问卷的回答列表(支持游标分页) | references/list_answers.md |
URL 解析规则
问卷投放链接格式为 https://wj.qq.com/s2/{survey_id}/{hash}
当用户提供链接时,取路径第二段为 survey_id:
| URL 格式 | 提取方式 | 示例 |
|---|
wj.qq.com/s2/{id}/{hash} | 取路径第二段 | wj.qq.com/s2/292192/abc1 → 292192 |
提取到 survey_id 后,调用 get_survey(survey_id=...) 获取问卷详情。
数据模型
问卷(Survey)
├── 基本信息:id, hash, title, scene, state
├── 设置:prefix(欢迎语), suffix(结束语), started_at, end_at ...
├── 项目:project { id, name }
├── 纯文本内容:text(DSL 格式,包含标题和所有题目)
├── 页面列表(Pages[])
│ └── 题目列表(Questions[])
│ ├── 基本属性:id, type, sub_type, title, required
│ ├── 选项列表(Options[]):id, text, exclusive
│ ├── 量表属性:starBeginNum, starNum
│ ├── 矩阵子问题:subTitles[]
│ └── 联动层级:levels[], groups[]
└── 回答列表(Answers[])← 通过 list_answers 获取
├── 基本信息:answer_id, respondent_nickname, started_at, ended_at
├── 地理信息:country, province, city
└── 回答内容(answer[])
└── 页面 → 题目回答 { id, type, text, options, blanks, groups }
核心嵌套:Survey → Pages[] → Questions[] → Options[]
回答嵌套:Answer → answer[] (Pages) → questions[]
问卷场景
| scene | 场景 | 说明 |
|---|
| 1 | 调查 | 默认值,通用问卷调查 |
| 3 | 考试 | 带评分的考试问卷 |
| 6 | 测评 | 测评类问卷 |
| 8 | 投票 | 投票类问卷 |
核心工作流
查看问卷详情
1. 从用户提供的链接或 ID 获取 survey_id(链接解析见上方)
2. 调用 get_survey(survey_id=...) 获取问卷详情
3. 递归解析 pages → questions → options 嵌套结构
4. 向用户展示问卷标题、题目列表等信息
创建问卷
1. 根据用户需求判断 scene:调查(1)、考试(3)、测评(6)、投票(8)
2. 按问卷文本语法组织 text 内容(语法详见 references/create_survey.md)
3. 如果用户指定了项目,传入 project_id
4. 调用 create_survey 创建问卷
5. 从返回结果取 survey_id 和 hash,拼接投放链接告知用户:
https://wj.qq.com/s2/{survey_id}/{hash}
6. 可选:调用 get_survey 确认问卷结构
更新问卷题目
1. 调用 get_survey(survey_id=...) 获取问卷详情
2. 从返回的 pages → questions 中找到目标题目的 id(格式如 q-1-xxxx)
3. 参考返回的 text 字段了解当前问卷的 DSL 格式
4. 按 DSL 语法编写新的题目文本(只写这一道题)
5. 调用 update_question(survey_id=..., question_id=..., text=...) 更新
6. 可选:再次调用 get_survey 确认更新结果
查看问卷回答
1. 调用 list_answers(survey_id=...) 获取首页回答
2. ⚠️ 注意翻页:如果 list.length == per_page,可能还有下一页:
- 将返回的 last_answer_id 作为下一次请求的参数
- 继续调用 list_answers(survey_id=..., last_answer_id=...)
- 直到 list.length < per_page 表示已到最后一页
3. 解析每条回答的 answer 字段(嵌套结构:页面 → 题目回答)
4. 向用户展示回答汇总或详情
文本语法速查(create_survey / update_question)
基础结构
问卷标题
问卷引导语(可选)
题目标题[题型](描述)
选项/内容
- 第一行为问卷标题(仅 create_survey 需要)
- 题目之间用空行分隔
=== 分页 === 插入分页符
题型语法
| 题型 | 语法 |
|---|
| 单选题 | 标题[单选题]\n选项A\n选项B |
| 多选题 | 标题[多选题]\n选项A\n选项B |
| 下拉题 | 标题[下拉题]\n选项A\n选项B |
| 排序题 | 标题[排序题]\n选项A\n选项B |
| 单行文本题 | 标题[单行文本题] |
| 多行文本题 | 标题[多行文本题] |
| 多项填空题 | 标题[多项填空题]\n填空1:____ |
| 量表题 | 标题[量表题]\n1~5 |
| 日期时间题 | 标题[日期时间题] |
| 附件题 | 标题[附件题] |
| 段落说明 | 描述内容[段落说明] |
| 矩阵单选题 | 标题[矩阵单选题]\n选项A 选项B\n子问题1\n子问题2 |
| 矩阵量表题 | 标题[矩阵量表题]\n1~5\n子问题1\n子问题2 |
| 联动题 | 标题[联动题]\n第一层 第二层\n答案A+子答案A1\n答案B+子答案B1 |
题目设置
考试场景专用(scene=3)
| 设置 | 语法 |
|---|
| 答案 | [答案:A、B] |
| 分值 | [分数:5] |
| 全部正确得分 | [全部] |
| 部分正确得分 | [部分] |
| 人工评分 | [人工] |
额外题型:[判断题]、[不定项选择题]、[问答题]
测评场景专用(scene=6)
选择题用 [测评单选题]、[测评多选题] 替代普通题型。
注意事项
- title 可能含 HTML 标签:
get_survey 返回的 title 可能含 <p>、<br> 等,展示前需清理
- text 参数格式:JSON 中换行使用
\n,选项不需要字母前缀(写 满意 而非 A. 满意)
- 题目内不允许空行:一道题的标题和选项之间不能有空行
- update_question 需先获取 question_id:必须先调用
get_survey,不能自行构造
- list_answers 需要翻页:超过
per_page 条时必须循环调用
- 非幂等写操作:
create_survey 每次调用都会创建新问卷,update_question 会覆盖原题目
错误速查
| 错误码 | 说明 | 解决方案 |
|---|
missing_token | 未携带 Token | 检查 MCP 配置中的 Authorization header |
invalid_token | Token 不存在或已撤销 | 重新获取 Token |
token expired | Token 已过期 | 重新授权 |
claim_error | 问卷不属于当前团队 | 确认问卷 ID 与 Token 绑定的团队一致 |
invalid_text_format | 文本格式错误 | 检查 DSL 语法 |
survey_not_editable | 问卷不可编辑 | 问卷可能在回收中,需先暂停 |