Skip to main content
Glama

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-task

The 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

SYSTEM_TASK_TOKEN

the plugin, from the client's config

2

~/.config/system-task/token (%APPDATA%\system-task\token on Windows)

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

/daily

Your day in one call: due today, overdue, estimated time

/system-task #project

Tasks, optionally for one project. Also takes atrasadas, sem dono, de ana

Tools

Read

Tool

Answers

systemtask_day_brief

What is yours today, what is late, how much time that adds up to

systemtask_projects_list

Every project, with progress, overdue and unassigned counts

systemtask_project_report

One project: totals, board columns, created vs. completed

systemtask_project_risks

Overdue, undated, unassigned — oldest first

systemtask_team_load

Workload per person and who has nothing assigned

systemtask_team_list

Who is on the project

systemtask_tasks_search

Search by project, assignee, status, period

systemtask_task_get

One task in full — the escape hatch when a title is truncated

systemtask_whoami

Which account the token opens

systemtask_list_trash

What is in the lists trash, ready to restore or purge

Write

Tool

Does

systemtask_demand_create

Registers a demand (objective + deliverable + done-when)

systemtask_task_create

Creates a simple task of your own

systemtask_task_update

Complete, reschedule, reprioritise, estimate

systemtask_task_assign

Set or clear the assignee (one, or nobody)

systemtask_task_move

Move between projects (a recurring task moves its whole series)

systemtask_task_comment

Comment on a task (an @user notifies that person)

systemtask_list_create

Creates a list (the app's "project")

systemtask_list_rename

Renames a list, and/or changes its color/icon

systemtask_list_delete

Sends a list to the trash — reversible, tasks go with it

systemtask_list_restore

Restores a list from the trash, tasks included

systemtask_list_purge

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 above

scripts/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 tools
systemtask_day_briefMeu diaA
Read-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 projetoA
Read-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 projetoA
Read-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áA
Read-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 inteiraA
Read-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_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 projetoA
Read-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 demandaA
Read-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 TaskA
Read-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

    A4.2/5.0

    Scored across 15 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers