splitforms.com
← Back to the journal

Best MCP Servers for Building Forms with AI Agents (2026)

Compare 2026 MCP servers for form creation and submissions: SplitForms, Tally, Typeform, Jotform, Airtable, Notion, Zapier, and n8n.

Start free — 500 submissionsSee pricing →No card, no time limit. Pro is $5/mo.
Short answer
An MCP server for forms lets an AI agent create forms and read submissions through typed tool calls instead of scraped docs. Best pick for agents that write your HTML: splitforms — 12 tools at https://splitforms.com/api/mcp, bearer-token auth, free on every plan. Best hosted builders with first-party servers: Tally (free), Typeform, Jotform. Airtable and Notion cover the destination side; Zapier and n8n reach everything else.
Try it on your own form

Point any HTML form at one endpoint. 500 free submissions — no card, no time limit — and unlimited forms.

Create free account

What "MCP server for forms" means

An MCP server for forms is an HTTP (or local stdio) endpoint that speaks the Model Context Protocol and exposes a form product's operations as tools with JSON schemas: create_form, list_submissions, create_webhook, and so on. The AI host — Claude Code, Cursor, Claude Desktop, Windsurf, ChatGPT — reads the schemas once and then calls tools like local functions, with your credentials living in a config file the model never quotes back.

The category splits in two. Form builders (Tally, Typeform, Jotform) give the agent a hosted form or embed to hand you. Form backends (splitforms) give the agent an access key and a POST endpoint so it can write the form markup itself into your React, Next.js, Astro, or plain HTML project. If an agent is already editing your codebase, the second kind is the one that fits — see AI agent form backend for the longer argument.

What an agent can actually do with one

With the splitforms server connected, an agent can call 12 tools; every one is scoped to the account that owns the token, and all of them work on the Free plan. The table is taken from the server's live tool catalog.

ToolWhat the agent can do with itPlan
get_access_keyReturns the account's public form access_key and the submit endpoint, so generated HTML posts to the right account.Paid
generate_formRenders ready-to-paste code for a template (contact, newsletter, waitlist, feedback, quote, bug, booking, job, event-rsvp, lead-magnet) in html, javascript, react, php, or curl, with the access_key pre-filled.Paid
create_formCreates a real form in the account with the exact fields you specify (text, email, tel, url, number, date, textarea, select, file) and returns its access_key, a WordPress shortcode, and paste-anywhere HTML.Paid
list_templatesLists every template id, title, description, category, and field list, for when the agent is unsure what to build.Paid
list_submissionsReturns the most recent submissions (default 10, max 50) with id, timestamp, unread flag, data, and referrer.Paid
get_submissionReturns one submission by UUID: every field, IP, user agent, referrer, spam flag, and timestamp.Paid
create_webhookSaves an outbound webhook to a public HTTPS URL, account-wide or scoped to one form. The signing secret is never returned to the agent.Paid
list_formsLists every form with id, name, access_key, active state, company label, and creation date.Paid
get_formReturns one form's saved field schema, notification subject template, auto-responder state, and email-notification mode.Paid
update_formRenames a form, sets the subject template, toggles the auto-responder and its copy, switches notifications on/off/fallback, or pauses/resumes it. Recipient addresses are dashboard-only.Paid
get_usageReports the plan, this month's submission count against the monthly limit, and file-storage use against the cap.Paid
test_webhookFires a sample submission at a saved webhook and returns the destination's HTTP status.Paid

Four bundled prompts sit on top of the tools: build_form (describe a form, get it created and paste-ready), add_form_to_site (detect the framework and insert the form), triage_inbox (summarize and rank recent submissions), and connect_webhook (wire submissions to Slack, Discord, a CRM, or Make/Zapier/n8n, then test delivery). In Claude Code they appear as /mcp__splitforms__build_form and so on. The full tool reference is on the MCP page and in the docs.

The ranking: 9 MCP servers for forms

Ranked by how much of the form job the agent can finish without you leaving the editor. Every entry below splitforms was checked against the vendor's own site or the community repository on September 6, 2026; the kind label says whether the server is first-party, community-built, or a generic automation layer that happens to reach form tools.

#1

splitforms

