# Jotform MCP: MCP

The Jotform MCP server, built on the open Model Context Protocol, enables AI-powered, natural language access to forms and submissions.

> Markdown version of https://www.jotform.com/developers/mcp/?tab=mcp. Other pages: [Overview](https://www.jotform.com/developers/mcp/?format=md), [MCP Apps](https://www.jotform.com/developers/mcp/?tab=mcp-app&format=md).

## Overview

The Jotform MCP server provides programmatic access to forms and submissions via natural language interfaces, compatible with popular AI assistants including Cursor and VS Code extensions. Implementation follows the open Model Context Protocol specification, ensuring interoperability with any MCP-compatible client. The service is actively being optimized based on real-world usage patterns.

This MCP is actively maintained and more tools will come soon.

## Available tools

Jotform MCP provides 7 tools. The Access column shows whether a tool is read-only, writes data, or is destructive, meaning it can delete or overwrite existing data.

Full tool reference with descriptions, behavior hints, and input and output schemas (JSON): https://api.jotform.com/mcp/documentation/servers/default

| Tool | Description | Access |
| --- | --- | --- |
| `analyze_submissions` | Perform deep AI-powered analysis on one or more forms' submissions. | Read-only |
| `assign_form` | Assign a form to a email address | Writes data |
| `create_form` | Create a new form based on the user's prompt | Writes data |
| `edit_form` | Edit a form based on the user's prompt. | Destructive |
| `fetch` | This tool is fetching information and metadata from the Jotform based on a form id or a submission id | Read-only |
| `get_submissions` | List submission IDs for a form, with optional filters | Read-only |
| `search` | Search assets. | Read-only |

## Requirements

1. Jotform account
2. MCP‑capable client (Cursor, Goose, Windsurf, VS Code extension, etc.)
3. One‑time OAuth approval for each user

## Connect

| Setting | Value |
| --- | --- |
| Endpoint | `https://mcp.jotform.com` |
| Transport | Streamable HTTP |
| Authentication | OAuth 2.0 authorization code flow with PKCE (`S256`). Each user approves access once on the Jotform consent screen. Jotform API keys are not accepted. |
| Authorization server | `https://oauth2.jotform.com`, advertised in the protected resource metadata at `https://mcp.jotform.com/.well-known/oauth-protected-resource` |
| Scopes | `readOnly`, `full` |
| Client registration | Dynamic client registration is supported, so no client ID or secret is needed. |

### Add to your client

#### ChatGPT

**ChatGPT**

Turn on developer mode, then create an app with this server URL, choose OAuth, and approve access. Developer mode requires a paid plan, and on Business and Enterprise workspaces an admin must allow it.

```text
https://mcp.jotform.com
```

ChatGPT developer mode guide: <https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt>

**Codex**

Run this command. Codex adds the server to `~/.codex/config.toml` and starts the sign-in; run `codex mcp login jotform` if you need to sign in again.

```bash
codex mcp add jotform --url https://mcp.jotform.com
```

#### Claude

**Claude**

Open Settings → Connectors, choose Add custom connector, and enter this server URL. Then connect and approve access.

```text
https://mcp.jotform.com
```

**Claude Code**

Run this command, then run `/mcp` in Claude Code and select the server to sign in.

```bash
claude mcp add --transport http jotform https://mcp.jotform.com
```

#### Cursor

Add the server to `~/.cursor/mcp.json` for all projects or `.cursor/mcp.json` for one project. Then open the MCP section of Cursor Settings, connect the server, and approve access in your browser.

```json
{
  "mcpServers": {
    "jotform": {
      "url": "https://mcp.jotform.com"
    }
  }
}
```

Add to Cursor: <cursor://anysphere.cursor-deeplink/mcp/install?name=jotform&config=eyJ1cmwiOiJodHRwczovL21jcC5qb3Rmb3JtLmNvbSJ9>

#### VS Code

Add the server to `.vscode/mcp.json` in your workspace, or run `MCP: Add Server` from the Command Palette and enter the server URL. Start the server and approve access when VS Code asks you to sign in.

```json
{
  "servers": {
    "jotform": {
      "type": "http",
      "url": "https://mcp.jotform.com"
    }
  }
}
```

Add to VS Code: <vscode:mcp/install?%7B%22name%22%3A%22jotform%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.jotform.com%22%7D>

#### Other clients

Clients that support remote servers over Streamable HTTP with OAuth only need the server URL. Clients that can only run local (stdio) servers can connect through the `mcp-remote` bridge:

```json
{
  "mcpServers": {
    "jotform": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.jotform.com"
      ]
    }
  }
}
```

### Set up with your agent

Paste this prompt into an agent that can edit its own MCP configuration, such as Cursor, Claude Code, or Codex.

```text
Set up the Jotform MCP in this MCP client.
- Server URL: https://mcp.jotform.com
- Transport: Streamable HTTP
- Authentication: OAuth 2.0 with dynamic client registration. Do not ask me for an API key; I will approve access in the browser when the client asks me to sign in.
- Documentation: https://www.jotform.com/developers/mcp/?tab=mcp&format=md
Add the server to this client's MCP configuration under the name "jotform", start the sign-in, then list the available tools to confirm the connection.
```

## OAuth connections

When you add the Jotform MCP server to a client, the client opens an OAuth consent screen that lets you authorize the connection to your Jotform data. OAuth runs through a **Jotform App** and is required for every user the first time they connect. Only workspace admins can install the Jotform MCP app.

### View authorized MCP clients

1. Sign in to the Jotform Dashboard.
2. Go to **My Account** → **Connected Apps**.
3. Select **Jotform MCP**.
4. In the right panel, choose **Clients** to see all OAuth‑connected MCP clients.

### Revoke OAuth access for a specific client

1. In the Clients list, find the client you want to remove.
2. Click the overflow menu (⋮) next to its entry.
3. Select Revoke. The client loses access immediately.

Bearer‑token access is not supported; OAuth 2.0 is required for all connections.
