A Python-based server for programmatically managing Clappia applications, forms, and submissions via its API.
A Python-based MCP server that provides a comprehensive interface for interacting with the Clappia platform. This server enables programmatic management of Clappia applications, forms, submissions, and more.
Clappia is a no-code platform that allows businesses, operations teams, and non-developers to create custom apps—like inspection forms, approval workflows, field data collection tools, internal dashboards, and more—without writing a single line of code. It's used across industries for automating manual processes, digitizing paperwork, and improving operational efficiency. Click here to learn more.
App Management
Create new Clappia apps with customizable sections and fields
Retrieve detailed app definitions with field metadata
Submission Management
Field Management
Set up Clappia API Access:
Set up Claude for Desktop:
claude_desktop_config.json
:
{
"mcpServers": {
"clappia-mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/<YOUR_DIECTORY>/Desktop/clappia-mcp",
"run",
"clappia-mcp.py"
],
"env": {
"CLAPPIA_API_KEY": "<ENTER_YOUR_WORKPLACE_API_KEY_HERE>",
"CLAPPIA_WORKPLACE_ID": "<ENTER_YOUR_WORKPLACE_ID_HERE>"
}
}
}
}
Clone the repository:
git clone https://github.com/clappia-dev/clappia-mcp.git
cd clappia-mcp
Set up Python Environment:
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
clappia-mcp/
├── clappia-mcp.py # Main MCP server implementation
├── tools/ # Core functionality modules
│ ├── add_field.py # Field addition functionality
│ ├── create_app.py # App creation functionality
│ ├── create_submission.py # Submission creation
│ ├── edit_submission.py # Submission editing
│ ├── get_definition.py # App definition retrieval
│ ├── get_submissions.py # Submission retrieval
│ ├── get_submissions_aggregation.py # Analytics functionality
│ ├── update_field.py # Field update functionality
│ ├── update_submission_owners.py # Owner management
│ └── update_submission_status.py # Status management
├── pyproject.toml # Project metadata and dependencies
├── uv.lock # Dependency lock file (if using uv)
└── .env # Environment variables
Server Not Starting:
API Connection Issues:
claude_desktop_config.json
fileTool Execution Failures:
Create a New Application
from tools.create_app import create_app, Section, Field
result = create_app(
app_name="Employee Survey",
requesting_user_email_address="user@company.com",
sections=[
Section(
sectionName="Personal Information",
fields=[
Field(
fieldType="singleLineText",
label="Full Name",
required=True
)
]
)
]
)
Add a Field to an Application
from tools.add_field import add_field_to_app
result = add_field_to_app(
app_id="APP123",
requesting_user_email_address="user@company.com",
section_index=0,
field_index=1,
field_type="singleLineText",
label="Employee ID",
required=True,
validation="number",
block_width_percentage_desktop=50,
block_width_percentage_mobile=100
)
Update a Field
from tools.update_field import update_field_in_app
result = update_field_in_app(
app_id="APP123",
requesting_user_email_address="user@company.com",
field_name="employeeName",
label="Full Employee Name",
required=True,
validation="none",
display_condition="status == 'active'"
)
Create a Submission
from tools.create_submission import create_app_submission
result = create_app_submission(
app_id="APP123",
data={"employeeName": "John Doe", "employeeId": "12345"},
email="user@company.com"
)
Get Submissions with Filtering
from tools.get_submissions import get_app_submissions, Filters, QueryGroup, Query, Condition
filters = Filters(queries=[
QueryGroup(queries=[
Query(
conditions=[
Condition(
operator="EQ",
filterKeyType="STANDARD",
key="status",
value="active"
)
],
operator="AND"
)
])
])
result = get_app_submissions(
app_id="APP123",
requesting_user_email_address="user@company.com",
page_size=10,
filters=filters
)
Text Fields
singleLineText
: Single line text inputmultiLineText
: Multi-line text inputrichTextEditor
: Rich text editor with formattingSelector Fields
singleSelector
: Single choice selectionmultiSelector
: Multiple choice selectiondropDown
: Dropdown selectionDate/Time Fields
dateSelector
: Date selectiontimeSelector
: Time selectiondateTime
: Combined date and time selectionFile Fields
file
: File upload with configurable typescamera
: Direct camera capturesignature
: Digital signature captureAdvanced Fields
calculationsAndLogic
: Formula-based calculationsgpsLocation
: Location trackingcodeScanner
: Barcode/QR code scanningnfcReader
: NFC tag readingliveTracking
: Real-time location trackingaddress
: Address input with validationnone
: No validationnumber
: Numeric validationemail
: Email format validationurl
: URL format validationcustom
: Custom validation rulesLayout
block_width_percentage_desktop
: Width on desktop (25, 50, 75, 100)block_width_percentage_mobile
: Width on mobile (50, 100)number_of_cols
: Number of columns for selector fieldsBehavior
required
: Whether field is mandatoryis_editable
: Whether field can be editedhidden
: Whether field is hiddenretain_values
: Whether to retain values when hiddenConditions
display_condition
: Condition for field visibilityeditability_condition
: Condition for field editabilityFile Settings
allowed_file_types
: List of allowed file typesmax_file_allowed
: Maximum files allowed (1-10)image_quality
: Image quality (low, medium, high)file_name_prefix
: Prefix for uploaded filesThe server implements comprehensive error handling for:
All errors are logged with appropriate context for debugging.
For support, please:
This project is licensed under the MIT License - see the LICENSE file for details.
The MCP server integrates with Clappia's public API to provide the following capabilities:
Authentication:
Endpoints:
API Documentation:
API Versioning:
Remote server (SSE/Streamable) for the latest Svelte and SvelteKit documentation
Enables AI agents and assistants to interact with Visual Studio Code through the Model Context Protocol.
Enable your code gen agents to create & run 0-config end-to-end tests against new code changes in remote browsers via the Debugg AI testing platform.
A collection of MCP servers for Claude Desktop, providing access to network tools, code linters, and Proxmox virtualization management.
Integrates with the Stability AI API for image generation, editing, and upscaling.
Connects Blender to Claude AI via the Model Context Protocol (MCP), enabling direct interaction and control for prompt-assisted 3D modeling, scene creation, and manipulation.
Manages penetration testing reports and vulnerabilities via a REST API.
A minimal MCP server mock in TypeScript for testing MCP clients, supporting both STDIO and HTTP/SSE protocols.
Manage your Storyblok CMS using natural language through AI tools.
Access financial data like stock prices, currency info, and insider trading data using the Synth Finance API.