Native vendor server

The only entry here that is a form backend rather than a form builder: the agent creates a form, gets an access_key, and writes a plain <form> or fetch() that POSTs to https://splitforms.com/api/submit — no vendor embed, no iframe. Twelve tools cover create, read, update, usage, and webhooks; four bundled prompts (build_form, add_form_to_site, triage_inbox, connect_webhook) script the common flows. Deletes are deliberately not exposed.

Endpoint
https://splitforms.com/api/mcp (streamable HTTP, JSON-RPC 2.0)
Auth
Bearer token (starts with lim_) generated at Dashboard → MCP; revocable
Best for
Agents that write the front-end themselves (Claude Code, Cursor, Windsurf, Continue) and need a POST endpoint, spam filtering, email, and webhooks behind it.
Caveat
The MCP server is available on every plan, including Free — generate a token at Dashboard → MCP and connect. Plan limits still apply to what the tools touch: Free covers 500 submissions total with unlimited forms; Pro at $5/month raises that to 5,000 a month and adds signed webhooks; Annual is $49/year for 15,000 a month.

splitforms MCP page · Pricing · Start free

#2

Tally

Native vendor server

Tally's own server, free on every Tally plan, with 20+ tools for creating and editing forms, managing workspaces, and pulling submissions. Tally documents a guardrail that stops the agent deleting forms or submissions.

Endpoint
https://api.tally.so/mcp (HTTP)
Auth
OAuth on first connect; Claude Code: claude mcp add tally --transport http https://api.tally.so/mcp
Best for
Teams that want a hosted, no-code form UI the agent can build and edit, and are happy to embed Tally rather than own the markup.
Caveat
You get a Tally form (hosted page or embed), not a POST endpoint for your own HTML.

Vendor / repo page

#3

Typeform

Native vendor server

Exposes form and automation building, contact management, and response analytics over MCP. Available as a connector in the Claude and ChatGPT directories or as a custom URL in any MCP client.

Endpoint
https://api.typeform.com/mcp (streamable HTTP)
Auth
OAuth 2.0, prompted on first connect
Best for
Conversational, one-question-at-a-time surveys and marketing forms where the Typeform experience is the point.
Caveat
Typeform is a builder with its own pricing; check the plan page for response caps before wiring an agent to it.

Vendor / repo page

#4

Jotform

Native vendor server

Official, vendor-maintained server documented with tools for form_list, create_form, edit_form, create_submission, and get_submissions. Jotform states the server is available at no additional charge.

Endpoint
https://mcp.jotform.com
Auth
OAuth 2.0; clients managed at Account → Connected Apps → Jotform MCP
Best for
Long, multi-page forms with payments, PDFs, or approval flows already living in Jotform.
Caveat
Same trade-off as Tally and Typeform: the output is a Jotform-hosted form or embed, not your own markup.

Vendor / repo page

#5

Airtable

Native vendor server

Airtable's official hosted server lets an agent scaffold bases, create and update records, and build interfaces and automations. An Airtable form is a view on a table, so the agent can stand up the destination and the form in one go.

Endpoint
https://mcp.airtable.com/mcp
Auth
Vendor-managed connection; included with the existing Airtable plan, counts against API rate limits
Best for
When the submissions need to land in a relational base the rest of the team already works in.
Caveat
Not a form backend for your own HTML — to post from a custom site you still need an endpoint (or a splitforms webhook into Airtable).

Vendor / repo page

#6

Notion

Native vendor server

Notion's official server exposes search, fetch, create-pages, update-page, create-database, and comment tools. It is a destination for form data rather than a form tool, but agents use it to build the intake database the form feeds.

Endpoint
https://mcp.notion.com (hosted); open-source local server on GitHub
Auth
OAuth
Best for
Teams whose CRM or intake tracker is a Notion database.
Caveat
No submit endpoint of its own; pair with a form backend that can webhook into Notion.

Vendor / repo page

#7

Zapier MCP

Generic automation MCP

Not a form product, but Zapier publishes app-specific MCP pages for Google Forms, Gravity Forms, Formidable, Fillout, Zoho Forms, and Cognito Forms, so an agent can reach those tools' actions through one server.

Endpoint
Per-user Zapier MCP server URL; tools are chosen per client
Auth
Zapier account; each connected app authorizes separately
Best for
Reaching a form tool that has no native MCP server, or chaining form events into 30,000+ other actions.
Caveat
Actions run through Zapier's task metering, and the agent sees Zapier's abstraction of each app rather than the vendor's full API.

Vendor / repo page

#8

n8n (MCP Server Trigger node)

Self-hosted

n8n's MCP Server Trigger turns any workflow into an MCP tool. A webhook-driven form workflow — receive, validate, store, notify — becomes something an agent can call or inspect.

Endpoint
Test and production URLs generated by the node; SSE and streamable HTTP
Auth
Bearer or header auth configured on the node
Best for
Teams already running n8n who want the agent to drive their own form pipeline instead of a vendor's.
Caveat
You build and host the tools yourself; nothing about forms is provided out of the box.

Vendor / repo page

#9

Google Forms and Fillout (community servers)

Community / third-party server

Neither Google nor Fillout publishes a first-party MCP server that we could find. Community servers exist for both — matteoantoci/google-forms-mcp and KamaruSama's Google Forms server (19 tools), danielma-tic/fillout-mcp-server for Fillout — plus hosted wrappers from Zapier, Pipedream, and Composio.

Endpoint
Local stdio servers from GitHub; also via Zapier, Pipedream, Activepieces, Composio
Auth
Google OAuth refresh token (Google Forms); Fillout API key or OAuth depending on the server
Best for
Existing Google Forms or Fillout estates where switching tools is not on the table.
Caveat
Unofficial: maintenance, scopes, and security are on you. Read the code before handing it a token.

Vendor / repo page

When not to use splitforms: if you need a visual builder, conditional logic between questions, payments inside the form, or a hosted form page you never embed, pick Tally, Typeform, or Jotform. splitforms is for forms whose markup you or your agent own.

Checked and left out

Two candidates were searched and omitted because we could not find a first-party MCP server. Formspree publishes agent instructions at formspree.io/ai — the agent fetches a page and follows a claim-URL flow — which is useful but is not MCP. Fillout is reachable only through community and third-party servers (danielma-tic on GitHub, Zapier, Pipedream, Composio), so it is folded into entry #9 rather than ranked on its own. If either ships a native server, this list will be updated.

Setup: connect the splitforms MCP server

The server lives at https://splitforms.com/api/mcp and authenticates with Authorization: Bearer <mcp_token>. Generate the token at Dashboard → MCP (it starts with lim_ and is shown once); the dashboard renders the same snippets below with your token filled in. The token is a secret — unlike the public form access_key — so keep it in the MCP config, never in app code.

Claude Code

claude mcp add --scope user --transport http splitforms \
  "https://splitforms.com/api/mcp" --header "Authorization: Bearer YOUR_MCP_TOKEN"

Restart Claude Code and run /mcp to confirm splitforms is connected.

Cursor

Save as ~/.cursor/mcp.json (or ./.cursor/mcp.json per project), then restart Cursor and check Settings → MCP.

{
  "mcpServers": {
    "splitforms": {
      "url": "https://splitforms.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_TOKEN"
      }
    }
  }
}

Windsurf

Save as ~/.codeium/windsurf/mcp_config.json. Note the key is serverUrl, not url.

{
  "mcpServers": {
    "splitforms": {
      "serverUrl": "https://splitforms.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_TOKEN"
      }
    }
  }
}

Claude Desktop

Claude Desktop's claude_desktop_config.json launches local stdio servers, so bridge to the HTTP endpoint with the community mcp-remote package. The dashboard does not ship a Claude Desktop tab yet; this is the standard pattern for any remote server that uses a bearer header.

{
  "mcpServers": {
    "splitforms": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://splitforms.com/api/mcp",
        "--header", "Authorization: Bearer ${SPLITFORMS_MCP_TOKEN}"
      ],
      "env": { "SPLITFORMS_MCP_TOKEN": "YOUR_MCP_TOKEN" }
    }
  }
}

