Labsco
MCP SERVER

LimeSurvey MCP

by TonisOrmisson

Build, run and export LimeSurvey surveys through the RemoteControl API — with a switch that turns off every write.

Forms & Surveys
Summary
`READONLY_MODE=true` is the setting to reach for first.

With it on, every write-marked tool refuses and returns an error instead of calling LimeSurvey — so an assistant can read a live survey's structure and responses with no path to changing it. When you do turn writes on, the delete tools still demand `confirmDeletion: true`, and question edits are narrow by design: RemoteControl blocks structural fields like `type` and `parent_qid`, so changing a question's type means deleting and re-importing the `.lsq` rather than patching it.

What it is

An MCP wrapper over LimeSurvey's RemoteControl2 API. It covers the survey lifecycle end to end: create a survey, add groups and questions, set properties, activate it, manage participants and quotas, then export responses and statistics.

What you get
  • Survey structure without the admin UI — `addSurvey` returns a `sid`, `addGroup` returns a `gid`, `importQuestion` takes base64 `.lsq` content, `setSurveyProperties` sets the wording, `activateSurvey` opens it
  • Reading what exists — `listSurveys`, `getSurveyProperties`, `listQuestionGroups`, `listQuestions`, `getQuestionProperties`, `getFieldMap`
  • Idempotent rebuilds — `deleteQuestion` and `deleteGroup` both require `confirmDeletion: true` before they act
  • Responses — `getResponseSummary`, `getResponseIds`, `exportResponses`, `exportResponsesByToken`, `exportTimeline`, plus `addResponse`, `updateResponse` and `deleteResponse`
  • Export formats discovered at runtime — call `listResponseExportFormats` first, then pass one of its `type` values as `documentType`
  • Participants and invitations — `addParticipant`, `addMultipleParticipants`, `listParticipants`, `listFilteredParticipants`, `getParticipantProperties`, `inviteParticipants`, `remindParticipants`, `deleteParticipants`
  • Quotas and languages — `getQuotaProperties`, `addQuota`, `setQuotaProperties`, `deleteQuota`, `addSurveyLanguage`, `setSurveyLanguageProperties`, `deleteSurveyLanguage`
  • `exportStatistics` returns a base64 PDF, XLS or HTML report, optionally with graphs
Requirements

A LimeSurvey instance with the RemoteControl API enabled, and an account on it: `LIMESURVEY_API_URL` pointing at `/admin/remotecontrol`, plus `LIMESURVEY_USERNAME` and `LIMESURVEY_PASSWORD`. Published as mcp-limesurvey version 1.1.0; the documented path is clone, `npm install`, `npm run build`, `npm start`. Transport is stdio by default — set `ENABLE_SSE=true` to expose `/sse` and `/messages` on `PORT` (3000 by default) when the server runs somewhere other than the client's machine.