kotas-mcp
kotas-mcp
CLI e servidor MCP para as suas assinaturas compartilhadas no Kotas: grupos, o que você paga em cada um, faturas, créditos, cauções, repasses recebidos como administrador, saldo, economia acumulada e o histórico completo — inclusive das assinaturas que você já encerrou. Tudo em um cache local, para que uma pergunta como "quanto já gastei no Kotas?" seja respondida sem abrir o site.
O Kotas não tem API pública de cliente. Este projeto conversa com a mesma API
que o app app.kotas.com.br usa, com a sua própria sessão, somente leitura:
nenhuma tool cancela assinatura, saca, paga ou muda um valor.
Sumário
Instalação
Tudo de uma vez (Claude Code)
bun run setupCompila o binário, instala em ~/.local/bin/kotas, registra o servidor MCP no
escopo de usuário do ~/.claude.json e instala a Skill em
~/.claude/skills/kotas-mcp/.
npm
npm install -g @maxwellmezadre/kotas-mcpBinário único
Baixe o executável do seu sistema na página de
releases e ponha no
PATH. Não precisa de runtime instalado.
Login
Três caminhos, todos gravando o mesmo session.enc cifrado:
kotas login # e-mail e senha (pergunta, ou KOTAS_EMAIL/KOTAS_SENHA)
kotas login --from-browser chrome # importa a sessão de um navegador já logado (macOS)
kotas login --paste # cola os três valores do localStorageO login do Kotas não tem captcha, então o caminho por senha é HTTP puro e não precisa de navegador. A senha é usada uma vez e nunca é gravada: só ficam os dois tokens e o identificador do dispositivo.
Se a conta tiver verificação em duas etapas, passe o código:
kotas login --pin 123456Se o Kotas pedir liberação de dispositivo (HTTP 412), ele manda um e-mail, SMS
ou mensagem no Telegram. Confirme e rode kotas login de novo — o identificador
já foi salvo, então não troque de máquina no meio do processo.
Uso — CLI
kotas sync # baixa o histórico para o cache (repete os blocos sozinho)
kotas subscriptions # as assinaturas que você tem hoje
kotas history # tudo que você já assinou, inclusive o que encerrou
kotas spending --by month # quanto por mês
kotas payouts # o que você recebe como administrador
kotas balance # saldo e economia acumulada
kotas invoices --status pago --from 2026-01-01
kotas subscription 397075 # plano, rateio, vagas e participantes
kotas export history --format csvTodo comando aceita --json, que imprime o mesmo objeto que a tool MCP devolve.
Uso — MCP
claude mcp add -s user kotas -- /Users/você/.local/bin/kotas mcpOu à mão, no ~/.claude.json:
{
"mcpServers": {
"kotas": {
"type": "stdio",
"command": "/Users/você/.local/bin/kotas",
"args": ["mcp"]
}
}
}Use o caminho absoluto: clientes MCP não herdam o PATH do seu shell. Depois é
só perguntar: "quanto já gastei no Kotas?", "quais assinaturas eu tenho e
quanto pago em cada uma?", "quanto vou receber como administrador este mês?"
Variáveis de ambiente
Variável | Default | Para quê |
|
| Onde ficam sessão, chave e cache |
| — | Chave AES em base64 de 32 bytes; sem ela, uma é gerada em |
|
| O único diretório onde |
|
| Não registra |
|
| Respostas mínimas por padrão, para economizar contexto |
| — | Só para o bootstrap do |
| — |
|
|
| Header |
| (chave do front) | Chave estática da API, igual para todo mundo |
|
| Intervalo mínimo entre requisições |
|
| Variação aleatória somada ao intervalo |
|
| Timeout de cada requisição |
| — | Espelha o log (que sai no stderr) em um arquivo |
|
| Só para testes |
Tools
Tool | Comando | Rede |
|
| 0 (1 com |
|
| 1–2 |
|
| ≈ 6 (3 com |
|
| em blocos |
|
| 0 |
|
| 0 (1 se não estiver no cache) |
|
| 0 |
|
| 0 (1 se faltarem os itens) |
|
| 0 |
|
| 2 |
|
| 0 |
|
| 0 |
|
| 0 |
|
| 1 |
|
| 0 |
|
| 1 |
Referência completa dos parâmetros em docs/TOOLS.md, gerada a
partir do registry.
Como funciona
Sessão. Dois tokens JWT (acesso e renovação) mais o identificador do dispositivo, cifrados com AES-256-GCM em
~/.config/kotas-mcp/session.enc, modo 0600. O token de acesso dura 15 minutos e é renovado sozinho.Um funil só. Toda requisição passa por
src/core/http.ts, que serializa as chamadas, respeita um intervalo mínimo com jitter, faz backoff em 429/5xx e cuida da renovação do token.Faturas como raiz. Um grupo cancelado some da API, então o histórico é reconstruído a partir da descrição das faturas (
Fatura grupo <produto> #<id>). É por isso quepurchase_historyenxerga assinaturas que o site já não mostra.Cache local. SQLite em
~/.config/kotas-mcp/cache.db, com o payload cru guardado ao lado do dado interpretado — assimsync --reparsereprocessa todo o histórico sem gastar uma requisição.
Troubleshooting
Sintoma | O que fazer |
|
|
| Confirme o e-mail/SMS/Telegram e rode |
|
|
| É esperado: chame de novo até |
Listas vazias | O cache está vazio: rode |
HTTP 426 | A versão do front mudou: ajuste |
HTTP 400 em um grupo | O grupo foi encerrado e não existe mais na API; use |
Algo quebrou de um jeito estranho |
|
Documentação
Arquivo | Conteúdo |
Camadas, regras duras e por que cada uma existe | |
Variáveis, arquivos em disco e registro no Claude Code | |
Do zero à primeira pergunta | |
Referência dos comandos | |
Referência das tools (gerada) | |
Os três caminhos de login e o que fica gravado | |
Modelo de domínio e schema do cache | |
A API do Kotas e as armadilhas confirmadas | |
O que fazer quando o Kotas mudar | |
Uma decisão por arquivo | |
O que as fixtures são e o que a anonimização faz |
Licença
MIT. Veja LICENSE.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maxwellmezadre/kotas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server