Continue.dev is also documented in the dashboard. Any other client that supports streamable HTTP with custom headers works the same way. The endpoint is a single JSON-RPC 2.0 route: initialize, tools/list, tools/call, prompts/list, prompts/get, ping; batches of up to 25 requests are accepted.

Worked example: build_form → create_form → create_webhook → list_submissions

The whole flow is four tool calls, and the agent runs it from one prompt. Start with the bundled prompt (in Claude Code it is a slash command; in Cursor it appears in the prompt picker):

/mcp__splitforms__build_form
description: "quote request form for a landscaping company: name, email,
phone, service (lawn care / hardscaping / tree removal), project details"

The prompt compiles to instructions telling the agent to call list_templates first and use generate_form if a template matches, otherwise create_form with the exact fields. A quote form with a select does not match a template, so the agent sends this tools/call:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_form",
    "arguments": {
      "name": "Quote request",
      "fields": [
        { "label": "Full name", "type": "text", "required": true },
        { "label": "Email", "type": "email", "required": true },
        { "label": "Phone", "type": "tel" },
        { "label": "Service", "type": "select",
          "options": ["Lawn care", "Hardscaping", "Tree removal"], "required": true },
        { "label": "Project details", "type": "textarea", "required": true }
      ]
    }
  }
}

name on each field is optional — the server derives full_name from "Full name" — and type defaults to text. The server inserts the form, then returns a text result the agent can paste straight into your project:

Created form "Quote request" with 5 fields — it's live in the splitforms.com dashboard.

access_key: 1f3c9e2a-…

WordPress shortcode (with the splitforms plugin):
[splitforms access_key="1f3c9e2a-…"]

Paste-anywhere HTML:
<form method="POST" action="https://splitforms.com/api/submit">
  <input type="hidden" name="access_key" value="1f3c9e2a-…">
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1">
  <label for="full_name">Full name *</label>
  <input id="full_name" type="text" name="full_name" required>
  <label for="email">Email *</label>
  <input id="email" type="email" name="email" required>
  <label for="phone">Phone</label>
  <input id="phone" type="tel" name="phone">
  <label for="service">Service *</label>
  <select id="service" name="service" required><option value="">Choose…</option><option>Lawn care</option><option>Hardscaping</option><option>Tree removal</option></select>
  <label for="project_details">Project details *</label>
  <textarea id="project_details" name="project_details" rows="4" required></textarea>
  <button type="submit">Send</button>
</form>

The botcheck checkbox is the honeypot the submit endpoint checks on every plan; the agent will usually adapt the markup to your stack (a fetch() handler in React or Next.js) while keeping the field names. Next, route submissions somewhere. create_webhook needs a public HTTPS URL and optionally a form_id from list_forms; Slack and Discord incoming-webhook URLs are auto-detected and formatted for those apps:

// create_webhook — scoped to the new form
{ "name": "create_webhook",
  "arguments": { "url": "https://hooks.slack.com/services/T000/B000/xxxx",
                 "label": "Slack #leads", "form_id": "<id from list_forms>" } }

// → result
{ "ok": true,
  "webhook": { "id": "wh_…", "label": "Slack #leads", "flavor": "slack",
               "scope": { "type": "form", "form_id": "…" }, "is_active": true } }

// test_webhook
{ "name": "test_webhook", "arguments": { "id": "wh_…" } }
// → { "ok": true, "webhook_id": "wh_…", "status": 200 }

Finally, after a real visitor submits, the agent (or the triage_inbox prompt) reads the inbox:

{ "name": "list_submissions", "arguments": { "limit": 5 } }

// → result
Showing 2 most recent submissions:

[
  {
    "id": "6b1e…",
    "when": "2026-09-06T14:02:11.000Z",
    "unread": true,
    "data": { "full_name": "Dana R.", "email": "[email protected]",
              "service": "Hardscaping", "project_details": "Patio, ~400 sq ft" },
    "from": "https://example-landscaping.com/quote"
  },
  { "id": "5a90…", "when": "2026-09-06T09:41:50.000Z", "unread": false, "data": { … }, "from": "Direct" }
]

get_submission with one of those ids adds the IP, user agent, and spam flag. Webhook payload details — including the files[] array with signed download URLs — are on the form-to-webhook page and in the API reference.

FAQ

