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 で作成できるのは新しいアイテムのみです。既存のアイテムを更新することはできません。**これはプラットフォーム上の制約であり、スキルの制限ではありません。ユーザーが「チケットを更新できる」フォームや「既存のエントリーを編集できる」フォームを求めた場合は、別の方法を案内してください。新しい送信内容を、接続ボードの質問を使って既存のアイテムに関連付けることはできますが、フォームを送信すると、必ずフォームのボードに新しい行が作成されます。ステータス更新を目的とするフローには、別の方法(アイテム単位の更新フィールド、更新追跡用の別ボード、または参照情報を使って対象を検索し更新する自動化)を提案してください。

プランに関する注意事項

フォームは Free や Basic を含むすべての monday プランで利用できます。**WorkForms のブランド表示(「Powered by monday.com」)はデフォルトで表示され、Pro 以上のプランでのみ削除できます。**ユーザーからブランド表示の削除を求められた場合は、まずプランを確認するか、Free/Basic/Standard では updateAppearance に hideBranding: true を指定してもエラーなく失敗することを伝えてください。

ワークフロー:フォームを作成する

ステップ 1:送信先のワークスペースを確認する

フォームはワークスペース内に作成する必要があります。指定がない場合はユーザーに確認するか、ユーザーのメインのワークスペースを使用してください。選択が必要な場合は list_workspaces を呼び出します。create_form で必須となるパラメーターは、ワークスペース ID のみです。

ステップ 2:フォームの目的を決めてから、create_form を呼び出す

フォームの目的によって質問項目が決まります。よくある構成は次のとおりです。

  • **バグ報告:**タイトル、深刻度、環境、再現手順、スクリーンショットのアップロード、報告者のメールアドレス。
  • **機能リクエスト:**タイトル、説明、ユースケース、ビジネスへの影響、顧客数、リンク。
  • **リード獲得:**名前、仕事用メールアドレス、会社、役職、ここにたどり着いた経緯。
  • **イベント申し込み:**名前、メールアドレス、食事に関する要望、希望セッション。
  • **社内リクエスト:**依頼者、リクエストの種類(単一選択)、背景、期限、優先度。

次の項目を指定して create_form を呼び出します。

  • destination_workspace_id(必須)
  • destination_name(ボード名。省略時はフォームのタイトルが設定されます)
  • ボードを特定のフォルダーに配置する場合は、destination_folder_id または destination_folder_name
  • board_kind のデフォルトは public です。フォームの回答に機密情報が含まれる場合は private を使用してください

返された formToken を保存してください。以降の編集すべてで必要になります。

**create_form ではフォームのタイトルを指定できません。**バックボードの名前にのみ使われる destination_name に関係なく、フォームのヘッダーはデフォルトで「New Form」になります。ユーザーに URL を提示する前に、必ず action: "updateFormHeader" を指定した update_form を呼び出し、わかりやすいタイトル(必要に応じてサブタイトルや説明も)を設定してください。この手順を省略すると、WorkForms の UI 上ですべてのフォームが「New Form」と表示され、エンドユーザーにも、フォーム一覧を確認するフォーム所有者にも混乱を招きます。

ステップ 3:質問セットを作成する

質問ごとに、action: "create" を指定して form_questions_editor を使用します。フィールドの意図に応じて、質問の種類を決めます。

意図種類
自由記述、1 行ShortText
自由記述、複数行LongText
はい/いいえBoolean
1 つ選択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(1 画面につき 1 つの質問、[次へ]で移動)になります。Classic(すべての質問を 1 ページにスクロール表示)は、ほとんどの業務用フォームや社内フォームに適したデフォルトです。この選択肢は毎回提示してください。現時点では MCP 経由でレイアウトを変更できません(下記参照)。ユーザーを monday の UI の Form Settings -> Layout に案内してください。
  • 「フォーム URL を短くしますか?」
  • 「フォームにパスワードを設定しますか?」
  • 「このリンクを Slack チャンネルに送信しますか?」
  • 「送信数の上限または締切日を設定しますか?」
  • 「WorkForms のブランディングを削除しますか?(Pro+ のみ。)」

既知の MCP の制限事項:API 経由ではフォームのレイアウトを変更できません。 action: "updateAppearance" を指定した update_form は layout.format をエラーなしで受け付けますが、値は暗黙に無視され、フォームは OneByOne のままです。複数のパラメーターの組み合わせで確認済みです。API 呼び出しを試して成功したと報告してはいけません。変更は反映されません。フォームエディターの Form Settings -> Layout にユーザーを案内し、わかりやすい言葉で手順を説明してください。この制限事項は monday MCP チームに報告してください。

ワークフロー:既存のフォームを編集する

ステップ 1:formToken を特定する

ユーザーがフォーム URL を貼り付けた場合は、トークンを抽出します:https://forms.monday.com/forms/{TOKEN}?r=use1 → /forms/ と ? の間にある英数字の文字列が {TOKEN} です。

ユーザーがフォーム名を指定した場合は、searchType: "BOARD" を指定して search ツールで検索し、対応するボードを特定してから、候補のトークンを指定して get_form を呼び出します。(現在、MCP にはフォームを直接検索するツールがありません。フォームは対応するボード経由でアクセスできます。これがユーザーの作業を妨げる場合は、既知の制約として明示してください。)

ステップ 2:現在の状態を取得する

formToken を指定して get_form を呼び出します。質問、構成、外観、機能フラグが返されます。書き込みの前には必ず読み取ってください。パッチはマージ形式のため、コンテキストが不足すると更新に不具合が生じます。

ステップ 3:変更を適用する

