Skip to main content
Glama
vaibhavjain2608

formslist-mcp

README.md
# formslist-mcp

MCP (Model Context Protocol) server for [FormsList](https://formslist.com) — a form-backend SaaS. Point any HTML form at a FormsList endpoint and it handles submissions, email notifications, spam filtering, auto-responses, and analytics with no server code.

This server lets any MCP client (Claude Code, Claude Desktop, Cursor, ...) create form endpoints, read submissions, configure auto-responses, and generate embed snippets.

## Tools

| Tool | API key? | What it does |
| --- | --- | --- |
| `instant_provision` | No | Create a working form endpoint instantly for any email — no account needed. The owner claims it later via the returned `claim_url`. Also returns a ready-to-paste `html_snippet` and `curl_example`. |
| `create_form` | Yes | Create a new form (`name`, optional `description`). |
| `list_forms` | Yes | List all forms in the account. |
| `get_form` | Yes | Get one form's details by `form_id`. |
| `get_submissions` | Yes | Get a form's submissions (`page`, `per_page` pagination). |
| `configure_autoresponse` | Yes | Enable/configure the auto-response email (`enabled`, `subject`, `body_html`, `from_name`). If the plan doesn't include auto-responses, the tool returns the upgrade message and `upgrade_url` instead of erroring. |
| `get_embed_snippet` | No | Pure local generator: builds an HTML `<form>` snippet + AJAX example that posts to `https://formslist.com/f/<hash>`. |

**`instant_provision` and `get_embed_snippet` work with zero config** — no API key needed.

The API key (`ff_sk_...`) is created at <https://formslist.com/account/api-keys> and passed via the `FORMSLIST_API_KEY` environment variable. `FORMSLIST_BASE_URL` overrides the API base (default `https://formslist.com`).

## Install (until npm publish)

```bash
git clone <this-repo>
cd formflow/mcp
npm install
npm run build
```

The built server is at `dist/index.js`.

## Configure your MCP client

### Claude Code

```bash
claude mcp add formslist -e FORMSLIST_API_KEY=ff_sk_xxx -- npx -y formslist-mcp
```

(Omit `-e FORMSLIST_API_KEY=...` if you only need `instant_provision` / `get_embed_snippet`.)

### Claude Desktop

Add to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "formslist": {
      "command": "npx",
      "args": ["-y", "formslist-mcp"],
      "env": {
        "FORMSLIST_API_KEY": "ff_sk_xxx"
      }
    }
  }
}
```

### Cursor

Add to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):

```json
{
  "mcpServers": {
    "formslist": {
      "command": "npx",
      "args": ["-y", "formslist-mcp"],
      "env": {
        "FORMSLIST_API_KEY": "ff_sk_xxx"
      }
    }
  }
}
```

## Notes

- Transport is stdio; all HTTP uses the global `fetch` (Node 18+).
- Non-2xx API responses are returned to the agent as `{status, error}` text — never unhandled exceptions.
- LLM-oriented product docs: <https://formslist.com/llms.txt>

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct purpose: instant_provision handles anonymous form creation, create_form handles authenticated creation, get_form and list_forms distinguish single vs. list retrieval, and get_submissions, configure_autoresponse, and get_embed_snippet each target a separate concern. The only potential overlap between instant_provision and create_form is clearly resolved by the auth requirement.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case verb_noun pattern (e.g., create_form, get_submissions, list_forms). There are no mixed conventions, camelCase, or vague standalone verbs, making the set predictable and readable.

Tool Count5/5

Seven tools is well-scoped for a forms management server. The count is sufficient to cover core operations (create, read, list, submissions, configuration, snippet generation) without being heavy or redundant.

Completeness4/5

The surface covers creation, retrieval, listing, submissions, configuration, and snippet generation. However, there are no update or delete operations for forms, which are common CRUD actions. This is a minor gap that agents can work around but might cause friction in full lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessSyncing