listSurveysLABSCO 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 —
addSurveyreturns asid,addGroupreturns agid,importQuestiontakes base64.lsqcontent,setSurveyPropertiessets the wording,activateSurveyopens it - Reading what exists —
listSurveys,getSurveyProperties,listQuestionGroups,listQuestions,getQuestionProperties,getFieldMap - Idempotent rebuilds —
deleteQuestionanddeleteGroupboth requireconfirmDeletion: truebefore they act - Responses —
getResponseSummary,getResponseIds,exportResponses,exportResponsesByToken,exportTimeline, plusaddResponse,updateResponseanddeleteResponse - Export formats discovered at runtime — call
listResponseExportFormatsfirst, then pass one of itstypevalues asdocumentType - Participants and invitations —
addParticipant,addMultipleParticipants,listParticipants,listFilteredParticipants,getParticipantProperties,inviteParticipants,remindParticipants,deleteParticipants - Quotas and languages —
getQuotaProperties,addQuota,setQuotaProperties,deleteQuota,addSurveyLanguage,setSurveyLanguageProperties,deleteSurveyLanguage exportStatisticsreturns 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
USE CASES
Building a survey without touching the admin UI
Create the survey, add groups, import questions from prepared templates, then activate it.
Pulling responses into an analysis
Discover which export formats this instance actually supports, then export in one of them.
Chasing people who have not answered
List participants with unused tokens and send reminders to just those.
Letting an assistant look but not touch
Run in read-only mode so structure and results are readable while every write short-circuits.
Fixing wording across a live survey
Read a question's current properties, then update just the stem or help text.
51 tools
Listed in project docs. Your client may show a different list.
getSurveyPropertiesactivateSurveygetSurveyLanguagePropertiesgetAvailableLanguagesgetSurveyLanguagesgetFieldMapaddSurveyimportSurveycopySurveydeleteSurveyactivateTokenssetSurveyPropertieslistQuestionGroupsgetGroupPropertiesaddGroupdeleteGroupsetGroupPropertieslistQuestionsgetQuestionPropertiesimportQuestiondeleteQuestionsetQuestionPropertiesgetResponseSummarylistResponseExportFormatsexportResponsesaddResponseupdateResponsedeleteResponsegetResponseIdsexportResponsesByTokenexportTimelinelistResponsesuploadFilelistUploadedFilesaddParticipantaddMultipleParticipantslistParticipantslistFilteredParticipantsgetParticipantPropertiesdeleteParticipantsinviteParticipantsremindParticipantsgetQuotaPropertiesaddQuotasetQuotaPropertiesdeleteQuotaaddSurveyLanguagedeleteSurveyLanguagesetSurveyLanguagePropertiesexportStatisticsBEFORE YOU INSTALL
What to know first
Tools you get
51 tools named in the project's documentation.
Requires
- LIMESURVEY_PASSWORD in your environment
- LIMESURVEY_API_URL in your environment
- LIMESURVEY_USERNAME in your environment
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
# Clone the repository
git clone https://github.com/TonisOrmisson/limesurvey-mcp.git
cd limesurvey-mcp
# Create a .env file in the root directory with LIMESURVEY_API_URL,
# LIMESURVEY_USERNAME and LIMESURVEY_PASSWORD (see .env.example)
# Install dependencies
npm install
# Build the project
npm run build
# Start the server (stdio by default; ENABLE_SSE=true serves /sse and /messages)
npm startThe server reads LIMESURVEY_API_URL (your instance's …/admin/remotecontrol address), LIMESURVEY_USERNAME and LIMESURVEY_PASSWORD from its environment or from a .env file in its working directory. The project publishes no client configuration: by default it speaks stdio, so add it to your client in that client's own format as a local command running node dist/index.js from your clone, with the three variables set; or set ENABLE_SSE=true, run npm start, and connect to its /sse endpoint on PORT.