About Smartschool MCP
Smartschool MCP is an MCP server published by MauroDruwel in the AI category: a dynamic Model Context Protocol (MCP) server that provides AI assistants with secure access to Smartschool APIs. This server automatically discovers all available Smartschool methods and exposes them as MCP tools with comprehensive safety guardrails.
Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/MauroDruwel/Smartschool-MCPThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (13)
download_attachmentDownload a specific attachment by message and file ID
Parameters not published.
download_homepage_imageDownload an image embedded in a homepage block
Parameters not published.
get_attachmentsList attachments for a specific message
Parameters not published.
get_coursesList enrolled courses with teacher info
Parameters not published.
get_future_tasksUpcoming assignments organised by date
Parameters not published.
get_homepage_blocks"In de kijker" blocks pinned to the homepage (e.g. monthly menu, calendar)
Parameters not published.
get_messagesInbox/sent/trash with search, sender filter, and body retrieval
Parameters not published.
get_periodsAcademic terms for the current school year
Parameters not published.
get_planned_elementsPlanner items for the next N days
Parameters not published.
get_reportsAvailable report cards
Parameters not published.
Show all 13 tools
get_resultsGrades with optional filtering, pagination, and statistics
Parameters not published.
get_scheduleDay schedule by offset (0 = today, 1 = tomorrow, …)
Parameters not published.
get_student_support_linksSchool support resources and links
Parameters not published.
Ask AI
Ask AI about Smartschool MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
3 checks have not been run yet.
Releases
README
Smartschool MCP Server
Connect Claude (and other MCP clients) to your Smartschool account — ask about grades, assignments, messages, and your schedule in plain language.
Tools
| Tool | What it does |
|---|---|
get_courses |
List enrolled courses with teacher info |
get_results |
Grades with optional filtering, pagination, and statistics |
get_future_tasks |
Upcoming assignments organised by date |
get_messages |
Inbox/sent/trash with search, sender filter, and body retrieval |
get_schedule |
Day schedule by offset (0 = today, 1 = tomorrow, …) |
get_periods |
Academic terms for the current school year |
get_reports |
Available report cards |
get_planned_elements |
Planner items for the next N days |
get_student_support_links |
School support resources and links |
get_attachments |
List attachments for a specific message |
download_attachment |
Download a specific attachment by message and file ID |
Quick start — Claude Desktop
uvx mcp install smartschool-mcp \
-e SMARTSCHOOL_USERNAME="you" \
-e SMARTSCHOOL_PASSWORD="secret" \
-e SMARTSCHOOL_MAIN_URL="school.smartschool.be" \
-e SMARTSCHOOL_MFA="YYYY-MM-DD"
Or add it manually to claude_desktop_config.json:
{
"mcpServers": {
"smartschool": {
"command": "uvx",
"args": ["smartschool-mcp"],
"env": {
"SMARTSCHOOL_USERNAME": "you",
"SMARTSCHOOL_PASSWORD": "secret",
"SMARTSCHOOL_MAIN_URL": "school.smartschool.be",
"SMARTSCHOOL_MFA": "YYYY-MM-DD"
}
}
}
}
Config file locations: %APPDATA%\Claude\claude_desktop_config.json (Windows) · ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) · ~/.config/Claude/claude_desktop_config.json (Linux)
Remote / claude.ai
The server supports Streamable HTTP transport for use as a remote integration on claude.ai.
Single-user mode
One server instance, your credentials in environment variables:
export SMARTSCHOOL_USERNAME="..."
export SMARTSCHOOL_PASSWORD="..."
export SMARTSCHOOL_MAIN_URL="school.smartschool.be"
export SMARTSCHOOL_MFA="YYYY-MM-DD"
export MCP_API_KEY="a-long-random-secret" # optional but recommended
smartschool-mcp --transport streamable-http --host 0.0.0.0 --port 8000
Add to claude.ai → Settings → Integrations:
- URL:
https://your-domain.example.com/mcp - Authorization header:
Bearer <your MCP_API_KEY>(if set)
Universal mode
One hosted server instance serves any Smartschool user — no per-user deployment needed.
smartschool-mcp --transport streamable-http --universal --host 0.0.0.0 --port 8000
Credentials are passed on every request:
| What | Where | Example |
|---|---|---|
| School URL | URL query param school |
?school=myschool.smartschool.be |
| Date of birth (MFA) | URL query param mfa |
&mfa=2000-01-15 |
| Username | OAuth Client ID | your Smartschool username |
| Password | OAuth Client Secret | your Smartschool password |
In claude.ai → Settings → Integrations → Add custom connector:
- URL:
https://your-domain.example.com/mcp?school=myschool.smartschool.be&mfa=YYYY-MM-DD - OAuth Client ID: your Smartschool username
- OAuth Client Secret: your Smartschool password
MFA is your date of birth in
YYYY-MM-DDformat. Omit themfaparam if your account does not require it.
Making the server publicly accessible
Claude.ai requires HTTPS. Some options:
| Option | Command |
|---|---|
| Cloudflare Tunnel | cloudflared tunnel --url http://localhost:8000 |
| ngrok | ngrok http 8000 |
| VPS | nginx / Caddy with a Let's Encrypt cert |
Environment variables
| Variable | CLI flag | Default | Description |
|---|---|---|---|
MCP_TRANSPORT |
--transport |
stdio |
stdio or streamable-http |
MCP_HOST |
--host |
0.0.0.0 |
Bind address (HTTP only) |
MCP_PORT |
--port |
8000 |
Port (HTTP only) |
MCP_API_KEY |
— | — | Static Bearer token (single-user mode) |
MCP_UNIVERSAL |
--universal |
off | Enable universal mode (set to 1, true, or yes) |
SESSION_TTL_SECONDS |
— | 3600 |
How long to cache sessions (universal mode) |
SMARTSCHOOL_USERNAME |
— | — | Your Smartschool username |
SMARTSCHOOL_PASSWORD |
— | — | Your Smartschool password |
SMARTSCHOOL_MAIN_URL |
— | — | School hostname, e.g. school.smartschool.be |
SMARTSCHOOL_MFA |
— | — | Date of birth YYYY-MM-DD (if required) |
Contributing
PRs are welcome. Run uv sync --extra dev to install dev dependencies, then uv run pytest / uv run ruff check . / uv run mypy smartschool_mcp/ before submitting.
Disclaimer
Unofficial tool, not affiliated with Smartschool. Use in accordance with your school's terms of service.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.