kobotoolbox-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port pour le transport HTTP. Défaut `3000`. | 3000 |
| TRANSPORT | No | Type de transport MCP. `stdio` par défaut, `http` en option. | stdio |
| PYTHON_BIN | No | Interpréteur Python qui possède les librairies. Par défaut `python3` (Linux/macOS) ou `python` (Windows). | python3 |
| KOBO_KC_URL | No | Hôte KoboCAT pour l'envoi de données. Déduit automatiquement ; à renseigner sur une instance auto-hébergée. | |
| SOFFICE_BIN | No | Binaire LibreOffice pour l'export PDF. Détecté automatiquement ; à renseigner seulement s'il est installé hors des emplacements standards. | |
| KOBO_BASE_URL | No | URL de base Kobo. Défaut `https://kf.kobotoolbox.org` (global) ou `https://eu.kobotoolbox.org` (Europe). | https://kf.kobotoolbox.org |
| KOBO_API_TOKEN | Yes | Ton token API Kobo. Requis. | |
| MCP_ACCESS_KEY | No | Clé d'accès pour le transport HTTP (optionnel). Uniquement pour le transport HTTP. | |
| KOBO_OUTPUT_DIR | No | Dossier où sont écrits les rapports. Par défaut `./out`. | ./out |
| KOBO_RETRY_ATTEMPTS | No | Nombre de tentatives sur throttling/erreur serveur (défaut `3`). | 3 |
| KOBO_RETRY_BASE_DELAY_MS | No | Délai initial du backoff exponentiel (défaut `700`). | 700 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kobo_list_formsA | List forms/projects (surveys) accessible with the configured API token. Does NOT return submission data — use kobo_list_submissions for that. Args:
Returns: form uid, name, deployment status, and submission count for each form. Examples:
|
| kobo_get_formA | Get full details of a single form: its question structure, section nesting, skip logic and validation rules. Args:
Returns: name, deployment status, submission count, available languages, and the question outline — groups and repeats shown as indented sections, with required, skip logic and constraints annotated. Error Handling:
|
| kobo_create_formA | Create a new form (survey) from a list of questions, and optionally deploy it immediately so it can start collecting submissions. The question list is FLAT: sections and repeats are expressed with begin_group/end_group and begin_repeat/end_repeat rows, which must be balanced. Args:
Returns: the new form's uid, deployment status, and — once deployed — the public collect links. Examples:
Error Handling:
|
| kobo_update_formA | Replace the ENTIRE question list of an existing form with a new one. Prefer kobo_patch_form for targeted edits (relabelling, adding choices, changing skip logic) — it leaves the rest of the form untouched and cannot accidentally drop questions. Args:
Notes:
|
| kobo_patch_formA | Make targeted changes to an existing form without resending the whole question list. This is the safe way to fix a typo, add a choice, or attach skip logic to a form that is already collecting data — everything not named is left exactly as it is. Args (all optional, combine freely):
Returns: a per-change report of what was applied and what could not be found. Examples:
|
| kobo_deploy_formA | Deploy a draft form (or redeploy a changed one) so it becomes active and can collect submissions. Args:
Returns: the new deployment status and the collect links. Note: deploying makes the form live but NOT public — the Enketo link still asks for a Kobo login until anonymous submissions are enabled with kobo_set_sharing. |
| kobo_archive_formA | Stop a form from accepting new submissions without deleting anything, or bring an archived form back. This is the correct way to end a data collection round: every response is kept and stays exportable. Use it instead of kobo_delete_form, which destroys the data. Args:
Returns: the resulting deployment status. |
| kobo_clone_formA | Copy an existing form's structure into a brand-new project, without its submissions. Useful to reuse a questionnaire for a new round, region or season, or to experiment on a copy instead of a live form. Args:
Returns: the new form's uid and status. |
| kobo_export_xlsformA | Download a form as a real XLSForm .xlsx workbook — the standard exchange format for ODK/Kobo questionnaires. Use it to hand the questionnaire to someone else, keep it under version control, edit it in Excel, or re-import it elsewhere with kobo_import_xlsform. Args:
Returns: the path written and its size. |
| kobo_import_xlsformA | Upload an XLSForm .xlsx workbook to Kobo, either as a new form or to overwrite an existing one. Use it when a questionnaire already exists as a spreadsheet, or to round-trip a form edited in Excel. Args:
Returns: the resulting form uid and import status. Error Handling:
|
| kobo_delete_formA | Permanently delete a form AND ALL ITS SUBMISSIONS. THIS CANNOT BE UNDONE. Args:
Don't use when: you just want to stop collecting data. Use kobo_archive_form instead — it keeps every response. |
| kobo_form_versionsA | List a form's deployed versions, and roll back to one of them. Kobo keeps every version that was ever deployed. This is the way back when a change breaks a live form: redeploying a past version restores the old structure without touching the submissions already collected. Args:
Returns: the version history (newest first) with deployment dates, and the resulting status after a rollback. Notes:
|
| kobo_get_collect_linksA | Get the shareable links of a deployed form — the actual deliverable once a form is built. Returns every Enketo URL Kobo publishes:
It also reports whether the form is genuinely PUBLIC. A deployed form's link still asks for a Kobo login until anonymous submissions are enabled — use kobo_set_sharing for that. Args:
|
| kobo_set_sharingA | Control who can fill in a form and who can work on it. Two independent things:
Roles:
Args:
Returns: the resulting access list, and the collect links when the form becomes public. Examples:
Notes:
|
| kobo_list_submissionsA | List submitted responses for a form, most recent first. Args:
Returns: submission id, submission time, and answered fields for each submission. Examples:
|
| kobo_get_submissionA | Get the full detail of one submission by its id. Args:
Returns: every field and value recorded in that submission. |
| kobo_delete_submissionsA | Permanently delete specific submissions from a form. THIS CANNOT BE UNDONE. Use it to remove test entries, duplicates, or a response a respondent asked to withdraw. Args:
Don't use when: you want to discard a whole form's data — that is kobo_delete_form. To merely flag bad rows while keeping them, use kobo_validate_submissions with 'not approved' instead. |
| kobo_validate_submissionsA | Mark submissions as approved, not approved, or on hold — Kobo's data-cleaning workflow. This is the non-destructive way to handle suspect responses: the row stays in the database and in exports, carrying its status, instead of being deleted. Args:
Returns: how many submissions were updated. |
| kobo_download_attachmentsA | Download the photos, audio, video and files attached to submissions. A form with an 'image' question (a shopfront photo, a signed consent form, a damaged crop) stores its files on Kobo, and nothing in an Excel export contains them — only file names. This fetches the actual files to disk, organised one folder per submission. Args:
Returns: the directory written, the number of files and their total size. |
| kobo_submit_dataA | Send a response to a deployed form through the API, without going through the web form. Use it to test a form end-to-end before sending enumerators out, or to migrate answers already collected on paper or in a spreadsheet. Args:
Returns: the instance id Kobo assigned. Notes:
Error Handling:
|
| kobo_export_submissions_excelA | Generate a downloadable Excel (.xlsx) or CSV export of all submissions for a form, and return the file itself (base64-encoded) plus a direct download link. This triggers a fresh export on the Kobo server, waits (up to ~90s) for it to finish, downloads the result, and returns it as an embedded file the calling app can save to disk. Args:
Returns: the file as an embedded resource (base64), its size, and a direct download URL as a fallback. Examples:
Error Handling:
|
| kobo_load_dataA | Download ALL submissions of a form and prepare them for analysis. Start every analysis here. Unlike kobo_list_submissions (one page of raw records), this pulls the whole dataset, replaces stored choice codes with their labels, converts numbers and dates, flattens groups, and reports data quality. The cleaned snapshot is cached for 15 minutes and reused by kobo_analyze, kobo_crosstab, kobo_get_data_sample and kobo_build_report. Args:
Returns: the list of analysable questions with their measurement type (categorical / numeric / datetime / text) and answer options, the number of submissions, and a data-quality summary (missing values, duplicates, skipped repeat groups). Use the returned question list to decide what to analyse — its "field" values are what you pass to the other tools. |
| kobo_analyzeA | Compute descriptive statistics for every question (or a chosen subset) of a form. For each question it returns the statistics that fit its type:
Args:
Loads the data automatically if it isn't cached yet. Examples:
|
| kobo_crosstabA | Cross two questions to see how answers to one vary with the other — the core of comparative analysis. Args:
Returns: the contingency table with row, column and grand totals, and how many submissions were excluded for missing either answer. Examples:
|
| kobo_get_data_sampleA | Return actual cleaned rows of the dataset, with labels rather than codes. Use this to read open-ended answers, sanity-check the data before drawing conclusions, or inspect specific records. For aggregate figures prefer kobo_analyze or kobo_crosstab — they are far more compact. Args:
|
| kobo_build_reportA | Produce finished deliverables from a form's data: an analytical Excel workbook, a written Word report, and/or a PDF — saved to disk. YOU write the analysis (objective, summary, findings, section commentary, recommendations); the server computes every figure from the real submissions, so the numbers in the deliverable always match the data. Never type counts or percentages into 'custom' tables that the server can compute for you — use the directives below instead. Each section carries your prose plus 'visuals', declared as directives:
What the Excel workbook contains: a summary sheet (objective, executive summary, findings, recommendations), one sheet per section with tables and NATIVE, editable Excel charts, a cross-tab sheet, the cleaned data as a real Excel Table named 'DonneesKobo' (select it, then Insert > PivotTable to build your own pivot in two clicks), and a data-quality sheet. Note on pivot tables: cross-tabs are delivered as computed tables, not as live PivotTable objects — no open-source library can create those. The named Excel Table above is there precisely so you can add one yourself instantly. Args:
Returns: the full path of each generated file. Run kobo_load_data first so you know which questions exist and what shape the data is in. |
| kobo_doctorA | Diagnose this server's configuration: the Kobo connection, the API token, the output directory and the Python report renderer. Run it first when a tool fails for an unclear reason, or right after installing the server. Returns: a pass/fail line per check, with the exact command to fix anything broken. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Every tool targets a distinct resource+action, with cross-references clarifying adjacent purposes. kobo_list_submissions, kobo_get_data_sample, and kobo_export_submissions_excel are clearly separated as raw paged, cleaned sample, and file export; kobo_patch_form vs kobo_update_form explicitly explain targeted vs full replacement. No two tools could reasonably be confused.
The overwhelming majority follow kobo_<verb>_<object> (kobo_create_form, kobo_list_submissions, kobo_delete_submissions). Minor deviations exist: kobo_form_versions is a noun phrase, and kobo_analyze, kobo_crosstab, kobo_doctor lack the standard verb+object structure. These are still readable and predictable within the overall convention.
At 27 tools, the server lands in the 'too many' band, especially since it bundles three distinct domains: form design/deployment, submission management, and analysis/reporting. While each tool has a distinct role, the surface is heavy for agent selection and would benefit from splitting into focused form, data, and reporting servers.
The surface covers the full form lifecycle (create/read/update/patch/deploy/archive/clone/import/delete/versions), submission workflows (list/get/submit/validate/delete/attachments/export), and analysis (load/analyze/crosstab/data sample/report). Minor gaps include no way to update a form's name/description after creation and no submission answer editing beyond validation status, but these are generally workable around.