LabscoMCP early access ↗
TonisOrmissonMCP SERVER

LimeSurvey MCP

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

by TonisOrmisson ↗Forms & SurveysCommunity

LABSCO 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.

Setup effort

Build from source — git clone https://github.com/TonisOrmisson/limesurvey-mcp.git