MCP Server Setup

formdata.dev exposes a Model Context Protocol (MCP) server that lets AI assistants manage your forms, destinations, and account directly. No dashboard needed.

Connection Details

Field Value
Endpoint https://api.formdata.dev/mcp
Auth Authorization: Bearer sk_xxx
Transport Streamable HTTP (SSE)

Replace sk_xxx with the secret key you received during npx formdata-dev init.

Claude Desktop

  1. Open Claude Desktop settings.
  2. Navigate to the MCP servers configuration file.
  3. Add the following entry:
{
  "mcpServers": {
    "formdata": {
      "url": "https://api.formdata.dev/mcp",
      "headers": {
        "Authorization": "Bearer sk_your_secret_key_here"
      }
    }
  }
}
  1. Save and restart Claude Desktop.
  2. Verify the connection by asking Claude: "Run the get_account tool."

Expected result: Claude returns your organization name, slug, and creation date.

Claude Code

  1. Create or edit .claude/settings.json in your project root:
{
  "mcpServers": {
    "formdata": {
      "url": "https://api.formdata.dev/mcp",
      "headers": {
        "Authorization": "Bearer sk_your_secret_key_here"
      }
    }
  }
}
  1. Restart Claude Code.
  2. Verify: ask Claude to run get_account.

Cursor

  1. Open Cursor Settings (Cmd+, or Ctrl+,).

  2. Navigate to Features > MCP Servers.

  3. Click Add new MCP server.

  4. Enter the following configuration:

    • Name: formdata
    • Type: sse
    • URL: https://api.formdata.dev/mcp
  5. Add the authorization header. In .cursor/mcp.json:

{
  "mcpServers": {
    "formdata": {
      "url": "https://api.formdata.dev/mcp",
      "headers": {
        "Authorization": "Bearer sk_your_secret_key_here"
      }
    }
  }
}
  1. Restart Cursor and verify by asking the assistant to run get_account.

Testing the Connection

After configuring your MCP client, ask your AI assistant:

"Use the get_account tool to show my formdata.dev account info."

A successful response looks like:

{
  "id": "uuid-here",
  "name": "Acme Corp",
  "slug": "acme",
  "owner_email": "admin@acme.com",
  "created_at": "2026-01-15T10:30:00.000Z"
}
WARNING

If you get an authentication error, double-check that your sk_ key matches the one in ~/.config/formdata/credentials. If you rotated your key, update the MCP configuration with the new key.

Available Tools

The MCP server exposes 9 tools:

Tool Description Parameters
get_account View your account information (none)
list_forms List all forms for your account (none)
create_form Create a new form endpoint name, slug, allowedOrigins, verifyCaptcha, captchaSecret
get_form Get form details including destinations formId
update_form Update form configuration formId, name?, allowedOrigins?, isEnabled?
delete_form Delete a form and all its destinations formId
add_destination Add a destination to a form formId, type, config, isEnabled
remove_destination Remove a destination from a form formId, destinationId
rotate_key Rotate your tenant API key (revokes all existing keys) (none)

Destination Types for add_destination

The type parameter accepts one of three values, each with its own config shape:

webhook

{
  "type": "webhook",
  "config": {
    "url": "https://hooks.example.com/form",
    "method": "POST",
    "headers": { "X-Custom": "value" }
  }
}

smtp

{
  "type": "smtp",
  "config": {
    "host": "smtp.example.com",
    "port": 587,
    "secureTransport": "starttls",
    "username": "user@example.com",
    "password": "app-password",
    "from": "noreply@example.com",
    "to": ["admin@example.com"],
    "subjectTemplate": "New submission: {{formName}}"
  }
}

google_sheets_webhook

{
  "type": "google_sheets_webhook",
  "config": {
    "url": "https://script.google.com/macros/s/.../exec",
    "method": "POST",
    "authHeader": "Bearer optional-token"
  }
}
TIP

You can manage your entire formdata.dev setup through natural conversation with your AI assistant. For example: "Create a contact form called 'Contact Us' with slug 'contact', then add a webhook destination pointing to https://hooks.slack.com/services/..."