{"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":"C","score":65,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":37,"stars":7,"forks":3,"downloads_week":147,"last_push_at":"2026-09-09T20:13:43.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":"0.13.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@formio/mcp","version":"0.13.0","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 — when omitted the server uses a 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":"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":"Set to 1 to skip TLS certificate verification. 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 — 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_types_list","description":"List available action types for a form. Returns the catalog of action types the server supports.","write_action":false,"price_micros":0,"input_schema":null},{"name":"action_update","description":"Update an existing action on a form. This is a full replacement of the action document — include every field you want to keep, and call action_get first if you do not already have it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"form_create","description":"Create a new form in the Form.io project mapped to the user's current working directory. IMPORTANT: Before calling this tool, use the formio-schema skill to construct a properly structured Form.io form JSON definition based on the user's requirements. The skill documents all component types, validation options, layout patterns, and conditional logic available in Form.io. New forms default to `revi","write_action":true,"price_micros":0,"input_schema":null},{"name":"form_get","description":"Fetch a single form definition from the Form.io project mapped to the user's current working directory, by form ID or path. Pass `draft: true` to fetch the form's current 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 Form.io project mapped to the user's current working directory with optional filtering and pagination.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_revision_get","description":"Fetch a single immutable form revision from the Form.io project mapped to the current working directory. `version` accepts either the revision `_vid` (e.g. \"3\") or the revision document `_id` (24-character hex). To revert the live form to this revision, pass its `form` body to `form_update` with a `note` like `Revert to v<vid>`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_revisions_list","description":"List immutable published revision summaries for a single form in the Form.io project mapped to the current working directory. Returns compact revision metadata (_vid, _id, modified, user, _vnote) for the form identified by `formIdOrPath`. To inspect a specific revision body, call `form_revision_get` with the desired `_vid`. To revert the live form to a prior revision, pass that revision body to `f","write_action":false,"price_micros":0,"input_schema":null},{"name":"form_update","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"hello","description":"Say hello — a connectivity check that confirms the server is running and reachable. Needs no Form.io project or credentials, so it is the first thing to try when other tools fail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_export","description":"Export the complete template (roles, resources, forms, actions) of the Form.io project mapped to the user's current working directory as a portable JSON document. Use this to snapshot a project before importing changes.","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 JSON into the existing Form.io project mapped to the user's current working directory, merging roles, resources, forms, and actions in one call. Use the formio-resource-planner skill to construct the template before calling this tool. WARNING: import merges into the existing project — use project_export first to snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_set","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"role_create","description":"Create a new role in the Form.io project mapped to the user's current working directory.","write_action":true,"price_micros":0,"input_schema":null},{"name":"role_list","description":"List all roles defined in the Form.io project mapped to the user's current working directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"role_update","description":"Update an existing role in the Form.io project mapped to the user's current working directory. This is a full replacement — include all fields you want to preserve.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":65,"grade":"C","scanned_at":"2026-09-19T21:32:13.757Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-19T21:32:13.740Z","components":{"code":{"score":13,"max":25,"notes":["109 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 10 days ago"]},"identity":{"score":8,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"dist/auth.js: … : 'xdg-open'; exec(`${openCmd} \"${loginUrl}\"`, (err) => { …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@formio/mcp","version":"0.13.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-09T12:41:13.374Z","repositoryUrl":"git+https://github.com/formio/ai.git","weeklyDownloads":147}],"repo":{"found":true,"owner":"formio","repo":"ai","archived":false,"pushedAt":"2026-09-09T20:13:43Z","stars":7,"forks":3,"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":"registry","width":512,"height":512},"presence":{"stars":7,"forks":3,"downloadsWeek":147,"license":"MIT","lastPushAt":"2026-09-09T20:13:43.000Z","score":37}}}},"grade_history":[],"reviews":[]}