# formio-mcp

Wires your agent into Form.io so it can build forms, resources, actions, roles and projects from chat. Useful when the forms live in Form.io rather than in your code.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 8
- Author: formio
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/formio/ai/tree/HEAD/packages/mcp-server
- Updated: 2026-10-19
- HTML: https://affpapa.org/en/nevibecode/mcp/formio-mcp

## What it does

\`@formio/mcp` runs over stdio. Your client launches the process and keeps its input and output streams; nothing listens on a port and you never start it by hand. HTTP and SSE are not offered at all. The one HTTP listener the server opens is a short-lived browser sign-in page, and no MCP traffic passes through it.

Every tool that talks to Form.io needs a project. Three places can supply it, and the narrower scope wins: a committed `formio.json`, a per-directory mapping written by the `project_set` tool, or the `FORMIO_PROJECT_URL` variable. `FORMIO_BASE_URL` is rarely needed — the base address follows from the shape of the project URL, and the server asks for it only when it cannot work that out. Startup does not depend on either value, so a client can connect and list tools first; the project URL is requested when a tool actually needs it, and `server_status` answers either way.

The Docker image `formio/mcp` also speaks stdio, so run the container with `-i`. Two things break on a private deployment. A private hostname will not resolve inside the container — map it with `--add-host`. And the image trusts only the standard CA bundle, so a certificate your own machine accepts still fails there with a bare `fetch failed`. For a certificate from a private CA, mount the root certificate and set `NODE_EXTRA_CA_CERTS`. A fully self-signed server certificate cannot be fixed that way: Node wants a CA as the trust anchor and rejects the chain with `DEPTH_ZERO_SELF_SIGNED_CERT`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `FORMIO_PROJECT_URL`, `FORMIO_BASE_URL`, `FORMIO_API_KEY`, `FORMIO_LOGIN_FORM`, `FORMIO_AUTH_HOST`, `FORMIO_AUTH_PORT`, `FORMIO_AUTH_TIMEOUT`, `FORMIO_FORCE_BROWSER`, `FORMIO_REQUEST_TIMEOUT`, `FORMIO_INSECURE_TLS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env FORMIO_PROJECT_URL=<FORMIO_PROJECT_URL> --env FORMIO_BASE_URL=<FORMIO_BASE_URL> --env FORMIO_API_KEY=<FORMIO_API_KEY> --env FORMIO_LOGIN_FORM=<FORMIO_LOGIN_FORM> --env FORMIO_AUTH_HOST=<FORMIO_AUTH_HOST> --transport stdio mcp-server -- npx -y @formio/mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add mcp-server --env FORMIO_PROJECT_URL=<FORMIO_PROJECT_URL> --env FORMIO_BASE_URL=<FORMIO_BASE_URL> --env FORMIO_API_KEY=<FORMIO_API_KEY> --env FORMIO_LOGIN_FORM=<FORMIO_LOGIN_FORM> --env FORMIO_AUTH_HOST=<FORMIO_AUTH_HOST> -- npx -y @formio/mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@formio/mcp"
            ],
            "env": {
                "FORMIO_PROJECT_URL": "<FORMIO_PROJECT_URL>",
                "FORMIO_BASE_URL": "<FORMIO_BASE_URL>",
                "FORMIO_API_KEY": "<FORMIO_API_KEY>",
                "FORMIO_LOGIN_FORM": "<FORMIO_LOGIN_FORM>",
                "FORMIO_AUTH_HOST": "<FORMIO_AUTH_HOST>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@formio/mcp"
            ],
            "env": {
                "FORMIO_PROJECT_URL": "<FORMIO_PROJECT_URL>",
                "FORMIO_BASE_URL": "<FORMIO_BASE_URL>",
                "FORMIO_API_KEY": "<FORMIO_API_KEY>",
                "FORMIO_LOGIN_FORM": "<FORMIO_LOGIN_FORM>",
                "FORMIO_AUTH_HOST": "<FORMIO_AUTH_HOST>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e FORMIO_PROJECT_URL=<FORMIO_PROJECT_URL> -e FORMIO_BASE_URL=<FORMIO_BASE_URL> -e FORMIO_API_KEY=<FORMIO_API_KEY> -e FORMIO_LOGIN_FORM=<FORMIO_LOGIN_FORM> -e FORMIO_AUTH_HOST=<FORMIO_AUTH_HOST> mcp-server npx -y @formio/mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- build a Form.io form from a description in chat
- set up a resource and its roles for a new project
- edit a form action without opening the web UI
- point the agent at a different Form.io project
- check the Form.io connection before doing work

## Example prompts
- Create a feedback form in Form.io with name, email and message fields
- Add an editor role to the current Form.io project
- Show the Form.io connection status

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
