System Task MCP
This server provides tools to manage projects and tasks in System Task via MCP.
Monitor & Report
Daily brief: See overdue, due today, and total estimated time.
Projects overview: List all projects with progress, overdue, and unassigned counts.
Project report: Detailed report including totals, board columns, priority breakdown, and created vs completed tasks.
Project risks: Surface overdue, undated, and unassigned tasks.
Team workload: View each person's open/overdue tasks, estimated hours, and who has nothing assigned.
Team members: List members of a project.
Search tasks: Filter by project, assignee, status, date range, unassigned.
Get full task: Retrieve complete details (title, description, subtasks).
Account info: Verify connected account and timezone.
Trash: View trashed lists.
Manage Tasks & Projects
Create demand: Formal task for others with objective, deliverable, verifiable done-when; supports assignee, due date, priority, estimate, and subtasks.
Create task: Simple personal to-do.
Update task: Mark complete/reopen, reschedule, reprioritize, change estimate, edit title/description.
Assign task: Set or clear a single assignee.
Move task: Transfer to another project, moves recurring series unless specified otherwise.
Comment on task: Add comments with optional @mentions for notifications.
Create / Rename / Delete / Restore / Purge lists: Manage projects (lists) with full lifecycle including trash and permanent deletion.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@System Task MCP What do I have on my plate today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
System Task — MCP plugin for Claude Code
Run your projects and your team from a conversation: see how each project is doing, who is overloaded, who has nothing assigned, and register work in a shape people can actually execute and verify.
System Task is a task and project app for small teams — web, Android and Windows. This plugin connects it to Claude Code.
Install
In Claude Code:
/plugin marketplace add luis1amaral/system-task-mcp/plugin install system-task/plugin configure system-taskThe third command asks for one thing — your access token. Generate it in the System Task app
under Settings → Agent access, tap Connect Claude Code, and paste it. (install prompts too
when the token is missing; configure always does, and is also how you replace it later.) It goes
into the client's own credential store — never into a project file, never into your shell history.
Don't have an account yet? Create one at system-task.defaltm.com.
Related MCP server: Super Productivity MCP Server
Where the token lives (and why you only paste it once)
Each MCP client keeps its own copy of the plugin config, so a second app — or the same one after a reinstall — used to start disconnected and ask for the token again. It looks like the token vanished; it never did.
So the server reads it from two places, in this order:
Order | Source | Who fills it |
1 |
| the plugin, from the client's config |
2 |
| written automatically the first time a token arrives through the environment |
The file is created with mode 0600 inside a 0700 directory, holds one line, and is what makes
every new client start already connected. The environment always wins — it is what the client was
told to use right now — and a new token there replaces the stored one.
SYSTEM_TASK_TOKEN_FILE=/other/path— use a different file.SYSTEM_TASK_TOKEN_PERSIST=0— never write it to disk (you then supply the variable every time).
The startup line on stderr says which source was used, e.g. system-task: pronto (…) [token: ambiente]. The token itself never appears in a log or an error message — only the path.
What the token can and cannot do
The agent token is not a second login. The server only accepts it on a closed list of routes: read reports, search, create and edit tasks, comment, move. It deletes nothing, cannot touch your account, cannot see billing and cannot mint another token.
If it ever leaks, you revoke it in two taps on the same screen — and the "last used" column tells you whether it is still plugged into some machine.
Commands
The plugin ships two slash commands:
Command | Does |
| Your day in one call: due today, overdue, estimated time |
| Tasks, optionally for one project. Also takes |
Tools
Read
Tool | Answers |
| What is yours today, what is late, how much time that adds up to |
| Every project, with progress, overdue and unassigned counts |
| One project: totals, board columns, created vs. completed |
| Overdue, undated, unassigned — oldest first |
| Workload per person and who has nothing assigned |
| Who is on the project |
| Search by project, assignee, status, period |
| One task in full — the escape hatch when a title is truncated |
| Which account the token opens |
| What is in the lists trash, ready to restore or purge |
Write
Tool | Does |
| Registers a demand (objective + deliverable + done-when) |
| Creates a simple task of your own |
| Complete, reschedule, reprioritise, estimate |
| Set or clear the assignee (one, or nobody) |
| Move between projects (a recurring task moves its whole series) |
| Comment on a task (an |
| Creates a list (the app's "project") |
| Renames a list, and/or changes its color/icon |
| Sends a list to the trash — reversible, tasks go with it |
| Restores a list from the trash, tasks included |
| Deletes a list for good — only when the user explicitly asks for that |
The demand format
systemtask_demand_create requires three things, and that is the point of the plugin:
objective — what needs to exist (becomes the title);
deliverable — what is concretely handed over;
doneWhen — a criterion another person can verify without asking anyone.
The how is never prescribed: the method belongs to whoever does the work. Subtasks only when the demand has genuinely independent deliverables — the default is not to split.
That discipline is what stops a task from sitting open for two months because nobody can assert it is finished.
Example prompts
"How are my projects doing?" "In The City, who has nothing assigned?" "Create a demand for João: ship the pricing page, done when /pricing returns 200 with the 3 plans, due Friday" "What do I have today?" "Show me what's overdue in the Vendas project"
Self-hosting
Pointing the plugin at your own System Task API is an environment variable, not a plugin option:
set SYSTEM_TASK_API_URL. It is deliberately not in the configure panel — the plugin should ask
for one thing only.
Development
npm install
npm run build
node scripts/smoke.mjs # protocol only (no token)
SYSTEM_TASK_TOKEN=stk_... node scripts/smoke.mjs # + read tools against the API
node scripts/token-file.mjs # the token cascade (env → file), no real token
npm run check # tsc + build + both of the abovescripts/smoke.mjs speaks JSON-RPC to the built binary over stdin/stdout, exactly like an MCP
client — including a check that nothing but the protocol is written to stdout (the number one
failure in stdio servers: one console.log corrupts the channel).
dist/ is committed on purpose: installing a plugin copies the folder and does not run
npm install. When releasing, run npm run build and bump version in
.claude-plugin/plugin.json — without the bump, nobody receives the update.
License
MIT.
Available Tools
15 toolssystemtask_day_briefMeu diaARead-only
O que EU tenho para hoje: o que vence hoje, o que já está atrasado, quanto tempo estimado isso soma, e o backlog sem data. Traz só o que é meu — tarefa atribuída a outra pessoa é o dia dela. Comece o dia por aqui.
Inputs: no named parameters.
systemtask_demand_createCriar uma demanda (trabalho para alguém)A
Registra uma DEMANDA num projeto, no formato que a equipe consegue executar e conferir.
Diga o que precisa EXISTIR, não COMO fazer — o método é de quem executa. Nunca prescreva passo a passo técnico.
"doneWhen" é obrigatório e precisa ser verificável por OUTRA pessoa sem perguntar nada a ninguém: um número, um arquivo, um link, um estado observável. "Ficar bom" e "estar revisado" não servem. Se o pedido vier vago demais para escrever esse critério, PERGUNTE ao usuário em vez de inventar um.
Use "subtasks" APENAS quando a demanda tiver entregas independentes, que poderiam ser feitas por pessoas diferentes. O padrão é não quebrar — subtarefa desnecessária é ruído.
Inputs: project (required), doneWhen (required), objective (required), deliverable (required), +6 more.
systemtask_project_reportPainel de um projetoARead-only
Como um projeto está: total, concluídas, abertas, atrasadas, distribuição por coluna do board e por prioridade, e — o número que diz se o projeto está afundando — quantas tarefas ENTRARAM contra quantas foram CONCLUÍDAS no período. Período máximo de 92 dias.
Inputs: project (required), to, from.
systemtask_project_risksOnde está o risco de um projetoARead-only
O que vai dar problema: tarefas atrasadas, sem data e sem responsável — com as mais antigas em amostra, porque é onde o problema começou. A interseção (sem data E sem responsável) é a tarefa que ninguém vai fazer.
Inputs: project (required), sample.
systemtask_projects_listMeus projetos e como cada um estáARead-only
Visão geral de TODOS os projetos que você enxerga, com progresso, atrasadas, sem responsável e sem data. É a primeira tool a chamar quando a pergunta é "como estão as coisas?" ou quando você precisa descobrir o nome/id de um projeto.
Inputs: no named parameters.
systemtask_task_assignDefinir (ou tirar) o responsável de uma tarefaA
UMA pessoa é responsável por uma tarefa, ou nenhuma — não existem dois. Marcar outra TROCA: a anterior sai. Para deixar sem responsável, mande assignee = null. A pessoa precisa participar do projeto da tarefa.
Inputs: task (required), project (required), assignee (required).
systemtask_task_commentComentar numa tarefaA
Escreve um comentário na tarefa — é como o agente devolve resultado para a equipe, e o que fica registrado para quem abrir depois. Um "@usuario" no texto avisa a pessoa.
Inputs: task (required), text (required).
systemtask_task_createCriar uma tarefa simples (sua)A
Cria uma tarefa SUA, sem responsável — um lembrete, uma anotação, algo que você mesmo vai fazer. Para trabalho que vai para OUTRA PESSOA, use systemtask_demand_create: demanda precisa de objetivo, entrega e critério de pronto, e esta tool não registra nada disso.
Inputs: title (required), due, project, priority, +2 more.
systemtask_task_getLer uma tarefa inteiraARead-only
A tarefa COMPLETA: título e descrição sem corte, mais as subtarefas. Use sempre que o título aparecer cortado com "…" nas listas e você precisar do texto inteiro — as tabelas cortam de propósito para caber, esta tool é a saída.
Inputs: task (required).
systemtask_task_moveMover uma tarefa para outro projetoA
Muda a tarefa de projeto. Se ela for RECORRENTE, a série inteira vai junto por padrão — mover só a instância de hoje faria a tarefa voltar sozinha para o projeto antigo amanhã. Use onlyThis = true para forçar mover apenas esta ocorrência.
Inputs: task (required), project (required), onlyThis.
systemtask_tasks_searchBuscar tarefasARead-only
Lista tarefas filtrando por projeto, responsável, situação e período. Para saber COMO um projeto está, prefira systemtask_project_report (devolve números, não linhas); use esta quando precisar das tarefas em si, para citar ou editar.
Inputs: to, from, limit, project, +3 more.
systemtask_task_updateConcluir, adiar ou repriorizar uma tarefaA
Muda o que já existe: marcar concluída, mudar a data, a prioridade, a estimativa ou o título. Só manda o que muda. Para APAGAR uma tarefa, não dá por aqui — é pelo app (o token de agente não apaga nada, de propósito).
Inputs: task (required), due, title, priority, +3 more.
systemtask_team_listQuem participa de um projetoARead-only
Os membros do projeto, com o nome de usuário. Use antes de atribuir uma demanda quando não souber quem participa — atribuir a quem não participa é recusado pela API.
Inputs: project (required).
systemtask_team_loadCarga da equipe e quem está sem demandaARead-only
Quanto cada pessoa tem em aberto, quanto atrasou, quanto concluiu no período e quantas horas estimadas carrega. Quem está SEM DEMANDA aparece explicitamente — é a pergunta "quem posso acionar agora?". Período máximo de 92 dias.
Inputs: project (required), to, from.
systemtask_whoamiQuem sou eu no System TaskARead-only
Confirma a conta conectada e o fuso horário usado nos relatórios. Use uma vez no começo se houver dúvida sobre qual conta o token abre, ou se outra tool falhar por autenticação.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool targets a distinct resource and action: team lists vs. team load, project overview vs. report vs. risks, task search vs. task get, and create for self vs. create for others. Descriptions explicitly cross-reference to avoid overlap, so an agent can reliably pick the right tool.
All tools share the 'systemtask_' prefix and use snake_case, with most following a 'resource_action' pattern (e.g., task_get, task_update, demand_create). Minor deviations like 'day_brief', 'project_report', 'project_risks', and 'whoami' break the pattern slightly but remain readable and identifiable.
With 15 tools, the set is well-scoped for its domain. Each tool serves a clear purpose—from project overviews and team load to full task lifecycle operations—without redundancy. The count sits at the upper end of the ideal range but feels justified.
The surface covers project monitoring, team awareness, personal planning, and a full task lifecycle (search, get, create, update, assign, move, comment). The lack of delete and subtask editing is intentional and documented, so agents can work around it, but these are still minor gaps.
Maintenance
Related MCP Connectors
Manage Redbooth tasks, task lists, comments, tags and files from Claude and other AI assistants.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
Create projects, nodes, and tasks in UluP Spaces by conversation with Claude.
Related MCP Servers
- AlicenseAqualityDmaintenanceIntegrates task management capabilities into Claude Desktop, enabling users to create, track, search, and manage tasks with status updates, team assignments, overdue tracking, and automated standup reports.6MIT
- AlicenseAqualityDmaintenanceEnables Claude to interact with Super Productivity's local REST API for task, project, and tag management, including CRUD operations, status checks, and daily planning prompts.17264 npmMIT
- AlicenseBqualityDmaintenanceEnables Claude to interact with Things 3 task management, allowing natural language task creation, project analysis, and GTD workflow automation.2473 PyPI43MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code to read and update tasks in the Nexus/TaskBridge project management system through its public API.82 npmISC