mcp-adalove
README.md
# mcp-adalove
Servidor MCP (leitura, somente GET) para o Adalove — plataforma acadêmica do
Inteli. Ver [CLAUDE.md](CLAUDE.md) para as regras de segurança do projeto e
[docs/v1.md](docs/v1.md) para a especificação completa desta versão.
## O que esta versão faz
Uma única tool: `listar_semana(numero_semana?, turma?, detalhado?)`, que
retorna markdown com as atividades de uma semana de uma turma.
## Instalação
Requer Python ≥ 3.11 e [`uv`](https://docs.astral.sh/uv/).
```bash
uv sync
```
## Configuração — `ADALOVE_REFRESH_TOKEN`
O servidor renova o access token automaticamente via Cognito, então só
precisa de um refresh token configurado uma vez (dura semanas — ver
[docs/01-auth-tokenizacao.md](docs/01-auth-tokenizacao.md)).
### Como obter o refresh token
1. Faça login normalmente em <https://adalove.inteli.edu.br>.
2. Abra o DevTools do navegador (F12) → aba **Application** (Chrome) ou
**Storage** (Firefox) → **Local Storage** → `https://adalove.inteli.edu.br`.
3. Procure uma chave no formato
`CognitoIdentityServiceProvider.6v6iqlcv6hl5p3u628geho1cjp.<sub>.refreshToken`
(o `<sub>` é um UUID específico da sua conta).
4. Copie o valor — é uma string opaca longa (não é um JWT).
**Nunca cole esse valor em um arquivo do projeto, em um commit, ou em
qualquer lugar que não seja a configuração de ambiente da sua ferramenta
MCP.** Trate-o como uma senha: com ele, qualquer cliente HTTP consegue gerar
access tokens novos em seu nome (ver docs/01, seção "Renovação via
`refresh_token`").
### Claude Desktop
Edite o arquivo de configuração do Claude Desktop
(`claude_desktop_config.json`) e adicione:
```json
{
"mcpServers": {
"adalove": {
"command": "uv",
"args": ["--directory", "/caminho/absoluto/para/mcp-adalove", "run", "mcp-adalove"],
"env": {
"ADALOVE_REFRESH_TOKEN": "<seu refresh token>"
}
}
}
}
```
Reinicie o Claude Desktop depois de editar.
Se `ADALOVE_REFRESH_TOKEN` não estiver configurado, o servidor sobe
normalmente (não derruba o processo) — a tool apenas responde explicando
como configurá-lo.
## Rodando os testes
Todos os testes rodam contra fixtures locais, sem rede e sem token:
```bash
uv run pytest
```
## Testando contra a API real
```bash
uv run scripts/smoke_test.py
```
Esse script faz chamadas reais (`GET /sections`, `GET /sections/{uuid}/userdata`)
usando o `ADALOVE_REFRESH_TOKEN` do ambiente e imprime o markdown formatado.
Não é executado automaticamente — é o passo de validação manual do usuário,
fora do escopo do build.
## Escopo
Ver [docs/v1.md](docs/v1.md) §9 ("Escopo negativo") para o que foi
deliberadamente deixado de fora desta versão.
TDQS
A4.3/5.0
Scored across 1 tool
Disambiguation5/5
With only a single tool, there is no possibility of confusion between tools. The purpose of listing week activities is clear and unambiguous.
Naming Consistency5/5
The single tool name 'listar_semana' follows a consistent verb-noun pattern (list + week). While there's no broader pattern to compare, the name is descriptive and internally consistent.
Tool Count3/5
A single tool for an LMS (Adalove) feels thin. The scope appears to be at least course management, but only listing weekly activities is provided, making the count borderline low.
Completeness1/5
The tool surface is severely incomplete for an LMS domain. Only a read-only list operation exists, with no create, update, delete, or management capabilities for courses, students, or activities.
Maintenance
ActivityMaintained
ResponsivenessNo issues