Smartschool MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind address (HTTP only) | 0.0.0.0 |
| MCP_PORT | No | Port (HTTP only) | 8000 |
| MCP_API_KEY | No | Static Bearer token (single-user mode) | |
| MCP_TRANSPORT | No | stdio or streamable-http | stdio |
| MCP_UNIVERSAL | No | Enable universal mode (set to 1, true, or yes) | |
| SMARTSCHOOL_MFA | No | Date of birth YYYY-MM-DD (if required) | |
| SESSION_TTL_SECONDS | No | How long to cache sessions (universal mode) | 3600 |
| SMARTSCHOOL_MAIN_URL | No | School hostname, e.g. school.smartschool.be | |
| SMARTSCHOOL_PASSWORD | No | Your Smartschool password | |
| SMARTSCHOOL_USERNAME | No | Your Smartschool username |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_coursesA | Retrieve all available courses with their teachers. Returns: List of courses with name and teacher information. |
| get_resultsA | Retrieve student results/grades with detailed information. Args: limit: Maximum number of results to return (default: 15) offset: Number of results to skip from the beginning (default: 0) course_filter: Filter results by course name (partial match, case-insensitive) include_details: Whether to fetch detailed info (teacher, average, median) - saves API calls if False Returns: Dictionary with results list and pagination info. Examples: - get_results() -> First 15 results with details - get_results(course_filter="Math") -> Results from courses containing "Math" - get_results(include_details=False) -> Basic info only, faster response |
| get_future_tasksB | Retrieve upcoming assignments and tasks. Returns: Dictionary with future tasks organized by date and course. |
| get_messagesA | Retrieve messages from the specified mailbox with filtering options. Args: limit: Maximum number of messages to return (default: 15) offset: Number of messages to skip from the beginning (default: 0) box_type: Type of mailbox - "INBOX", "SENT", "DRAFT", "SCHEDULED", "TRASH" (default: "INBOX") search_query: Search in subject and body content (case-insensitive) sender_filter: Filter messages by sender name (partial match, case-insensitive) include_body: Whether to include full message body (default: False for performance) Returns: Dictionary with messages list and pagination info. Examples: - get_messages() -> First 15 inbox messages (headers only) - get_messages(search_query="homework") -> Messages containing "homework" - get_messages(sender_filter="teacher") -> Messages from senders containing "teacher" - get_messages(include_body=True) -> Full messages with body content |
| get_scheduleA | Retrieve the lesson schedule for a given day. Args: date_offset: Days from today (0=today, 1=tomorrow, -1=yesterday, default: 0) Returns: Dictionary with the lessons scheduled for the given date. |
| get_periodsA | Retrieve academic periods/terms for the current school year. Returns: List of academic periods with name, dates, and active status. |
| get_reportsA | Retrieve available academic report cards. Returns: List of report cards with name, date, class, and school year label. |
| get_planned_elementsB | Retrieve planned assignments and to-dos from the Smartschool planner. Args: days_ahead: Number of days ahead to fetch (default: 34) Returns: Dictionary with planned elements including dates, courses, and assignment types. |
| get_student_support_linksA | Retrieve student support links and resources. Returns: List of visible support links with name, description, and URL. |
| get_attachmentsA | List all attachments for a specific message. Args: message_id: The ID of the message to get attachments for (from get_messages results). Returns: Dictionary with attachment list including file names, sizes, and IDs for downloading. Examples: - get_attachments(249184) -> List attachments for message 249184 |
| download_attachmentA | Download a specific attachment from a message. Files are saved to save_path when provided, otherwise to
~/Downloads/smartschool/. The directory is created automatically.
Existing files are never overwritten — a counter suffix is appended
instead (e.g. Args: message_id: The ID of the message containing the attachment. file_id: The file ID of the attachment to download (from get_attachments). save_path: Optional directory to save the file into. Returns: Dictionary with the saved file path, filename, mime type, and bytes written. Examples: - download_attachment(249184, 12345) -> Download to ~/Downloads/smartschool/ - download_attachment(249184, 12345, "/tmp") -> Download to /tmp/ |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/MauroDruwel/Smartschool-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server