{"name":"io.form/formio-mcp","slug":"formio-mcp","title":null,"description":"Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent.","url":"https://mcp.market/server/formio-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":40,"stars":8,"forks":4,"downloads_week":342,"last_push_at":"2026-10-14T16:06:13.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/formio/ai","website":"https://form.io","version":"1.0.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@formio/mcp","version":"1.0.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional, and the WEAKEST of the three project sources: a committed formio.json found by walking up from the working directory wins, then the per-directory mapping project_set writes, then this. It pins nothing — project_set can redirect a directory whose environment names a different project. Useful for a launch with nowhere to record a project, such as CI or a container (e.g. https://examples.form.io on the hosted cloud; self-hosted it is either https://your-project.your-domain.com or https://your-host/project-name, depending on how that deployment routes projects). Leave it unset and the agent asks for a project and records it per directory.","format":"string","name":"FORMIO_PROJECT_URL"},{"description":"Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and is asked for only when it cannot be derived, which is a path-less project URL on a customer domain. There is no default. Like FORMIO_PROJECT_URL it is the weakest source, behind a committed formio.json and the per-directory mapping.","format":"string","name":"FORMIO_BASE_URL"},{"description":"Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browser-based portal login flow to obtain a JWT.","format":"string","isSecret":true,"name":"FORMIO_API_KEY"},{"description":"URL of a custom login form used by the browser-based portal login flow. Defaults to the deployment's portal login form.","format":"string","name":"FORMIO_LOGIN_FORM"},{"description":"Address the browser-login page binds to. Optional; defaults to 127.0.0.1. Set it to 0.0.0.0, together with FORMIO_AUTH_PORT, when the server runs in a container or on a remote machine and the login page must be reachable through a published port. 0.0.0.0 exposes the page on every interface for the duration of a login.","format":"string","name":"FORMIO_AUTH_HOST"},{"description":"Fixed port for the browser-login page, so a container can publish it (e.g. 43117). Optional; a positive integer, and by default the page takes an ephemeral port.","format":"string","name":"FORMIO_AUTH_PORT"},{"description":"Seconds to wait for a browser login before the call fails with an error naming the remedies. Optional; a positive integer no larger than 2147483, and any other value is ignored. Defaults to 900.","format":"string","name":"FORMIO_AUTH_TIMEOUT"},{"description":"Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser elsewhere.","format":"string","name":"FORMIO_FORCE_BROWSER"},{"description":"Seconds a Form.io request may go unanswered before the call fails with a network error naming the URL. Optional; a positive integer no larger than 2147483, and any other value is ignored. Defaults to 60. project_import and project_export wait 300 seconds, or this value when it is longer.","format":"string","name":"FORMIO_REQUEST_TIMEOUT"},{"description":"Set to 1 to skip TLS certificate verification only for requests to the configured deployment (the hosts of the resolved project URL and base URL); every other host is verified as usual. For local development against self-signed certificates only — never enable in production.","format":"string","name":"FORMIO_INSECURE_TLS"}]}],"tools":[{"name":"action_create","description":"Create a new action on a form. Call action_type_get first to discover the required settings schema for the action type.","write_action":true,"price_micros":0,"input_schema":null},{"name":"action_delete","description":"Delete an action from a form. The action stops running on submissions immediately and is not recoverable — call action_get first if the settings may be needed again.","write_action":true,"price_micros":0,"input_schema":null},{"name":"action_get","description":"Get a single action by ID from a form, including its handler, method, condition, and type-specific settings. Call action_list first to find the action ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"action_list","description":"List the actions configured on a form, one page at a time — the server-side handlers that run when a submission is saved, such as save-to-resource, email, login, and role assignment.","write_action":false,"price_micros":0,"input_schema":null},{"name":"action_type_get","description":"Get action type info and settings form schema. Call this before action_create to discover the required settings for the action type.","write_action":false,"price_micros":0,"input_schema":null},{"name":"action_type_list","description":"List the action types available for a form. Returns the whole catalog the server supports in one result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"action_update","description":"Update an existing action on a form; call action_get first if you do not already have it. Sent fields overwrite, arrays and objects whole; top-level fields left out keep their value.","write_action":true,"price_micros":0,"input_schema":null},{"name":"form_create","description":"Create a form in the project `cwd` resolves to. Build the form JSON with the formio-schema skill first. On a deployment licensed for revisions, `revisions` defaults to \"original\". Not for a draft of an existing form (\"save a draft\", \"draft <change>\"): use form_update with `draft: true`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"form_get","description":"Fetch a form definition, by _id or path, from the project `cwd` resolves to. `draft: true` fetches its in-flight draft instead of the published form.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_list","description":"List forms from the project `cwd` resolves to, one page at a time, optionally filtered by type and tags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_publish","description":"Publish a form's draft as its live version in the project `cwd` resolves to. Save the draft first with form_update and `draft: true`; a form with no draft fails with NO_DRAFT. Needs the revisions licence (Security Module).","write_action":true,"price_micros":0,"input_schema":null},{"name":"form_revert","description":"Revert a form in the project `cwd` resolves to back to a prior revision: its components, tags, properties and display replace the live form's. Find it with form_revision_list. Needs the revisions licence (Security Module).","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_revision_get","description":"Fetch one immutable form revision from the project `cwd` resolves to. Restore it with form_revert, passing its `_vid`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_revision_list","description":"List a form's published revision summaries in the project `cwd` resolves to, newest first, one page at a time. Read one with form_revision_get, or restore one with form_revert, passing its `_vid`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_update","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_export","description":"Export the project `cwd` resolves to as a template (roles, resources, forms, actions). With `tag`, export the template that version tag stored instead — how a workspace's template.json is refreshed; Form.io does not store project-level access with a tag, so that comes from the project's current access.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_get","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_import","description":"Import a template's roles, resources, forms and actions into the project `cwd` resolves to, for a first build: build it with the formio-resource-planner skill. Each form it names is replaced, its actions deleted and recreated, and its `access` replaces the project's; change an existing project with the form, role and action tools instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_set","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_tag_create","description":"Version the project `cwd` resolves to: Form.io snapshots its current state under a semver `tag` with a `description`, and the project is then at that version. Ask the user before calling. Export the version with project_export `tag`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_tag_list","description":"Report the version the project `cwd` resolves to is at (`current`) and its version tags, newest first. With `compare: true`, also report the roles, resources, forms and actions changed since `current` — changes made outside the agent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"role_create","description":"Create a new role in the project `cwd` resolves to.","write_action":true,"price_micros":0,"input_schema":null},{"name":"role_list","description":"List the roles defined in the project `cwd` resolves to, one page at a time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"role_update","description":"Update an existing role in the project `cwd` resolves to. Sent fields overwrite, arrays and objects whole; top-level fields left out keep their value.","write_action":true,"price_micros":0,"input_schema":null},{"name":"server_status","description":"Report this server's name and version and how `cwd` resolves to a project, as project_get does. It makes no Form.io request and needs no credentials: call it first when other tools fail.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-10-15T12:00:31.855Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-15T12:00:31.833Z","components":{"code":{"score":25,"max":25,"notes":["143 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@formio/mcp","version":"1.0.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-10-14T04:12:53.856Z","repositoryUrl":"git+https://github.com/formio/ai.git","weeklyDownloads":342}],"repo":{"found":true,"owner":"formio","repo":"ai","archived":false,"pushedAt":"2026-10-14T16:06:13Z","stars":8,"forks":4,"openIssues":2,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/11790256?v=4","ownerCreatedAt":"2015-04-03T20:28:37Z","license":"MIT"},"icon":{"url":"https://form.io/wp-content/themes/formio/favicon.png","source":"site","width":512,"height":512},"presence":{"stars":8,"forks":4,"downloadsWeek":342,"license":"MIT","lastPushAt":"2026-10-14T16:06:13.000Z","score":40}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 83","createdAt":"2026-10-15T12:00:32.697Z"}],"reviews":[]}