Skip to main content
Glama

mcp-adalove

Servidor MCP (leitura, somente GET) para o Adalove — plataforma acadêmica do Inteli. Ver CLAUDE.md para as regras de segurança do projeto e 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.

Related MCP server: School Attendance MCP Server

Instalação

Requer Python ≥ 3.11 e uv.

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).

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 Storagehttps://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:

{
  "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:

uv run pytest

Testando contra a API real

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 §9 ("Escopo negativo") para o que foi deliberadamente deixado de fora desta versão.

Available Tools

1 tool
listar_semanaA

Lista as atividades de uma semana de uma turma do Adalove.

Args: numero_semana: número da semana (ex.: 5 casa com "Semana 05"). Se omitido, a semana é inferida (atividade com data mais próxima de hoje, ou cálculo a partir do início da turma). turma: caption ou uuid da turma. Se omitido, usa a turma aberta (ou pede para escolher, se houver mais de uma). detalhado: se True, mostra a descrição completa de cada atividade em vez de truncada em ~200 caracteres.

ParametersJSON Schema
NameRequiredDescriptionDefault
turmaNo
detalhadoNo
numero_semanaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Sem annotations, a descrição precisa revelar comportamento e o faz bem: informa a inferência da semana, o fallback de turma, e o truncamento padrão de ~200 caracteres com a opção 'detalhado'. Esse nível de detalhe vai além do esquema e ajuda o agente a prever o resultado da chamada.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A descrição é objetiva, com frase de propósito na frente e seção 'Args' organizada. Cada frase agrega valor: o comportamento de cada parâmetro é explicado sem redundância ou texto desnecessário.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para uma ferramenta de leitura com três parâmetros opcionais e nenhuma annotation, a descrição cobre todos os comportamentos relevantes: inferência, fallbacks, truncamento e contexto de uso. A existência de output schema cobre a necessidade de explicar o retorno, tornando a definição completa.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

O schema não fornece descrições dos parâmetros, mas a descrição cobre todos os três com semântica adicional: numero_semana com exemplo de correspondência, turma aceitando caption ou uuid, e detalhado controlando o nível de detalhe. A descrição compensa totalmente a cobertura de 0% do schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A descrição começa com verbo específico e recurso claro: 'Lista as atividades de uma semana de uma turma do Adalove'. Define exatamente o escopo da operação, diferenciando-a claramente de outras possíveis ferramentas por nome e descrição, mesmo sem tools irmãs listadas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A descrição explica o comportamento de cada parâmetro opcional e o que acontece quando ele é omitido, incluindo inferência da semana e seleção de turma aberta. Não há alternativas explícitas, mas o contexto de uso é claro e suficiente para um agente decidir quando chamar a ferramenta.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedlistar_semana

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

Related MCP Connectors

Related MCP Servers