Fillout Forms Manager
STDIOMCP server for managing forms, responses, and analytics via Fillout.io API.
MCP server for managing forms, responses, and analytics via Fillout.io API.
MCP Server for the Fillout.io API, enabling form management, response handling, and analytics.
Get your Fillout.io API Key:
API Key Information:
fo_live_
fo_test_
Replace your-fillout-api-key
in the configuration with your API key.
⚠️ Security Notes:
"Invalid API key provided" or "Authentication failed"
fo_live_
or fo_test_
"Test mode key used with live form"
fo_test_
) with production form"Rate limit exceeded"
Check API Key Format:
# Key should: - Start with 'fo_live_' or 'fo_test_' - Be approximately 50 characters - Contain only letters, numbers, and underscores
Test API Key:
curl -H "Authorization: Bearer your-api-key" \ https://api.fillout.com/v1/api/forms
list_forms
limit
(optional): Number of forms to returnoffset
(optional): Pagination offsetget_form
formId
(string): Form identifiercreate_form
name
(string): Form namedescription
(optional string): Form descriptionquestions
(array): Array of question objects
type
: Question type (e.g., 'ShortAnswer', 'MultipleChoice')name
: Question textrequired
: Whether question is requiredchoices
: Array of choices for multiple choice questionsget_form_responses
formId
(string): Form identifierfilters
(optional): Response filterspageSize
(optional): Results per pageafterDate
(optional): Filter by submission datebeforeDate
(optional): Filter by submission datestatus
(optional): Filter by completion statussubmit_form_response
formId
(string): Form identifierresponses
(array): Array of answers
questionId
: Question identifiervalue
: Response valuecalculations
(optional): Custom calculations{ "mcpServers": { "fillout": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "FILLOUT_API_KEY", "mcp/fillout" ], "env": { "FILLOUT_API_KEY": "your-fillout-api-key" } } } }
{ "mcpServers": { "fillout": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-fillout" ], "env": { "FILLOUT_API_KEY": "your-fillout-api-key" } } } }
# Install dependencies npm install # Run in development mode npm run dev # Build for production npm run build
# Build image docker build -t mcp/fillout . # Run container docker run -e FILLOUT_API_KEY=your-key mcp/fillout
const form = await client.createForm({ name: "Customer Feedback", description: "Please share your experience", questions: [ { type: "ShortAnswer", name: "What did you like most?", required: true }, { type: "MultipleChoice", name: "Would you recommend us?", required: true, choices: ["Yes", "No", "Maybe"] } ] });
const response = await client.submitFormResponse(formId, { responses: [ { questionId: "q1", value: "Great customer service!" }, { questionId: "q2", value: "Yes" } ] });
The server provides detailed error messages for common issues:
try { const forms = await client.listForms(); } catch (error) { if (error instanceof AuthenticationError) { // Handle invalid API key } else if (error instanceof FilloutError) { // Handle API-specific errors } else { // Handle unexpected errors } }
This project is licensed under the MIT License. See the LICENSE file for details.