icampus-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ICAMPUS_MCP_TOKENS | No | Bearer token(s) used to authenticate requests to the MCP HTTP server. Required for HTTP mode unless using Cloudflare Access. | |
| ICAMPUS_MCP_API_URL | No | Base URL of the icampus REST API server (e.g., http://<server>:9013). Used for stdio mode. | |
| ICAMPUS_MCP_API_TOKEN | No | API token used to authenticate with the icampus REST API. Used for stdio mode. | |
| ICAMPUS_MCP_ACCESS_AUD | No | Cloudflare Access application AUD tag(s), comma-separated. Required for Cloudflare Access authentication. | |
| ICAMPUS_MCP_ACCESS_TEAM | No | Cloudflare Access team name, e.g., myteam.cloudflareaccess.com. Required if using Cloudflare Access authentication. | |
| ICAMPUS_MCP_ACCESS_EMAILS | No | Comma-separated list of emails allowed to access the MCP server via Cloudflare Access. | |
| ICAMPUS_MCP_ALLOWED_HOSTS | No | Public hostname(s) allowed to reach the MCP server, must include the public hostname used with Cloudflare Access. |
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 |
|---|---|
| sync_statusA | When the data was last refreshed (per dataset), whether the last runs worked, and any login problem. Call this first if answers look stale or empty. |
| list_coursesA | This term's courses: id, code (e.g. CSE1001), name, instructors and the current grade if visible. |
| list_tasksA | Things to do across courses, soonest first: the iCampus remaining list merged with Canvas assignment/quiz submission status and lecture completion. Items with no due date come last. |
| list_announcementsA | Recent course announcements (title, date, author, read state, a short preview), newest first.
Use read_announcement with an |
| read_announcementA | Full text of one announcement (by the numeric |
| list_lecturesA | Lecture videos/materials with completion and attendance as iCampus shows them, soonest deadline first. By default: items already open, not completed, whose deadline (incl. late period) has not passed. |
| get_gradesB | Course totals and per-assignment scores as Canvas shows them to you (hidden grades stay hidden). |
| refreshA | Ask the collector to sync from iCampus now. Returns immediately; a sync takes about a minute. Limited to once every few minutes. Check sync_status afterwards. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools clearly target distinct resources: announcements, courses, tasks, lectures, grades, and sync status. The only mild overlap is list_tasks including lecture completion while list_lectures also reports completion, but their primary purposes are still distinguishable. refresh and sync_status are complementary rather than competing.
The dominant list_* prefix creates a mostly readable pattern, and read_announcement and get_grades fit loosely within it. However, refresh and sync_status break the verb_noun style, and pluralization is inconsistent with list_announcements vs. read_announcement. The naming is understandable but not fully predictable.
Eight tools is well within the ideal range for a campus portal integration. Each tool covers a distinct area—announcements, courses, tasks, lectures, grades, and sync—without redundancy or bloat.
The read-only scope is well covered: announcements have list/detail, the major coursework views have dedicated list endpoints, grades are exposed, and sync status is handled. Minor gaps exist such as no per-course detail or task/lecture detail endpoints, but common workflows around due work, lectures, and grades are fully supported.