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 |
Capabilities
Features and capabilities supported by this server
| 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
- 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