ClaudeとTypeform MCPを連携してフォームを作り回答を分析する
Typeform公式のMCPサーバー(api.typeform.com/mcp)をClaudeにつなぎ、フォームの作成と公開、回答の集計までを会話で進める手順と、編集の流れ・つまずきどころを扱います。
TypeformのMCPサーバーをClaudeにつなぐと、フォームの作成・編集・公開と、集まった回答の集計を会話で進められます。接続先は https://api.typeform.com/mcp で、認証はOAuth 2.0です。
注意点は、検証用のサンドボックスがないことです。公開したフォームも削除した連絡先も本物のアカウントに反映されます。この記事では、接続の手順、フォーム編集の4段階の流れ、回答分析の頼み方、つまずきやすい点を順に扱います。
Typeform MCPサーバーでできること
Typeformの開発者向けページは、サーバーが公開する機能を4つの領域に分けています。ツール名は領域ごとの接頭辞で見分けます。
| 領域 | できること | ツール名の接頭辞 |
|---|---|---|
| フォーム | できることフィールド・ロジックの作成と編集、公開 | ツール名の接頭辞forms-* |
| オートメーション | できることメール・Webhook・待機・連携ステップを持つ処理の作成と公開 | ツール名の接頭辞automations-* |
| コンタクト | できること連絡先とリストの管理(一括の追加更新、フォーム項目との対応づけを含む) | ツール名の接頭辞contacts-* |
| 回答分析 | できること生の回答データ、集計、ランキング、時系列 | ツール名の接頭辞insights-* |
個々のツールの完全な一覧は、Typeform側の「Supported tools」ページにあります。
見落としやすいのが、フォーム回答を受けて何かを実行する処理の置き場です。開発者向けページには、フォーム回答への反応はフォームではなくオートメーションの領域だという趣旨の注意書きがあります。通知メールや外部への送信を頼むときは、automations-* の領域の話になります。
なお、このページの冒頭には「自分でAIクライアントから使うだけなら、開発者向けのドキュメントは不要」という趣旨の注記があります。ユーザー向けの案内は別の手順ページにあり、Claudeのネイティブなコネクタにも触れています。
Claudeに接続する手順
接続方法は使う面によって3通りあります。いずれも先にTypeformのアカウントが必要です。
claude.aiとClaude Desktopでカスタムコネクタとして追加する
Claudeのコネクタ画面には、リモートMCPサーバーのURLを入れて追加する「カスタムコネクタ」の入口があります。サポート記事によると、カスタムコネクタはFree・Pro・Max・Team・Enterpriseの各プランで使え、Freeは1つまでです。TeamとEnterpriseでは、組織への追加はOwnerなど限られた役割だけが行います。
URLを指定して追加する流れ
- 1
コネクタ画面を開く
claude.aiのCustomizeからConnectorsを開きます。
- 2
カスタムコネクタを追加する
「+ Add」から「Add custom connector」を選び、URLに
https://api.typeform.com/mcpを入れてContinueを押します。 - 3
Typeformでログインして許可する
ブラウザーが開き、TypeformのOAuth画面が表示されます。付与する権限を確認して許可します。
Typeformのページには、Claudeのネイティブなコネクタからも使えるという案内があります。Claudeのコネクタ一覧に載っていれば、URL入力なしで選べます。一覧に見当たらない環境では、上のカスタムコネクタの手順で同じサーバーにつながります。
Claude Codeから追加する
Claude CodeはリモートのHTTPサーバーを claude mcp add で登録します。TypeformのサーバーはストリーミングHTTPだけに対応しているので、トランスポートは http を指定します。
claude mcp add --transport http typeform \
https://api.typeform.com/mcp登録後はセッション内で /mcp を開き、typeformを選んでOAuthの認証を済ませます。複数のプロジェクトで使うなら --scope user を付けると、ユーザー単位の設定として保存されます。claude.aiのアカウントでログインしているClaude Codeには、claude.aiで追加済みのコネクタが自動で引き継がれます。Claudeの画面で先に追加しておけば、この登録は不要です。
SSEで設定しているクライアントは失敗する
Typeformのサーバーは、新しいストリーミングHTTPだけに対応し、SSEのエンドポイントを持ちません。SSEで設定されたクライアントは接続に失敗します。「接続がすぐ失敗する」ときの第一候補はここです。
接続したら最初に起きること
OAuthの許可画面では、付与する権限を選べません。開発者向けページは「ユーザーはスコープをカスタマイズできず、すべてのスコープを許可して接続する」と書いています。読み取りだけ許したい、という使い方は取れない構成です。
接続後の最初の呼び出しは、アカウント一覧の取得(accounts-list_accounts)です。ほとんどのツールが account_id を必要とし、その値はこのツールが返します。初回のつまずきで最も多いのは、アカウントIDなしの呼び出しが失敗するケースです。
複数のアカウントに属している場合、一覧には名前・役割(owner、admin、member)・地域が並びます。Claudeに黙って選ばせず、どのアカウントで作業するかを最初のプロンプトで指定しておくと安全です。操作先を間違えると、後から気づきにくいためです。
Typeformのアカウント一覧を出して、「Acme US」で作業して。
以降のフォーム作成は、公開せず下書きまでにして。地域にも注意が要ります。Typeformは地域ごとにMCPのエンドポイントを持ちます。
| アカウントの所在 | MCPエンドポイント |
|---|---|
| 既定 | MCPエンドポイントhttps://api.typeform.com/mcp |
| EUデータセンター1 | MCPエンドポイントhttps://api.eu.typeform.com/mcp |
| EUデータセンター2 | MCPエンドポイントhttps://api.typeform.eu/mcp |
EUのデータ保管はEnterpriseプランの機能です。2つのEUエンドポイントは互換ではなく、api.typeform.eu は発行者も署名鍵も別のスタックなので、片方で発行されたトークンはもう片方では使えません。「一部のユーザーだけ失敗する」ときは、アカウントの地域を疑います。
フォームを作る流れは4段階
Typeformのフォーム編集は、差分(パッチ)を当てる方式で、検証が必須の段階として組み込まれています。一括で書き換えるのではありません。
フォーム編集の4段階
- 1
使える部品を調べる
forms-public_get_capabilitiesで、使えるフィールドの種類・ブロック操作・ロジックの演算子を取得します。セッション内では不変で、キャッシュしてよいとされています。 - 2
変更を検証する
forms-public_validate_patchが、保存せずに変更案を下書きに対して検証し、validation_tokenを返します。 - 3
下書きに反映する
forms-public_patch_formがvalidation_tokenを要求し、変更を下書きに保存します。 - 4
公開する
forms-public_publish_formで下書きを公開します。
注目すべきは、patch_form が公開しない点です。保存されただけでは、回答者にフォームの変更は見えません。逆に言えば、Claudeに「作って」と頼んだだけで公開まで進むことはなく、公開は別の明示的な操作です。開発者向けページも、ユーザーが明示的に頼んだときだけ公開するよう求めています。
題名だけの変更は forms-public_update_form_metadata で、パッチ操作なしに行えます。デザインの適用は専用ツールでなくパッチ操作の set_theme で、themes-public_list_themes でテーマIDを引き、同じ検証の流れに載せます。
頼み方の例を示します。一度に公開まで頼まず、下書きの確認を挟みます。
従業員向けの満足度調査を作って。
- NPSの設問(0〜10)を1問目に
- 自由記述を2問目に(任意)
- 部署の選択式を3問目に
下書きまで進めて、公開はしないで。作った項目を一覧で見せて。この頼み方なら、Claudeが検証から下書き保存まで進め、中身をあなたが確かめてから公開を頼む流れになります。Tallyのコネクタでも下書きと公開の境目が焦点になります。詳しくはClaudeとTallyの連携にあります。
落とし穴
検証トークンなしの保存は拒否される
patch_form は、検証済みの validation_token がなければ拒否されます。古いトークンでも同じです。Claudeが途中で変更案を作り直したときは、再度 validate_patch を通る必要があります。拒否されたときは「先に検証を通して」と頼めば解消します。
回答を分析させる
回答の読み取りは insights-* のツール群が担います。使い分けは次のとおりです。
| ツール | 向く質問 |
|---|---|
insights-public_discover | 向く質問最初に必ず呼ぶ。そのフォームで問い合わせられる項目・指標・切り口を返す |
insights-public_aggregate | 向く質問件数・合計・平均・NPSなど |
insights-public_toplist | 向く質問上位N件やランキング(1つか2つの切り口で分ける) |
insights-public_timeseries | 向く質問時間帯から年までの時系列(最大2つの内訳つき) |
insights-public_list | 向く質問1つの項目の行単位のデータ |
discover が必須なのは、フィールドIDがフォームごとに違うからです。IDを推測した分析クエリは拒否されます。絞り込みは、設問への回答、隠しフィールド、タグ、回答の種別などで条件を組み合わせられます。
分析の頼み方は、集計したい指標と切り口を言葉にするのが近道です。
先月のNPSを週ごとに出して。
低評価(0〜6)の回答だけ、自由記述の傾向を3つにまとめて。前半は時系列の集計、後半は絞り込みと行単位の読み取りで、Claudeが要約を担います。
限界も明記されています。回答の全行を一括で取り出す用途は、MCPではなくREST APIのResponses APIの領分です。大量のエクスポートをClaudeに頼むのでなく、集計や傾向の把握に使うのが想定された使い方です。
つまずいたときの切り分け
Typeformのテストページにある初回の問題表を、症状から引ける形に並べ直します。
接続や呼び出しが失敗するときの確認順
- Q接続が最初から失敗しますか?答えがいいえのとき答えがはい
クライアントがSSEで設定されています。ストリーミングHTTPに変えます。
- Q一部のユーザーだけ失敗しますか?答えがいいえのとき答えがはい
アカウントの地域が違う可能性があります。地域ごとのエンドポイントを確認します。
- QアカウントIDが足りないと言われますか?答えがいいえのとき答えがはい
アカウント一覧の取得を先に呼び、返ったIDを以降に渡します。
- Qフォームを直したのに回答者に見えませんか?答えがいいえのとき答えがはい
下書きに保存されただけです。公開の操作が要ります。
それでも解決しないとき
分析クエリの拒否は discover の未実行、トークンが途中で切れるのはリフレッシュトークンが発行されていない場合です。
トークンの途中切れは、offline_access を要求しなかったために、リフレッシュトークンが発行されないことで起きます。自作のコネクタを作る側の話で、Claudeの標準の接続画面を使う利用者は意識する場面が少ない項目です。
Typeformのサーバーには、モデル自身が呼ぶ submit_feedback ツールもあります。OAuthのスコープを必要とせず、アカウントのデータにも触れません。タスクが頼まれたとおりに完了できなかったとき、モデルが報告するよう設計されています。個人を特定する情報は求めず、追跡もしません。
使う前に決めておくこと
Typeform MCPは、書き込み系の操作もサンドボックスなしで本番のアカウントに届きます。次の3点を最初に決めておくと事故を減らせます。
- 試すアカウント: 壊れても困らないアカウント(開発者向けページの推奨)で慣れてから、本番に使う
- 公開の線引き: 下書きまではClaudeに任せ、公開は人が内容を見て頼む
- 作業先のアカウントと地域: 複数所属なら、会話の冒頭でアカウントを指定する
フォームの作成と回答分析をひとつの会話にまとめたいときに、このサーバーは向きます。会話型のフォームで入口から見直したいならClaudeとPerspective AIの連携も比べる価値があります。