What is an MCP server for forms?

An MCP server for forms is a Model Context Protocol endpoint that exposes a form product's operations — create a form, read submissions, add a webhook — as typed tools an AI agent can call. Instead of pasting API docs into a chat, the agent reads the tool schemas and calls them directly. splitforms, Tally, Typeform, Jotform, Airtable, and Notion all publish first-party servers as of September 2026.

Which MCP server should I use if the agent writes my HTML?

splitforms. It is the only server in this list that returns a POST endpoint (https://splitforms.com/api/submit) plus an access_key for your own markup; the others return a hosted form or embed. The create_form tool hands back paste-anywhere HTML, and generate_form renders react, javascript, php, or curl variants.

Is the splitforms MCP server free?

Yes. The MCP server works on the Free plan — 500 submissions total, unlimited forms, no card. Pro is $5/month for 5,000 submissions a month and adds signed webhooks; Annual is $49/year for 15,000 a month. Nothing about connecting an agent requires upgrading.

Which MCP server for forms is free?

Tally's server is free on every Tally plan, and Jotform says its server carries no additional charge on top of a Jotform account. Airtable includes MCP with the existing plan. Community Google Forms servers are free to run but unofficial. splitforms MCP is included on every plan, including Free.

Can Claude Code or Cursor create a contact form through MCP?

Yes. With the splitforms server connected, the build_form prompt walks the agent through list_templates or create_form, and add_form_to_site has it detect your framework and insert a form that POSTs to https://splitforms.com/api/submit with the access_key and a botcheck honeypot. Tally, Typeform, and Jotform servers can also create forms, but the result lives on their hosted pages.

Does Formspree have an MCP server?

Not that we could find as of September 2026. Formspree publishes agent instructions at formspree.io/ai that a coding agent fetches and follows, which is a different mechanism from MCP. If your agent needs typed form tools, use one of the servers above.

What can't an agent do through the splitforms MCP server?

Delete forms or submissions, change notification recipient addresses, or touch billing. Those stay in the dashboard on purpose. Webhook signing secrets are never returned to the agent either — test_webhook verifies delivery without exposing them.

When should I not use splitforms for agent-built forms?

When you need a visual drag-and-drop builder, conditional logic between questions, payments inside the form, or a hosted form page you never embed. Tally, Typeform, and Jotform cover those. splitforms is for forms whose markup you (or your agent) own.

Next steps

Have the agent add the form to a specific stack: Next.js, React, or Astro. Site built by an AI tool with a form that does nothing on submit? Read how to add a contact form to a site built with Claude, Cursor, Lovable, v0, or Bolt. Per-tool walkthroughs: Claude Code, Cursor. Not on an MCP host? The ChatGPT form backend and AI form generator cover the same endpoint without a protocol, and the contact form API page documents the POST itself.

Related articles

More practical guidance from guides.

Browse the journal →
Tutorials

Give Claude Code a Form Backend via MCP (2026 Walkthrough)

Connect the splitforms MCP server to Claude Code so the agent can create forms, read submiss…

10 min readRead →
Guides

Elementor Form Not Sending Email? 5 Fixes That Work (2026)

Why Elementor form notifications never arrive: the wp_mail root cause, how to confirm it in…

8 min readRead →
Guides

Why mailto: Doesn't Work as a Form Action (and What to Use Instead)

Using action="mailto:[email protected]" opens the visitor's mail app instead of sending anythi…

6 min readRead →

Explore this topic

Start with the overview, then move into focused guides.

OverviewWhat Is a Form Backend? (Complete Guide)Start here →GuideSelf-Hosted vs SaaS Form BackendRead →GuideForm Backend vs Form BuilderRead →GuideWhere Do Form Submissions Go?Read →ReferenceForm backend guideOpen →

Building forms with ChatGPT, Claude, Cursor, or v0? Connect the native MCP server and give your agent a production form backend.

Explore the MCP server →

Give your form a production backend.

One endpoint adds delivery, spam filtering, storage, and integrations. Start with 500 free submissions — no card, no time limit.

Create free accountRead the docs →
Secure checkoutSSL encryptionPrivacyProtected
VISAAMERICANEXPRESSstripe