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:
An MCP server for interacting with Web3 and EVM-compatible chains.
Enhances LLM reasoning by transforming prompts into Chain of Draft or Chain of Thought formats, improving quality and reducing token usage. Requires API keys for external LLM services.
Check software end-of-life (EOL) dates and support status using the endoflife.date API to provide accurate lifecycle and security information.
Run and manage docker containers, docker compose, and logs
Securely execute shell commands with whitelisting, resource limits, and timeout controls for LLMs.
MCP Expr-Lang provides a seamless integration between Claude AI and the powerful expr-lang expression evaluation engine.
Evaluates product designs against Dieter Rams' 10 principles of good design.
Integrates Zeek network analysis with conversational AI clients. Requires an external Zeek installation.
Generate high-quality images using Google's Imagen 3.0 model via the Gemini API.
Work on dataset metadata with MLCommons Croissant validation and creation.