Form.io MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Form.io MCP Servercreate a new form for employee onboarding"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
The Form.io Agentic Coding Toolset
@formio/ai is what brings Form.io into your agentic coding environment. It provides a series of tools that enable any developer to perform a number of complex actions against the Form.io Enterprise Server using their favorite Agentic Coding toolsets. This turns the Form.io Enterprise Server into a Composable Backend for Agentically Coded Applications.
Getting Started
To get started, open up your Terminal within your application folder, and then use one of the following methods to install this plugin within your application folder.
Option 1: Skills.sh Installation
npx skills add formio/aiThe command installs the skill library into .agents/skills/ folder within your application, which every skills-capable agent reads. It installs skills only — the Form.io MCP server, which is what gives the agent tools like form_create, form_list, and project_import, is connected on first use by the bundled formio-mcp-setup skill: it writes the MCP configuration for your client, asks you to approve it, and tells you to reload.
Option 2: Agent Plugin Installation
If your agent supports plugins, installing the plugin is an alternative to the command above. A plugin install already includes the skills and the MCP server:
Claude Code
/plugin marketplace add https://github.com/formio/ai.git
/plugin install formio-ai@formioCursor
Plugin installation coming soon
Codex
Plugin installation coming soon
Copilot
Plugin installation coming soon
Project Setup
Neither install route asks for a URL. Both are resolved per working directory, so one install can serve several projects, and the answer travels with the code rather than with your machine. The first Form.io tool call that needs a project reports what is missing and names the command that supplies it:
# What does this directory resolve to?
npx -y @formio/mcp@0.12.3 project get --cwd "$(pwd)"
# Record it for this machine…
npx -y @formio/mcp@0.12.3 project set --project-url "<project url>" --cwd "$(pwd)"
# …or commit it with the application, tracked in git and shared with everyone who clones it:
# write a formio.json in the application's own folder (the server reads it, never writes it)
echo '{ "projectUrl": "<project url>" }' > formio.jsonThe skills do this for you: each one calls the project_get tool before its first call — over the connection the server already has, not through a shell — and asks only for whichever value the server says is missing. Two values can be involved:
Project URL — the endpoint for your project. On our SaaS environment (https://portal.form.io) that is a sub-domain such as
https://myproject.form.io. Self-hosted, it depends on how your deployment routes projects: a sub-directory (https://forms.mysite.com/myproject) or a sub-domain of your own domain (https://myproject.mysite.com).Base URL — the endpoint for the deployment. On our SaaS environment it is always
https://api.form.io— never your project's*.form.iosub-domain. Self-hosted, it is the deployment host, often a sub-domain of your own domain, e.g.https://forms.mysite.com.
You usually only supply the first. The Base URL is worked out from the Project URL wherever it can be — https://api.form.io for a *.form.io project, and the parent path for a sub-directory-routed one. The exception is the sub-domain routing case, where the project host and the deployment host differ by design and neither can be derived from the other; there the server asks for the Base URL explicitly rather than guessing.
Related MCP server: Enterprise MCP Gateway and Tool Registry
What you get
Agent plugin:
@formio/ai. One-command install wherever the agent has a marketplace — Claude Code, Cursor, GitHub Copilot CLI, VS Code, Codex. Bundles the MCP server and the skill library, and each client reads the manifest it understands.MCP server:
@formio/mcp. Form.io operations (form_*,role_*,action_*,project_*) as MCP tools. Works with any MCP-aware client: Claude Code, Claude Desktop, VS Copilot, and whatever comes next.Skills library: Coding agent skills covering app orchestration, form building (webforms and wizards), form embedding, resource planning, JSON-schema authoring, action configuration, authentication & authorization, the
@formio/jsSDK surface, and the full Form.io REST surface.
Why this exists
Form.io has been the data standardization layer for enterprise data for a decade. With the proliferation of AI coding agents, that standardization matters more, not less.
Build on the Form.io platform, not from scratch. The agent builds complete applications including the data models, forms, workflows, and business logic. Form.io is the platform it builds on. The APIs, data patterns, RBAC, audit infrastructure, and form management capabilities are production-grade and already there. The agent uses them as tools to build applications better.
Standardization across every AI-built app. One model, one set of rules, one audit trail, regardless of which team or which agent built it. With a standardization layer, multiple teams ship multiple applications, all with defensible, reconcilable data layers across the enterprise.
Governance built in. RBAC, group permissions, change history, audit trails — all emitted on the first pass. Every app lands inside the same compliance envelope the enterprise already runs on.
Agentic Skill Library
The plugin ships an activatable skill library. Claude loads the relevant skill on demand based on what you ask — you rarely need to name one explicitly.
How it all works together
For the full picture — the skills architecture, how the orchestration skills dynamically load the other skills as an agent works through your prompt, how each flow reaches the Form.io Enterprise Server through the MCP server, and Mermaid diagrams of every process flow (building an application, extending one, building a form, embedding a form, changing a project, configuring auth) — read PROCESS.md.
Orchestration skills
Orchestration skills are special skills that serve as the entry point for most prompts. Rather than covering a single capability, they coordinate the other skills (planning, schema authoring, actions, deployment, framework scaffolding) to fulfill a broad, plain-language request end to end. When you describe what you want instead of which tool to use, an orchestration skill picks it up and drives the whole pipeline.
Skill | What it does |
| Framework-agnostic "build me an app" orchestrator. Turns plain-language intent into a running application backed by a Form.io project — planning resources, importing the template, and handing off to a framework implementor. Also handles adding new features to an existing app. |
| "Build me a form" orchestrator. Builds a single form end to end — webform or multi-page wizard — from intent through schema authoring to a saved form in your deployment, with an optional embed handoff. Also handles field edits to an existing form. |
All skills
Skill | What it does |
| Orchestration entry point for building or extending an application on the Form.io platform (see above). |
| Orchestration entry point for building a single form — webform or wizard — end to end (see above). |
| Embeds and renders Form.io forms in any web application with the |
| Plans the resource structure, field configuration, and access/permission model from high-level requirements, then emits a ready-to-import |
| Reference for Form.io JSON schema — the document shapes for projects, forms/resources, and submissions. Used when constructing, editing, or interpreting any Form.io JSON. |
| Reference for configuring Form.io actions — the server-side behavior layer for email notifications, authentication, webhooks, role assignment, and form-to-form saves. |
| Authentication and authorization specialist — login/registration, RBAC, SSO (OIDC/SAML/LDAP), Token Swap, Custom JWT, passwordless email tokens, and JWT/session mechanics. |
| Comprehensive Form.io REST API reference — every endpoint across platform admin, project admin, runtime, and PDF scopes. |
| Reference for the |
| Connects the Form.io MCP server to whichever coding agent is running, and captures the project URL, when the skills were installed without it. |
| Angular framework implementor. Turns an approved |
| React framework implementor. A router over three branches — greenfield build, add CRUD to an existing app, and embed a form — generating a resource kernel over React Router data routers with |
Examples and Use Cases
Ready-to-paste example prompts live in examples/ — each file is one self-contained prompt plus notes on what it should exercise. To try one, create a new folder, start Claude Code inside it, and paste the prompt:
mkdir form-app
cd form-app
claude
/plugin marketplace add https://github.com/formio/ai.git
/plugin install formio-ai@formioBuild complete applications
Create a brand-new 'greenfield' form-based application — or introduce a new form-based feature within an existing one — using the formio-application orchestration skill. The agent plans the data model, imports it into your Form.io project, and scaffolds the front end, using the Form.io platform as the composable backend for the full application logic.
CRM Application — clients, deals, and activity logs with owner-scoped access.
Help Desk — customer tickets, agent workflows, internal notes, and email notifications.
Storyboard — Trello-style board → swimlane → story kanban with drag-and-drop ordering and team-based access.
This library currently only supports the Angular application framework for new 'greenfield' applications. It generally supports other frameworks using the Vanilla JS @formio/js javascript renderer. Full support for other frameworks are coming soon.
Build forms and wizards
Create complex forms and multi-page conditional wizards with the formio-form-builder skill. The agent authors the form JSON and automatically creates the form within any stage of your deployment — including forms whose submission data must adhere to well-defined external schemas such as FHIR.
College Application Wizard — multi-page wizard with program-driven conditional pages.
FHIR-Compliant Patient Form — submission data that conforms to the FHIR Patient resource.
Customer Feedback Form — conditional follow-up fields and a conditional email notification.
Student Onboarding Wizard — create a wizard and embed it within your application in one pass.
Embed forms in existing applications
Embed an existing form or wizard within any HTML-based application using the formio-form skill.
Embed an Existing Form — render a saved form with
@formio/js, pre-fill it, and handle submit events.
Work the REST API via prompt
The formio-api skill knows the full REST surface of your Form.io deployment — create any Resource, Form, Submission, or other entity via prompt.
Create a Patient Resource — create a new resource through the MCP server's first-party tools.
Using the MCP server without the skills
The bundled MCP server is also published standalone as @formio/mcp — you do not need the agent plugin or the skill library to use it. Any MCP-aware client (Claude Code, Claude Desktop, Cursor, VS Code Copilot) can spawn the server directly and call the tools below.
It is also listed in the official MCP Registry as io.form/formio-mcp, so clients that browse the registry can discover and install it without any manual configuration.
Manual configuration
{
"mcpServers": {
"formio-mcp": {
"command": "npx",
"args": ["-y", "@formio/mcp@0.12.3"]
}
}
}That is the JSON mcpServers shape — what Claude Code (.mcp.json), Cursor (.cursor/mcp.json), Claude Desktop, Windsurf, and Cline expect. Both the filename and the top-level key vary by client, so there is no universal .mcp.json.
Copilot uses servers, not mcpServers. In .vscode/mcp.json the top-level key is servers — everything inside the entry is identical.
{
"servers": {
"formio-mcp": {
"command": "npx",
"args": ["-y", "@formio/mcp@0.12.3"]
}
}
}Codex takes TOML, and has no JSON equivalent:
[mcp_servers.formio-mcp]
command = "npx"
args = ["-y", "@formio/mcp@0.12.3"]Authentication is the same everywhere: the first authenticated tool call opens the browser portal-login flow, or set FORMIO_API_KEY to skip the browser entirely — required on any host with no browser, such as a cloud agent, a container, or CI.
Once connected, prompt the tools directly — no skill activation involved:
Using the formio-mcp tools, show me every form and role in my Form.io project, then export the full project template and save it to ./backup/template.json.Using the formio-mcp form_create tool, create a new form called "Contact Us" with fields for full name (required), email (required), subject, and message, plus a submit button.Ready-to-paste versions of these live in examples/mcp/: Inspect and Export a Project and Create a Form Directly.
One caveat: without the skills, the agent authors Form.io JSON (form schemas, action settings, access arrays) from its own general knowledge instead of the conventions the skill library encodes — every operation the tools cover still works, but you give up the guardrails. For other transports (Streamable HTTP for remote clients, SSE for Claude Desktop) and running the server from a clone of this repo, see the MCP server README.
MCP server tools
The bundled @formio/mcp server exposes these tools. Skills prefer these over raw HTTP whenever an operation is covered.
Forms
Tool | Purpose |
| Create a new form. Use the |
| Fetch a single form definition by ID or path. |
| List forms with optional filtering and pagination. |
| Update an existing form. Call |
| List the immutable published revision summaries for a form ( |
| Fetch a single immutable form revision by |
Roles
Tool | Purpose |
| Create a new project role. |
| List all project roles. |
| Full-replacement update of a role. Include all fields you want preserved. |
Actions
Tool | Purpose |
| List all action types available on the server. |
| Get an action type's settings schema. |
| Attach a new action to a form. |
| List actions on a form. |
| Get a single action by ID. |
| Update an action. |
| Detach an action from a form. |
Project
Tool | Purpose |
| Export the project's complete template (roles, resources, forms, actions) as a portable JSON document. Use before |
| Import a template JSON — additively merges roles, resources, forms, and actions in one call. Same-machine-name items are overwritten in place; everything else is preserved. |
| Report which project a directory resolves to, which deployment hosts it, and which layer supplied each. The preflight to run before the first call that reads or writes — it answers from inside the server, with the same resolver every other tool uses, so no shell command is needed to ask it. Returns a |
| Persist a Project URL for a directory, in |
Diagnostic
Tool | Purpose |
| Smoke-test tool. Returns a static greeting; useful for verifying MCP wiring before any authenticated call. |
Authentication
The MCP server supports two authentication modes:
JWT mode (default). A short-lived local Express server renders the Form.io portal login form; the user signs in once, the JWT comes back via a
/callbackendpoint, andformioFetchattachesx-jwt-tokenon every subsequent request. The flow is implicit — the first authenticated tool call triggers it on a cache miss. No explicitauthenticatetool exists.API-key mode. Set
FORMIO_API_KEY. All requests attachx-token; the browser flow is skipped entirely.
Login-form auto-resolution
When FORMIO_LOGIN_FORM is unset, the server probes these candidates on the first login attempt and caches the first one that responds (1.5-second timeout per candidate):
{baseUrl}/formio/user/login(portal-base){projectUrl}/admin/login(project admin){projectUrl}/user/login(project user)
The probe runs lazily — only when the local auth page is actually served.
Environment variables
Name | Required | Default | Purpose | Hosted SaaS example | Self-hosted example |
| no | derived, see note | Full base URL of your Form.io deployment. The WEAKEST of three sources: a committed |
|
|
| yes* | — | Full URL of your Form.io project. The WEAKEST of the three sources: a committed |
|
|
| no |
| Long-lived project API key. When set, the server skips the browser login flow — the only way to authenticate on a host with no browser. |
|
|
| no | Auto-resolved | Override the portal login form URL used by the JWT login flow. |
|
|
| no |
| When | — | — |
| no |
| Bind address and port for the login server. Set both when running in a container so the login page is reachable through a published port. | — |
|
| no |
| When | — |
|
* Not at startup — the server starts and lists every tool without it, and only errors when a tool actually needs a project. The alternative is the project_set tool, which maps a working directory to a project in ~/.formio/projects.json so one server can serve several workspaces. Resolution runs by scope, narrowest first: a committed formio.json found by walking up from the caller's cwd, then the mapping for that cwd, then FORMIO_PROJECT_URL in the environment as the weakest source, then the error. Map a directory before any client connects with npx -y @formio/mcp@0.12.3 project set --project-url <url> --cwd <path> — the deployment is derived from the project URL wherever it can be, so add --base-url <url> only when the server says it cannot be determined. project get --cwd <path> prints what resolves and which source won, exiting 0 when it resolved, 1 when nothing is mapped, 2 when the command itself failed, and 3 when a project resolved but its Base URL could not be determined — the half-configured directory, repaired by supplying that one value. project set --cwd <path> exits 0 when the directory is ready to serve a call, 1 when a named value is still missing, 2 when the command could not answer, and 3 when the record WAS written and the directory still resolves no Base URL — a committed formio.json governs it and supplies none, so the remedy is an edit to that file rather than another write.
Contributing
This is a pnpm + Turborepo monorepo: the @formio/mcp MCP server (packages/mcp-server/), the @formio/ai agent plugin (plugin/, bundling the server + skill library), and the skill test suite (packages/skill-tests/). Setup, conventions, skill-authoring guidelines, and the release flow are in CONTRIBUTING.md. How the skills and the MCP server fit together at runtime is in PROCESS.md. Security reports: SECURITY.md.
License
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Form.io's API to create, read, update, and manage forms using natural language. Includes safety guardrails to protect existing forms and supports real-time form previews.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with the FormIO API for dynamic form creation, submission management, and user roles using natural language.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to read and modify Mendix application models through MCP tools for creating modules, entities, pages, microflows, deploying, and querying runtime data.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/formio/ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server