mcpField
F
forms-builder

forms-builder

github.com/mondaycom生产力550 次安装1 周前更新
代码仓库

关于 forms-builder

forms-builder 是用于创建、编辑和发布 monday.com WorkForms 的技能,面向需要通过表单收集并整理提交内容的用户。它将每次提交映射为关联看板上的新项目,并说明表单配置与平台限制。

主要功能

  1. 01创建表单及关联看板
  2. 02添加多种类型的问题
  3. 03配置标题、外观和提交规则
  4. 04编辑问题、选项与顺序
  5. 05设置激活状态、密码和提交限制

适用场景

  1. 01收集错误报告或功能请求
  2. 02登记潜在客户或活动报名
  3. 03创建内部请求表单
  4. 04调整现有表单的问题和设置

MCP 相关

该技能通过 monday.com MCP 工具操作 WorkForms 和关联看板,包括创建、读取及更新表单。文档也指出表单布局目前无法通过 MCP 修改。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mondaycom/skills --skill forms-builder

安装后在 Claude Code 中输入/forms-builder确认已加载。

详细介绍

表单构建器

创建、编辑和发布 monday.com WorkForms。每个 WorkForm 都配有一个后端看板:每次提交表单都会在该看板上创建一个新项目,表单中的问题会映射到看板的列。表单是入口,看板是提交结果的去向。

核心限制——请先阅读

WorkForms 只能创建新项目,不能更新现有项目。 这是平台的硬性限制,并非技能限制。如果用户要求创建一个“让人们更新其工单”或“编辑现有条目”的表单,请引导他们改用其他方式:可以通过关联看板问题将新提交关联到现有项目,但提交表单始终会在该表单的看板上创建新行。对于状态更新类流程,建议采用其他方案(项目级更新字段、单独的更新跟踪看板,或根据引用信息查找并更新项目的自动化)。

计划层级说明

所有 monday 计划(包括 Free 和 Basic)都提供表单。WorkForms 默认显示品牌标识(“Powered by monday.com”),只有 Pro 及以上计划才能移除。 如果用户要求移除品牌标识,请先确认计划,或提醒他们:此操作需要使用 updateAppearance 和 hideBranding: true,并且在 Free / Basic / Standard 计划上会静默失败。

工作流:创建表单

步骤 1:确认目标工作区

表单必须位于某个工作区中。如果用户未指定,请询问,或使用用户的主工作区。需要选择时,请调用 list_workspaces。工作区 ID 是调用 create_form 时唯一必需的参数。

步骤 2:确定表单用途,然后调用 create_form

表单用途决定了问题集。常见类型包括:

  • Bug 报告: 标题、严重程度、环境、复现步骤、截图上传、报告者邮箱。
  • 功能请求: 标题、描述、使用场景、业务影响、客户数量、链接。
  • 潜在客户收集: 姓名、工作邮箱、公司、职位、如何得知我们。
  • 活动报名: 姓名、邮箱、饮食需求、场次偏好。
  • 内部请求: 请求者、请求类型(单选)、背景信息、截止日期、优先级。

调用 create_form 时传入:

  • destination_workspace_id(必需)
  • destination_name(看板名称;省略时默认为表单标题)
  • 如果用户希望将看板放在特定文件夹中,则传入 destination_folder_id 或 destination_folder_name
  • board_kind 默认为 public;如果表单回复包含敏感信息,则使用 private

保存返回的 formToken——后续每次编辑都需要用到它。

create_form 不接受表单标题参数。 无论 destination_name 是什么,表单标题栏默认都是“New Form”(destination_name 仅用于命名后端看板)。在向用户展示 URL 之前,务必在调用 create_form 后接着调用 update_form,并使用 action: "updateFormHeader" 设置有意义的标题(以及可选的副标题/描述)。如果跳过这一步,WorkForms 界面中的每个表单都会显示为“New Form”,这会让终端用户和浏览表单列表的表单所有者感到困惑。

第 3 步:构建问题集

对每个问题使用 form_questions_editor,并设置 action: "create"。根据字段的用途确定问题类型:

用途类型
单行自由文本ShortText
多行自由文本LongText
是/否Boolean
多选一SingleSelect(长列表设置 display: "Dropdown",短列表设置 Vertical)
多选多MultiSelect
数值Number
金额 / 数量 / 分数Number
日期Date
日期范围DateRange
电子邮件Email
电话Phone
Web URLLink
国家/地区Country
地址 / 地图点Location
文件上传File
评分(1-5)Rating
人员 / 负责人People
静态说明DISPLAY_TEXT
分区标题PAGE_BLOCK
已关联的现有项目ConnectedBoards
提交者姓名Name
评论 / 更新字段Updates
电子签名Signature

仅对确实会阻止提交的字段设置 required: true。必填项过多会降低回复率。

对于 SingleSelect 和 MultiSelect,必须设置 options。每个选项都需要一个 label 和一个稳定的 value。平台可能会在创建时将字符串 value 规范化为数字字符串("0"、"1"、"2"……),因此你发送的 value 仅供参考——创建后务必调用 get_form 读取规范化后的选项值,再进行任何后续编辑。表单收到实际提交后,不得更改规范化后的值;更改会破坏历史回复的数据完整性。

第 4 步:发布前向用户展示问题集

创建所有问题后,用 Markdown 表格或指向底层看板的 show-table 小组件对问题进行汇总。包含问题文本、类型和是否必填。激活表单前,请用户确认或编辑。

第 5 步:确认公开访问权限并分享

表单默认创建为已激活状态。create_form 返回后,表单 URL 即可使用。如果用户需要草稿状态(仍在调整问题),请立即调用 update_form 并设置 action: "deactivate",完成问题后再调用 activate。否则,直接分享 URL。表单 URL 格式如下:

https://forms.monday.com/forms/{formToken}?r=use1

回复中同时包含表单 URL 和底层看板 URL。用户两者都需要——表单用于分享,看板用于监控提交情况。

第 6 步:建议后续操作

最后提供 2-3 个后续操作建议:

  • “要我将布局从 OneByOne 切换为 Classic 吗?”——新表单默认使用 OneByOne(每个屏幕显示一个问题,通过“下一步”导航)。Classic(所有问题显示在同一可滚动页面上)更适合大多数运营和内部表单。每次都要提示用户选择。今天无法通过 MCP 更改布局(见下文);此建议是引导用户前往 monday UI 中的 Form Settings -> Layout。
  • “要我缩短表单 URL 吗?”
  • “要为表单设置密码吗?”
  • “要我将此链接发送到 Slack 频道吗?”
  • “要设置提交次数限制或关闭日期吗?”
  • “要移除 WorkForms 品牌标识吗?(仅限 Pro+。)”

已知 MCP 缺陷:无法通过 API 更改表单布局。 update_form 设置 action: "updateAppearance" 时,接受 layout.format 且不会报错,但该值会被静默忽略——表单仍保持 OneByOne。已通过多种参数组合确认。不要尝试调用 API 后声称操作成功;更改不会生效。请引导用户前往表单编辑器中的 Form Settings -> Layout,并用通俗易懂的语言指导操作。请与 monday MCP 团队跟进此问题。

工作流:编辑现有表单

步骤 1:解析 formToken

如果用户粘贴了表单 URL,请提取令牌:https://forms.monday.com/forms/{TOKEN}?r=use1 -> {TOKEN} 是 /forms/ 和 ? 之间的字母数字字符串。

如果用户说出了表单名称,请使用 search 工具并设置 searchType: "BOARD" 来查找关联的看板,然后针对任一候选令牌调用 get_form。(MCP 目前没有直接搜索表单的工具;表单可通过其关联的看板访问。如果这会阻碍用户操作,请将其标记为已知缺口。)

步骤 2:获取当前状态

使用 formToken 调用 get_form。它会返回问题、结构、外观和功能标志。写入前务必先读取——补丁采用合并式更新,缺少上下文会导致更新出错。

步骤 3:应用更改

