Smartschool MCP
About
Smartschool MCP: A Model Context Protocol (MCP) server that enables seamless communication between AI agents and the Smartschool platform. π§
Details
- Author
- MauroDruwel
- GitHub stars
- 2
- Downloads
- 29
- Categories
- Other
Jump to
- List enrolled courses with teacher info
- View grades with filtering, pagination, and statistics
- Retrieve upcoming assignments organised by date
- Browse inbox, sent, and trash messages with search
- Fetch day schedule by offset
- Access academic terms and report cards
- Get planner items for the next N days
- Download message attachments
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Smartschool MCPCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install it with uvx mcp install smartschool-mcp and set environment variables (SMARTSCHOOL_USERNAME, SMARTSCHOOL_PASSWORD, SMARTSCHOOL_MAIN_URL, and optionally SMARTSCHOOL_MFA). For Claude Desktop, add the configuration to claude_desktop_config.json. For remote use on claude.ai, run the server with --transport streamable-http in singleβuser or universal mode, then configure a custom integration in claude.ai with the server URL and credentials.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"smartschool mcp": {
"smartschool": {
"command": "uvx",
"args": [
"smartschool-mcp"
],
"env": {
"SMARTSCHOOL_USERNAME": "your_username",
"SMARTSCHOOL_PASSWORD": "your_password",
"SMARTSCHOOL_MAIN_URL": "your-school.smartschool.be",
"SMARTSCHOOL_MFA": "YYYY-MM-DD"
}
}
}
}
}
McpServers
{
"smartschool": {
"command": "uvx",
"args": [
"smartschool-mcp"
],
"env": {
"SMARTSCHOOL_USERNAME": "your_username",
"SMARTSCHOOL_PASSWORD": "your_password",
"SMARTSCHOOL_MAIN_URL": "your-school.smartschool.be",
"SMARTSCHOOL_MFA": "YYYY-MM-DD"
}
}
}
Smartschool MCP Server
<!-- mcp-name: io.github.MauroDruwel/smartschool-mcp -->
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-DD format. Omit the mfa param 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.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



