Skip to main content
Glama
MauroDruwel

Smartschool MCP Server

by MauroDruwel

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoBind address (HTTP only)0.0.0.0
MCP_PORTNoPort (HTTP only)8000
MCP_API_KEYNoStatic Bearer token (single-user mode)
MCP_TRANSPORTNostdio or streamable-httpstdio
MCP_UNIVERSALNoEnable universal mode (set to 1, true, or yes)
SMARTSCHOOL_MFANoDate of birth YYYY-MM-DD (if required)
SESSION_TTL_SECONDSNoHow long to cache sessions (universal mode)3600
SMARTSCHOOL_MAIN_URLNoSchool hostname, e.g. school.smartschool.be
SMARTSCHOOL_PASSWORDNoYour Smartschool password
SMARTSCHOOL_USERNAMENoYour Smartschool username

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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. report (1).pdf).

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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