classroom-aluno-mcp
classroom-aluno-mcp
Servidor MCP remoto do Google Classroom, escrito na perspectiva de aluno, não de professor. Roda como serviço HTTP e se conecta ao Claude como conector customizado — mesmo formato do seu MCP do Sigaa.
Tools
Tool | O que faz |
| Turmas em que você está matriculado. Ponto de partida para pegar os |
| A principal. Varre todas as turmas ativas e devolve o que falta entregar, ordenado por prazo, marcando as atrasadas. |
| Tarefas publicadas de uma turma. |
| Enunciado completo, anexos, prazo e o estado da sua entrega. |
| Suas entregas numa turma, com estado e nota. |
| Boletim da turma: cada tarefa × sua nota × valor, com total do que já foi corrigido. |
| Mural da turma. |
| Slides, PDFs e links que não valem nota. |
| Unidades em que a turma está dividida. |
| Quem leciona. |
| Busca textual em tarefas, avisos e materiais de todas as turmas ao mesmo tempo. |
Com ENABLE_TURN_IN=true aparecem também entregar_tarefa e cancelar_entrega. Ficam desligadas por padrão — sem elas os escopos são 100% de leitura e nada no seu Classroom pode ser alterado.
Setup
1. Google Cloud
Em console.cloud.google.com, crie um projeto.
APIs e serviços → Biblioteca → Google Classroom API → Ativar.
Tela de permissão OAuth: tipo Externo, adicione seu próprio e-mail em Usuários de teste. Não precisa publicar nem passar por verificação enquanto for só você.
Credenciais → Criar credenciais → ID do cliente OAuth → App para computador. Guarde o Client ID e o Client Secret.
2. Gerar o refresh token (uma vez, local)
git clone <seu-fork> && cd classroom-aluno-mcp
npm install
cp .env.example .env # preencha CLIENT_ID e CLIENT_SECRET
node auth.jsAbra a URL impressa, autorize, e o terminal cospe o GOOGLE_REFRESH_TOKEN.
Se quiser as tools de entrega, rode ENABLE_TURN_IN=true node auth.js — os escopos pedidos mudam.
3. Gerar o segredo da URL
node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"4. Railway
Suba o repositório, crie o serviço e defina as variáveis:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_REFRESH_TOKEN
MCP_SECRET
TIMEZONE=America/Recife
ENABLE_TURN_IN=falseGere o domínio público. O railway.json já cuida de build e start; a PORT o Railway injeta sozinho.
5. Conectar no Claude
Em Configurações → Conectores → Adicionar conector personalizado, use:
https://SEU-APP.up.railway.app/mcp/SEU_MCP_SECRETSobre a autenticação
O Classroom exige OAuth por usuário, e a UI de conectores do Claude não deixa você mandar um header customizado. A saída é o segredo no caminho da URL: sem ele, 401. Um Authorization: Bearer <MCP_SECRET> também funciona, para clientes que suportem.
Isso significa que quem tiver a URL completa tem acesso de leitura ao seu Classroom. Trate como senha: não commite, não cole em issue, não compartilhe tela com ela aberta. Se vazar, troque a MCP_SECRET no Railway — a URL antiga morre na hora.
Para revogar tudo de vez, remova o app em myaccount.google.com/permissions. O refresh token para de funcionar imediatamente.
Detalhes de implementação
Stateless: cada requisição cria uma instância de servidor e transporte. Não guarda sessão, então redeploy e cold start não quebram a conexão.
Respostas enxutas: as tools devolvem campos traduzidos e reduzidos em vez do JSON cru da API, que estoura o limite de tokens rápido em turma cheia.
Prazos: a API do Classroom entrega data e hora em UTC separadamente. O servidor junta as duas, converte para
TIMEZONEe devolve tanto a versão formatada quanto o ISO, além dos dias restantes.proximas_entregasfaz duas chamadas por turma, em paralelo entre todas as turmas. Numa carga de 8 disciplinas leva 1-2 segundos.
Limitações conhecidas
minhas_notassoma pontos brutos das tarefas corrigidas. Não sabe de pesos, médias ponderadas ou da fórmula real da disciplina.listar_professoresusa o escoporosters.readonly. Algumas instituições restringem isso por política de domínio; se der 403, remova a tool e o escopo.Se o seu Classroom é de uma conta institucional, o admin pode bloquear apps OAuth não aprovados. Nesse caso o consentimento falha no passo 2 e não há contorno pelo lado do aluno.
Anexos não são baixados, apenas listados com link. Baixar exigiria escopo de Drive, que preferi não pedir.
Licença
MIT.
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/DaviPac/Classroom-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server