选择合适的工具:

  • 添加 / 更新 / 删除单个问题:form_questions_editor。
  • **重新排序问题:**使用 action: "updateQuestionOrder" 和完整的问题 ID 排序数组调用 update_form。
  • **标题和说明:**使用 action: "updateFormHeader" 调用 update_form。
  • **品牌标识、布局、颜色、徽标:**使用 action: "updateAppearance" 调用 update_form。
  • **提交规则(匿名、回复上限、关闭日期、需要登录、验证码):**使用 action: "updateFeatures" 调用 update_form。
  • **激活 / 停用 / 缩短 URL / 设置密码:**使用对应操作。
步骤 4:确认

用通俗语言总结:更改了什么、保留了什么,以及表单 URL。不要叙述 API 调用过程。

常见编辑

**在末尾添加问题:**使用 action: "create" 调用 form_questions_editor,不要设置 insert_after_question_id。问题会追加到末尾。

**在两个现有问题之间插入问题:**调用 get_form 获取前一个问题的 ID,然后使用 insert_after_question_id: "<predecessor_id>" 创建问题。

**将字段设为必填:**使用 action: "update"、该问题的 id、现有 type 和 required: true 调用 form_questions_editor。更新时必须始终发送 type 字段。

**更新选择题选项,同时保留过去的回复:**先调用 get_form,将每个现有选项的 value 复制到更新中,然后只添加或修改标签。省略已有选项会将其删除。

**有条件地显示 / 隐藏问题:**在问题上使用 show_if_rules。规则支持 AND/OR 组合,条件可引用其他问题 ID 和答案值。

**重新排序问题:**使用 action: "updateQuestionOrder" 和完整的排序列表调用 update_form——必须包含每个现有问题 ID,即使顺序未变也要包含。完成重新排序后,调用 get_form 重新同步问题 ID——平台会在重新排序时重新分配任何 PAGE_BLOCK(分区标题)的 ID(例如,page_block__classic_default 会变为 page_block77dy0px4)。如果跳过重新同步,缓存的 PAGE_BLOCK ID 会在下次编辑时返回 404。

**使问题标题与列名称同步:**使用 action: "updateFeatures" 和 monday.syncQuestionAndColumnsTitles: true 调用 update_form。适用于用户编辑关联看板并希望表单同步更新的情况。

**移除 WorkForms 品牌标识(Pro+):**使用 action: "updateAppearance" 和 appearance.hideBranding: true 调用 update_form。

**关闭表单,不再接受新回复:**使用 action: "deactivate" 调用 update_form。使用 action: "activate" 重新激活。若要在指定日期关闭,请使用 updateFeatures,并设置 closeDate.enabled: true 和 closeDate.date: "<ISO timestamp>"。

**为表单设置密码保护:**使用 action: "setFormPassword" 和 formPassword: "<password>" 调用 update_form。请另行告知密码——它不会显示在表单 URL 中。

智能默认值

当用户未指定所有值时:

  • **表单名称和看板名称:**如果用户为表单指定了名称,则默认将其关联看板的名称设为相同名称。在回复中说明此默认值。
  • **工作区:**如果用户未提供工作区,只询问一次。不要猜测。
  • **必填标记:**默认为 false,但明显的主要标识符除外(潜在客户表单中的电子邮件、错误报告中的标题)。
  • **问题顺序:**按用户列出的顺序,从上到下排列。
  • **创建后表单是否处于启用状态:**是 - create_form 会返回一个已启用且可公开访问的表单。如果用户希望先预览,暂不接收回复,请立即调用 deactivate,并在准备就绪后重新启用。
  • 表单标题:create_form 默认将标题设为 "New Form"。创建后,务必通过 update_form action: "updateFormHeader" 显式设置标题——使用用户指定的表单名称(如果未提供,则使用表单用途,例如 "Bug Intake")。在确认信息中说明标题。
  • **布局:**平台默认布局为 OneByOne(每个问题单独显示在一张卡片上)。对于大多数运营类和内部表单,Classic(单页滚动)是更合适的默认选项——在第 6 步的后续跟进中说明,不要默默沿用 OneByOne。目前无法通过 MCP 设置此选项;请引导用户前往表单编辑器中的 Form Settings -> Layout。
  • **品牌标识:**默认保留 WorkForms 品牌标识;后续可告知用户,Pro+ 方案支持移除,不要自动切换设置。