適切なツールを選びます:

  • 質問を 1 つ追加/更新/削除する: form_questions_editor。
  • 質問を並べ替える: action: "updateQuestionOrder" と質問 ID の完全な順序付き配列を指定して update_form。
  • ヘッダー(タイトルと説明): action: "updateFormHeader" を指定して update_form。
  • ブランディング、レイアウト、色、ロゴ: action: "updateAppearance" を指定して update_form。
  • 送信ルール(匿名、回答数の上限、締切日、ログイン必須、CAPTCHA): action: "updateFeatures" を指定して update_form。
  • 有効化/無効化/URL の短縮/パスワードの設定: 対応するアクションを使用します。
ステップ 4:確認する

変更した内容、変更せずに維持した内容、フォーム URL を平易な言葉でまとめます。API 呼び出しについては説明しないでください。

よくある編集

最後に質問を追加する: action: "create" を指定して form_questions_editor を呼び出し、insert_after_question_id は指定しません。質問は末尾に追加されます。

既存の 2 つの質問の間に質問を挿入する: 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" でタイトルを明示的に設定してください。ユーザーが指定したフォーム名を使い、指定がない場合はフォームの用途(例:「バグ受付」)を使います。確認時にタイトルを伝えてください。
  • レイアウト: プラットフォームのデフォルトは OneByOne(質問ごとにカードを表示)です。多くの業務用フォームや社内フォームでは、Classic(スクロールする1ページ形式)の方が適しています。この点をステップ6の追加確認で提示し、OneByOne を暗黙に選ばないでください。現在、この選択は MCP からは設定できません。フォームエディターの Form Settings -> Layout を案内してください。
  • ブランディング: デフォルトでは WorkForms のブランディングを有効にしたままにしてください。自動で切り替えず、Pro+ で削除できることを追加の案内として伝えてください。

エラーの防止と対処

  • WorkForms では既存アイテムを更新できません。 依頼された場合は、アイテム更新用の内部フィールド、既存アイテムに紐づくコネクテッドボードの質問、または別の更新管理ワークフローを提案してください。プラットフォームがサポートしていない動作を約束しないでください。
  • フォーム URL で「form is not available」と表示される: フォームが無効化された、回答数の上限に達した、または終了日を過ぎた可能性があります。get_form で features の状態を確認してください。update_form の action: "activate" で再度有効にするか、回答数の上限を引き上げるか、終了日を延長してください。
  • updateQuestionOrder が呼び出しを拒否する: questions 配列には、既存のすべての質問 ID を含める必要があります。先に get_form を呼び出してすべての ID を列挙し、その後、順序を指定した完全なリストを送信してください。
  • updateQuestionOrder の後に PAGE_BLOCK の質問 ID が変わります。 プラットフォームは並べ替えのたびに、PAGE_BLOCK のセクション見出し質問の ID を再割り当てします(例:page_block__classic_default が page_block77dy0px4 になる)。updateQuestionOrder の直後に必ず get_form を呼び出し、次の編集前にキャッシュされた PAGE_BLOCK ID を更新してください。そうしないと、古い ID を参照する後続の form_questions_editor 呼び出しで 404 が発生します。
  • 選択肢の削除は破壊的な操作です: SingleSelect または MultiSelect を更新するときに既存の選択肢を省略すると、その選択肢は削除され、その選択肢を使っていた過去の回答に影響します。編集時は必ずすべての選択肢を送信してください。
  • hideBranding: true が反映されない: アカウントのプランが Pro 未満です。制約をユーザーに伝え、再試行しないでください。
  • 作成後に質問の種類は変更できません: 質問の種類を「変換」するには、削除して作り直します。元の質問に対する過去の回答は失われます。削除する前にユーザーの確認を取ってください。
  • existing_column_id: ユーザーが質問を特定のボード列に紐づけるよう明示的に求めた場合にのみ設定してください。それ以外の場合は、紐づけがすっきりするようフォームに列を自動作成させてください。

MCP UI ウィジェットを使う場合

show-table はデフォルトではなく、必要に応じて使ってください。

  • 公開前: 質問が5項目を超える場合は、show-table で紐づくボードを表示し、質問と列の対応を一目で確認できるようにしてください。項目数が少ない場合は、プレーンテキストでの要約の方が見やすくなります。
  • 公開後: ユーザーから「今週は何が届いた?」と尋ねられた場合は、紐づくボードに日付フィルターを適用して show-table で表示するのが適切です。有効化、無効化、単一質問の編集については、プレーンテキストで確認してください。

単一の編集を確認するために show-table を使わないでください。フォーム URL と一行の確認で十分です。

破壊的な操作は慎重に行う

次の操作を行う前に、必ず確認してください。

  • 過去に回答が送信された質問を削除する(データが失われます)。
  • 使用済みの選択肢を削除する(その選択肢に対する過去の回答が孤立します)。
  • 公開中のフォームを無効にする(既存のリンクが機能しなくなります)。
  • フォームの元となるボードを削除する(フォームも削除されます)。

質問を1つ作成する場合や、破壊的でない編集の場合は、追加の確認は不要です。ユーザーからすでに依頼されています。

使用するツール

  • list_workspaces - 指定されていない場合に、作成先のワークスペースを特定する
  • create_form - フォームとその元となるボードを作成する(formToken を返します)
  • get_form - formToken で現在のフォームの状態を取得する(編集前に必ず実行します)
  • update_form - ヘッダー、外観、アクセシビリティ、機能、質問の順序、タグ、有効化、パスワード、URL 短縮に対応する11個のアクション
  • form_questions_editor - 質問を1つ作成・更新・削除する
  • 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 を設定してください。AI による翻訳を生成するには、features.ai_translate.enabled: true と組み合わせてください。

コメント