ClasseViva MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
⚠️ Progetto non ufficiale. Non è affiliato, sponsorizzato né approvato da Gruppo Spaggiari Parma S.p.A. Usa l'API non documentata dell'app ClasseViva (
web.spaggiari.eu/rest/v1), solo in lettura, e può smettere di funzionare in qualsiasi momento. Vedi Disclaimer.
Come si usa in Claude
Apri Claude (web, desktop o app) → Impostazioni → Connettori → Aggiungi connettore personalizzato.
Nome:
ClasseViva— URL:https://classeviva-mcp.ronchfx.workers.dev/mcpLascia vuoti Client ID e Client Secret (la registrazione OAuth è automatica).
Premi Connetti: si apre una pagina di login in italiano. Inserisci codice utente (o email) e password di ClasseViva. Se hai più profili (es. genitore) puoi indicare il codice profilo.
Fatto. Puoi chiedere cose come: «Che voti ho preso questa settimana?», «Media in matematica?», «Cosa c'è in agenda per domani?».
Per scollegarti rimuovi il connettore. Se cambi la password di ClasseViva, ricollega il connettore.
Preferisci la tua istanza? Vai a Self-hosting.
Related MCP server: Smartschool MCP Server
Funzionalità (11 tool, sola lettura)
Tool | Cosa fa | |
👤 |
| Nome, scuola, città — utile per verificare il login |
📊 |
| Voti con medie per materia e generale ( |
📅 |
| Compiti e verifiche tra |
📖 |
| Argomenti delle lezioni (default: ultimi 7 giorni) |
🚪 |
| Assenze, ritardi, uscite + quante da giustificare |
📢 |
| Circolari della bacheca (non le segna come lette) |
📝 |
| Note disciplinari, annotazioni, richiami, sanzioni |
📚 |
| Materie e docenti |
🗓️ |
| Trimestri / quadrimestri con le date |
🗂️ |
| Materiali condivisi dai docenti (Didattica) |
🏫 |
| Giorni di lezione e vacanze in un intervallo |
Date in formato YYYY-MM-DD (fuso Europe/Rome). ClasseViva espone solo l'anno scolastico in corso. I voti blu/annullati non entrano nelle medie.
Come funziona (OAuth)
sequenceDiagram
participant Claude
participant MCP as ClasseViva MCP<br/>/mcp
participant Auth as /authorize<br/>(pagina di login)
participant Spaggiari as Spaggiari<br/>API non ufficiale
Claude->>MCP: tools/list (senza token)
MCP-->>Claude: 401 + resource_metadata
Claude->>Auth: OAuth 2.1 + PKCE (+ DCR)
Note over Auth: l'utente inserisce le<br/>credenziali ClasseViva
Auth->>Spaggiari: login di verifica
Spaggiari-->>Auth: ok / errore
Auth-->>Claude: authorization code
Claude->>MCP: code → access token
Note over MCP: credenziali cifrate<br/>nelle props del grant
Claude->>MCP: get_grades / get_agenda / …
MCP->>Spaggiari: richiesta in lettura
Spaggiari-->>MCP: dati
MCP-->>Claude: risposta toolSicurezza e privacy
OAuth 2.1 con PKCE, Dynamic Client Registration e discovery standard, tramite
@cloudflare/workers-oauth-provider.Dopo il login, username e password non sono salvati in chiaro: restano solo nelle props del grant, cifrate con AES-GCM (chiave avvolta dal token). Nel KV di Cloudflare ci sono hash dei token e blob cifrati.
Il server non tiene una copia di voti o agenda: ogni domanda viene girata a ClasseViva in quel momento. La sessione Spaggiari (~90 min) vive solo in memoria e si rinnova da sola.
Nel database l'utente è uno pseudonimo (HMAC dell'username), non l'username in chiaro.
Login protetto da CSRF, cookie
__Host-, controlloOrigin, no-iframe, CSP restrittiva, rate limit (IP + username) e tetto ai fallimenti.Nessun log di credenziali o dati personali. Access token ~1 ora; il grant scade dopo 60 giorni di inutilizzo.
Limiti onesti. Spaggiari non offre un login delegato: il server deve poter usare la tua password per parlare con l'API. Devi fidarti di chi gestisce l'istanza e del codice (tutto qui, open source). L'API è non ufficiale e può cambiare o essere bloccata. L'istanza pubblica è pensata per uso personale e tra amici consapevoli; se gestisci i dati di altri (soprattutto minorenni) sei responsabile secondo il GDPR — in quel caso self-hosta la tua copia e non riusare l'istanza pubblica come servizio generico.
Self-hosting
Account Cloudflare gratuito + Node.js ≥ 20.
git clone https://github.com/leoron04/classeviva-mcp.git
cd classeviva-mcp
npm install
npx wrangler login
# 1. KV per OAuth — copia l'id in wrangler.toml ([[kv_namespaces]])
npx wrangler kv namespace create OAUTH_KV
# 2. Chiave per gli pseudonimi utente (consigliata)
openssl rand -hex 32 | npx wrangler secret put SUBJECT_KEY
# 3. Pubblica
npx wrangler deployIl connettore sarà https://classeviva-mcp.<tuo-sottodominio>.workers.dev/mcp. Opzionale: PUBLIC_URL in wrangler.toml se usi un dominio personalizzato.
Variabili e binding
Nome | Tipo | Descrizione |
| KV (obbligatorio) | Client, grant e token OAuth (hash + props cifrate) |
| Rate limit | 5 tentativi di login/min per IP e username |
| secret | ≥ 32 caratteri, pseudonimi utente |
| secret | opzionale: username ClasseViva ammessi, separati da virgola. Se impostato, l'istanza diventa privata |
| var | URL pubblico canonico |
| var | API alternativa (es. mock locale) |
| secret (legacy) | Solo modalità single-user deprecata |
Modalità legacy (deprecata)
La v1 esponeva /mcp/<MCP_SECRET> con un solo utente nei secret del Worker. Resta disponibile se imposti tutti i secret legacy, altrimenti risponde 404. Preferisci OAuth: verrà rimossa.
Sviluppo locale
cp .dev.vars.example .dev.vars # punta al mock Spaggiari
npm install
node test/mock-spaggiari.mjs & # :9999 — qualsiasi password tranne "wrong"
npm run dev # http://localhost:8787
CLASSEVIVA_USER=S1234567X CLASSEVIVA_PASS=prova npm run test:e2e -- http://localhost:8787test/e2e-oauth.mjs copre discovery, DCR, login, PKCE, token, refresh, initialize, tools/list e i tool. Contro un deploy reale usa le tue credenziali da env e non stampa dati personali. In CI gira solo contro il mock: npm run test:local.
Struttura
src/worker.ts OAuthProvider (/authorize, /token, /register, /mcp) + legacy
src/authorize.ts login: CSRF, rate limit, verifica Spaggiari, grant
src/pages.ts HTML (login, home, errori)
src/mcp.ts server MCP (Streamable HTTP, stateless)
src/tools.ts gli 11 tool
src/classeviva.ts client API + rinnovo sessione
src/clients.ts cache in-memory delle sessioni
src/legacy.ts /mcp/<MCP_SECRET> (deprecato)FAQ
Le mie credenziali finiscono in chat / nel README? No. Restano cifrate nel grant OAuth; non sono nel codice né nell'URL del connettore.
Devo aggiornare qualcosa ogni 90 minuti? No. Il server rinnova da solo la sessione Spaggiari alla richiesta successiva.
Funziona con ChatGPT / altri client? Se il client supporta MCP remoto con OAuth 2.1 (PKCE + DCR), sì. È pensato e testato con Claude.
Posso usarlo per tutta la scuola? Tecnicamente sì, ma non è consigliato sull'istanza pubblica: privacy (GDPR) e ToS Spaggiari. Self-hosta e ottieni il consenso.
Ho cambiato la password di ClasseViva. Scollega e ricollega il connettore in Claude.
Disclaimer
Progetto personale open source, non ufficiale e non affiliato a Gruppo Spaggiari Parma S.p.A. né alle scuole. «ClasseViva» e «Spaggiari» sono marchi dei rispettivi titolari. Usa un'API interna non documentata (la stessa dell'app mobile; la Z-Dev-ApiKey nel codice è quella pubblica dell'app, già presente in altri progetti open source) che può cambiare o essere bloccata. L'uso potrebbe non essere conforme ai termini di Spaggiari: usalo a tuo rischio, solo con account di cui hai diritto, e solo in lettura. Il software è fornito «così com'è», senza garanzie — vedi LICENSE.
Credits
Autore: Leonardo Ronchi (RonchFX / Parallax Studios)
Librerie: Model Context Protocol SDK, Cloudflare workers-oauth-provider, Wrangler
Ispirazione dalle API reverse-engineerate usate da progetti come Classeviva.py (non affiliati)
Segnalazioni di sicurezza: vedi SECURITY.md. Contributi: CONTRIBUTING.md.
English
ClasseViva MCP is an unofficial, open-source remote MCP server that connects the Italian school e-register ClasseViva (Spaggiari) to Claude (and other OAuth-capable MCP clients). Multi-user: each person signs in with their own credentials on an OAuth 2.1 (PKCE + dynamic client registration) login page. Credentials are never stored in plaintext — only inside the grant props, encrypted by @cloudflare/workers-oauth-provider. All 11 tools are read-only (grades with averages, agenda, lessons, absences, noticeboard, notes, subjects, periods, teaching materials, calendar).
Quick start in Claude: Settings → Connectors → Add custom connector → URL
https://classeviva-mcp.ronchfx.workers.dev/mcp.Self-host: free Cloudflare Workers plan — create
OAUTH_KV, setSUBJECT_KEY,wrangler deploy(see above).Privacy note: the public instance is for personal / friends use; for other people’s data (esp. minors) self-host and follow GDPR.
Disclaimer: not affiliated with Gruppo Spaggiari Parma S.p.A.; undocumented API may break; use only with accounts you are allowed to access, at your own risk.
License: MIT © 2026 Leonardo Ronchi / RonchFX · Parallax Studios
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Skool MCP server for ChatGPT, Claude and any AI agent: list members, approve membership request, create post, reply to comment, send DM, get members, churn and MRR, create calendar event and add course lesson in your own Skool account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Skool yourself; Cotlet does not store your password and you need no Skool API key. About the official Skool API: Skool has no public API and no developer docs (checked 10 Oct 2026). The only official connection is the Zapier plugin on the Pro plan, which sends new paid members and Membership Questions answers out and can invite a member or unlock a course. Setup and FAQ: https://cotlet.dev/integrations/skool-api-mcp-server
LearnWorlds MCP server for ChatGPT, Claude and any AI agent: list users, list course learners, enroll users, unenroll users, update tags, send message, suspend user and grade assessment in your own LearnWorlds account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to LearnWorlds yourself; Cotlet does not store your password and you need no LearnWorlds API key. About the official LearnWorlds API: LearnWorlds has a REST API (v2) for courses, users, bundles, subscriptions, promotions, payments and certifications, but it comes with the Learning Center plan and higher, and you need your own code to use it (checked 5 Nov 2026). LearnWorlds has no official MCP server. Setup and FAQ: https://cotlet.dev/integrations/learnworlds-api-mcp-server
Strava MCP server for ChatGPT, Claude and any AI agent: list activities, update activity gear, read club leaderboard, comment on activity, log manual activity and request account export in your own Strava account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Strava yourself; Cotlet does not store your password and you need no Strava API key. About the official Strava API: Strava has an official API and, since 1 June 2026, an official MCP connector (checked 27 Oct 2026). The MCP is read-only, works with Claude only and needs a paid Strava subscription. Setup and FAQ: https://cotlet.dev/integrations/strava-api-mcp-server
Absorb LMS MCP server for ChatGPT, Claude and any AI agent: list users, list course enrollments, list overdue learners, approve enrollment request, enroll users in a course, message learners, create user and deactivate user in your own Absorb LMS account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Absorb LMS yourself; Cotlet does not store your password and you need no Absorb LMS API key. About the official Absorb LMS API: Absorb LMS has an Integration API, a REST API with JSON for learners, courses, departments and grades, but it needs a private key tied to your portal that your Absorb account team provides, and your own code (checked 20 Oct 2026). Absorb's Aura MCP for Claude and ChatGPT is planned for 27 Oct 2026 and is read and answer only. Setup and FAQ: https://cotlet.dev/integrations/absorb-lms-api-mcp-server
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables natural language queries about grades, GPA, attendance, and schedules by connecting Claude to StudentVue school dashboards. Includes analytical tools for grade simulation, what-if scenarios, and academic performance tracking based on live school data.19-
- AlicenseAqualityBmaintenanceConnect Claude and other MCP clients to your Smartschool account to ask about grades, assignments, messages, and your schedule in plain language.1327 PyPI6MIT
- AlicenseBqualityBmaintenanceEnables Claude to query your KRÉTA student data locally and read-only, including timetables, homework, grades, tests, and absences, using your own credentials via OAuth/PKCE.203Apache 2.0
- AlicenseAqualityCmaintenanceEnables Claude to read EcoleDirecte school data (grades, homework, absences, messages) locally via MCP, without sharing credentials.5MIT