错误预防和修复

  • **WorkForms 无法更新已有项目。**如果用户提出此类要求,请引导其改用内部项目更新字段、链接到已有项目的关联看板问题,或单独的更新跟踪工作流。不要承诺平台不支持的功能。
  • **表单 URL 显示 "form is not available":**表单可能已停用、已达到回复数量上限,或已超过关闭日期。检查 get_form 中的功能状态。调用 update_form action: "activate" 重新启用、提高回复数量上限,或延长关闭日期。
  • **updateQuestionOrder 拒绝调用:**问题数组必须包含所有已有问题 ID。先调用 get_form 并列出所有 ID,然后发送完整的排序列表。
  • **updateQuestionOrder 后 PAGE_BLOCK 问题 ID 会变化。**平台每次重新排序时都会为 PAGE_BLOCK 分节标题问题重新分配 ID(例如,page_block__classic_default 会变为 page_block77dy0px4)。调用 updateQuestionOrder 后,务必立即调用 get_form,并在下一次编辑前刷新所有缓存的 PAGE_BLOCK ID;否则,后续 form_questions_editor 调用引用旧 ID 时会返回 404。
  • **删除下拉选项会造成数据丢失:**更新 SingleSelect 或 MultiSelect 时,如果省略已有选项,该选项就会被删除,导致使用该选项的历史回复受到影响。编辑时务必发送所有选项。
  • **hideBranding: true 未生效:**该账户使用的方案低于 Pro。告知用户此限制;不要重试。
  • **创建后无法更改问题类型:**要“转换”问题类型,必须先删除再重新创建。原问题的历史回复会丢失。删除前请先征得用户确认。
  • **existing_column_id:**仅当用户明确要求该问题指向特定看板列时才设置。否则,让表单自动创建列,以保持配置简洁。

何时使用 MCP UI 小组件

选择性使用 show-table,不要默认使用:

  • **发布前:**当问题数量超过 5 个时,使用 show-table 显示关联看板,让用户能在一个视图中查看问题与列的对应关系。问题数量较少时,纯文本摘要更清晰。
  • **发布后:**如果用户询问“本周收到了哪些回复”,使用带日期筛选条件的 show-table 查看关联看板是合适的做法。启用、停用和单个问题编辑时,用纯文本确认。

不要使用 show-table 来确认单项编辑——提供表单 URL 和一句简短确认即可。

对破坏性操作保持谨慎

执行以下操作前,务必确认:

  • 删除已有提交的问题(数据会丢失)。
  • 删除已被使用的选择选项(该选项的历史回答会变成孤立数据)。
  • 停用面向公众的表单(现有链接会失效)。
  • 删除后备看板(也会删除表单)。

创建单个问题和非破坏性编辑无需额外确认——用户已经提出了请求。

使用的工具

  • list_workspaces - 未提供目标工作区时,查找目标工作区
  • create_form - 创建表单及其后备看板(返回 formToken)
  • get_form - 通过 formToken 读取当前表单状态(编辑前务必调用)
  • update_form - 包含 11 项操作,涵盖标题、外观、无障碍功能、功能、问题顺序、标签、激活状态、密码和 URL 缩短
  • form_questions_editor - 创建、更新或删除单个问题
  • search - 仅知道表单用途时,按名称查找后备看板
  • get_user_context - 未指定工作区时,回退到用户的主工作区
  • show-table(按需使用)- 显示后备看板,以供审查问题集或浏览回答

补充说明

  • formToken 是表单 URL 中的字母数字字符串:https://forms.monday.com/forms/{TOKEN}?r=use1。将其视为表单的主键。
  • 后备看板中的项目代表提交记录。编辑看板列不会编辑表单问题——表单端请使用 form_questions_editor。monday.syncQuestionAndColumnsTitles 功能标志有助于保持两者同步。
  • 要求登录的表单(features.requireLogin.enabled: true)会将提交权限限制为同一账户中的 monday.com 用户。
  • 对于多语言表单,通过 update_form 的 action: "updateAccessibility" 设置 accessibility.language。结合 features.ai_translate.enabled: true 可生成 AI 翻译。

评论

支持 Markdown