fillout mcp server
Enables form management, response handling, and analytics through the Fillout.io API for enhanced form interactions and insights.
Enables form management, response handling, and analytics through the Fillout.io API for enhanced form interactions and insights.
MCP Server for the Fillout.io API, enabling form management, response handling, and analytics.
Copy your new API key
API Key Information:
fo_live_
fo_test_
API keys provide access to all resources in your account
Replace your-fillout-api-key
in the configuration with your API key.
⚠️ Security Notes: - Keep your API key secure and private - Use test keys for development - Store keys in environment variables - Rotate keys periodically - Never commit keys to version control
Solution:
fo_live_
or fo_test_
"Test mode key used with live form"
fo_test_
) with production formSolution:
"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 offsetReturns: Array of form objects
get_form
formId
(string): Form identifierReturns: Form details including questions and settings
create_form
name
(string): Form namedescription
(optional string): Form descriptionquestions
(array): Array of question objectstype
: Question type (e.g., 'ShortAnswer', 'MultipleChoice')name
: Question textrequired
: Whether question is requiredchoices
: Array of choices for multiple choice questionsReturns: Created form object
get_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 statusReturns: Array of form responses
submit_form_response
formId
(string): Form identifierresponses
(array): Array of answersquestionId
: 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.