MCP Server
Let Claude and other AI agents build forms, manage responses, and run analysis through the Model Context Protocol.
@bionicforms/mcp-serverThe BionicForms MCP server exposes 19 tools that let AI agents create forms, collect responses, trigger AI analysis, and manage webhooks — all through natural language conversation.
Quick Start
Get up and running in under a minute. You need Node.js installed and a BionicForms API key.
1. Get an API key
Sign up at bionicforms.com and go to Settings → API Keys. Or let Claude do it — the register tool works without an API key.
2. Install the MCP server
npm install -g @bionicforms/mcp-server3. Add to your Claude config
See the Configuration section below for Claude Desktop and Claude Code setup.
4. Start using it
Ask Claude to create a form, list your responses, or run analysis — it will use the BionicForms tools automatically.
Configuration
Add the MCP server to your Claude client. Replace bf_k1_your_key_here with your actual API key.
Claude Desktop
Add to your claude_desktop_config.json:
{ "mcpServers": { "bionicforms": { "command": "npx", "args": ["-y", "@bionicforms/mcp-server"], "env": { "BIONICFORMS_API_KEY": "bf_k1_your_key_here" } } } }Claude Code
Add to .mcp.json in your project root:
{ "mcpServers": { "bionicforms": { "command": "npx", "args": ["-y", "@bionicforms/mcp-server"], "env": { "BIONICFORMS_API_KEY": "bf_k1_your_key_here" } } } }Authentication
The MCP server uses the same API keys as the REST API. Set your key via the BIONICFORMS_API_KEY environment variable in your Claude config.
register tool is the only tool that works without authentication. Ask Claude to register a new account and it will return an API key.Get a key from Settings → API Keys in your dashboard, or use the register tool to create an account and key in one step.
Registration
Create an account and get an API key without any prior authentication.
registerCreate an account and get an API key
No authentication required. Returns an API key that can be used for all other tools.
| Name | Type | Required |
|---|---|---|
email | string | yes |
password | string | yes |
name | string | no |
Forms
Create, list, update, and delete forms.
list_formsList all forms in your workspace
Returns form titles, statuses, response counts, and public URLs. Supports pagination.
| Name | Type | Required |
|---|---|---|
page | integer | no |
per_page | integer | no |
create_formCreate a new form
Optionally include fields to set up the schema immediately. Call publish_form when ready to accept responses.
| Name | Type | Required |
|---|---|---|
title | string | yes |
description | string | no |
fields | array | no |
get_formGet full details of a form
Returns fields, status, response count, and public URL.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
update_formUpdate a form's title or description
Does not modify the schema — use update_form_schema for that.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
title | string | no |
description | string | no |
delete_formPermanently delete a form
Deletes the form and all its responses. This cannot be undone.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
Schema
Manage form fields and publish forms.
update_form_schemaReplace a form's fields entirely
Provide the complete list of fields — this overwrites the existing schema.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
fields | array | yes |
publish_formPublish a form to accept responses
Returns the public URL where respondents can fill out the form.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
Responses
List, view, and delete form submissions.
list_responsesList submissions for a form
Supports pagination and text search across answers.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
page | integer | no |
per_page | integer | no |
search | string | no |
get_responseGet a single response's full details
Returns all field answers for the submission.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
response_id | uuid | yes |
delete_responsePermanently delete a response
This cannot be undone.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
response_id | uuid | yes |
Analysis
Trigger AI-powered analysis on form responses.
trigger_analysisRun AI analysis on all responses
Costs 1 AI credit. Returns a run ID — use get_analysis to check results.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
get_analysisGet analysis results
Returns summary, sentiment, themes, urgency, and quantitative stats. Returns null fields if analysis is still processing.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
query_analysisAsk a question about responses
Natural language query against analyzed data. Costs 1 AI credit. Requires a completed analysis run.
| Name | Type | Required |
|---|---|---|
form_id | uuid | yes |
query | string | yes |
Webhooks
Receive real-time notifications when forms are submitted.
list_webhooksList all configured webhooks
Shows webhook URLs, descriptions, and active status.
create_webhookCreate a webhook endpoint
Optionally scope to specific forms. Returns the webhook with its signing secret.
| Name | Type | Required |
|---|---|---|
url | string | yes |
description | string | no |
form_ids | array | no |
update_webhookUpdate webhook settings
Change URL, description, active status, or form scope.
| Name | Type | Required |
|---|---|---|
webhook_id | uuid | yes |
url | string | no |
description | string | no |
is_active | boolean | no |
form_ids | array | no |
delete_webhookDelete a webhook
Stops receiving events immediately.
| Name | Type | Required |
|---|---|---|
webhook_id | uuid | yes |
Account
View workspace and billing information.
get_accountGet workspace info, plan, and credits
Returns current plan details and remaining AI credit balance.
Field Types
Supported field types when creating or updating form schemas. Each field needs at least a type and label.
| Type | Description |
|---|---|
text | Single-line text input |
email | Email address with validation |
phone | Phone number |
url | URL with validation |
number | Numeric input |
date | Date picker |
textarea | Multi-line text |
dropdown | Single-select dropdown |
radio | Single-select radio buttons |
checkbox | Multi-select checkboxes |
rating | Star rating |
nps | Net Promoter Score (0-10) |
slider | Range slider |
file | File upload |
signature | Signature pad |
{ "type": "dropdown", "label": "How did you hear about us?", "required": false, "properties": { "options": ["Search", "Social Media", "Referral", "Other"] } }Environment Variables
Configure the MCP server via environment variables in your Claude config.
| Variable | Required | Default |
|---|---|---|
BIONICFORMS_API_KEY | Yes* | — |
BIONICFORMS_URL | No | https://bionicforms.com |
* Not required for the register tool, which is the only unauthenticated tool.
Example Prompts
Here are some things you can ask Claude once the MCP server is connected.
Create a form
"Create a customer feedback form with fields for name, email, a 1-5 rating, and a text area for comments. Then publish it."
Tools used: create_form → publish_form
Analyze responses
"Run an analysis on my feedback form and tell me what the top complaints are."
Tools used: list_forms → trigger_analysis → query_analysis
Set up webhooks
"Create a webhook to send submissions from my contact form to https://hooks.example.com/inbox."
Tools used: list_forms → create_webhook
Check your account
"How many AI credits do I have left? What plan am I on?"
Tools used: get_account