The IntelliPlan MCP server (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/UAnirudh/IntelliPlan/llms.txt
Use this file to discover all available pages before exploring further.
intelliplan_mcp.py) wraps the public IntelliPlan REST API in the Model Context Protocol, making every IntelliPlan capability available as a native tool inside any MCP-aware AI client. Once wired in, Claude Desktop can look up your assignments and build a personalised study schedule without leaving the chat window; Cursor can check your streak while you code; Claude Code can create tasks directly from a conversation. The server is a thin async layer — it holds no state of its own, translates tool calls into authenticated HTTP requests, and streams the JSON responses back to the client.
Prerequisites
Install Python Dependencies
The MCP server requires two packages. Install them into whichever Python environment your MCP client will use to launch the server:If either package is missing when the server starts, it prints a clear error to stderr and exits rather than silently failing mid-session.
Get an API Token
The MCP server authenticates as you using an The response contains a
Authorization: Bearer token — not an API key. This is a first-party token tied to your IntelliPlan credentials, which gives it full scope access without the application-review process required for third-party keys.Exchange your email and password for a token at the auth endpoint:POST /api/v1/auth/token
token field. Copy that value — you will set it as an environment variable in the next step.Configuring Claude Desktop
Add the following block to your Claude Desktop configuration file. On macOS the config lives at~/Library/Application Support/Claude/claude_desktop_config.json; on Windows at %APPDATA%\Claude\claude_desktop_config.json.
claude_desktop_config.json
Make sure the
intelliplan_mcp.py path in args is either absolute or relative to a working directory that Claude Desktop resolves correctly. An absolute path (e.g. /Users/you/intelliplan/intelliplan_mcp.py) is the safest choice.“What assignments do I have due this week?”Claude will call
list_assignments automatically and present the results inline.
Configuring Cursor
In Cursor, open Settings → MCP and add a new server entry using the same structure:Cursor MCP Settings
Running Standalone
You can also run the server directly to verify connectivity before wiring it into a client:INTELLIPLAN_API_TOKEN is not set, a warning is printed to stderr but the process does not exit — tools will return 401 responses until the variable is set.
Available Tools
All tools are exposed asasync functions via FastMCP. Each one performs a single authenticated HTTP request against https://intelliplan.tech/api/v1/ and returns the raw JSON response as a formatted string.
list_assignments
Returns every assignment IntelliPlan knows about for the authenticated student — Canvas, StudentVue, Schoology, Notion, and manual tasks. Each item includes
title, course, due_date, priority, estimated_time, and source.create_task
Creates a manual task or homework item. Accepts
title (required), due_date (ISO YYYY-MM-DD), priority (High / Medium / Low), course, estimated_time (minutes, default 60), and notes.dismiss_assignment
Marks an assignment as done by
title. The assignment is hidden from the active list but can be restored.restore_assignment
Un-dismisses a previously dismissed assignment, returning it to the active assignment list.
list_tests
Returns every assignment the student has flagged as a test, for focused exam-mode views.
mark_as_test
Flags an assignment as a test by
title. Optionally accepts course and due_date to disambiguate when multiple assignments share the same name.unmark_test
Removes the test flag from an assignment identified by
title.generate_schedule
Runs IntelliPlan’s AI scheduler to produce a personalised study plan. Accepts
hours_per_day (default 2.0), preferred_time (morning / afternoon / evening), and custom_tasks (extra topics to schedule beyond known assignments).get_streak
Returns the student’s current streak day count, sparks balance, level, longest streak, and weekly quest progress.
get_profile
Returns the student’s learning profile: grade level, focus areas, goals, and availability.
update_profile
Updates any combination of
grade_level, focus_areas (list), goals, and weekly_commitments. Only fields you pass are changed.api_info
Returns the IntelliPlan API endpoint catalogue and version. Useful for discovery — call this to see what routes are available.
Tool Reference
list_assignments
list_assignments
HTTP:
GET /api/v1/assignmentsNo parameters. Returns the full unified assignment list across all connected sources.Example Response (truncated)
create_task
create_task
HTTP:
POST /api/v1/tasksWhat needs to get done.
ISO date string (
YYYY-MM-DD), or omit for no due date.High, Medium, or Low.Course or category name.
Estimated time in minutes.
Free-form notes attached to the task.
dismiss_assignment / restore_assignment
dismiss_assignment / restore_assignment
HTTP:
POST /api/v1/assignments/dismiss and POST /api/v1/assignments/restoreThe exact title of the assignment to dismiss or restore.
list_tests
list_tests
HTTP:
GET /api/v1/testsNo parameters. Returns all assignments flagged as tests.mark_as_test / unmark_test
mark_as_test / unmark_test
generate_schedule
generate_schedule
get_streak
get_streak
HTTP:
GET /api/v1/streakNo parameters. Returns streak_days, sparks, level, longest_streak, and weekly quest progress fields.get_profile / update_profile
get_profile / update_profile
HTTP:
GET /api/v1/identity and PATCH /api/v1/identityupdate_profile accepts any combination of the following fields; omitted fields are left unchanged:e.g.
"11th grade"e.g.
["Math", "Physics", "Test prep (SAT / ACT / AP)"]Free-text learning goals.
Free-text description of extracurriculars, sports, or other recurring commitments.
api_info
api_info
HTTP:
GET /api/v1/docsNo parameters. Returns the IntelliPlan API endpoint catalogue and version string. Call this tool for discovery — it lists all available routes without requiring specific scopes.Example Conversations
- Study Schedule
- Quick Task Creation
- Streak Check
- Profile Update
Ask Claude to build a schedule using your actual assignments:
“I have 2 hours free each evening this week. Build me a study plan.”Claude will call
list_assignments to fetch what’s due, then generate_schedule with hours_per_day: 2.0 and preferred_time: "evening", and present the resulting plan as a formatted table.Troubleshooting
401 Unauthorized on every tool call
401 Unauthorized on every tool call
Server not appearing in Claude Desktop
Server not appearing in Claude Desktop
- Confirm the
intelliplan_mcp.pypath inargsis absolute and the file exists. - Confirm
pythonresolves to the environment wheremcpandhttpxare installed. Use the full path to the interpreter if needed (e.g./usr/local/bin/python3). - Check Claude Desktop logs for stderr output from the server startup.
ImportError: No module named 'mcp'
ImportError: No module named 'mcp'
The If you manage multiple environments, use the full path to
mcp package is not installed in the Python environment Claude Desktop is using to launch the server.pip: /path/to/venv/bin/pip install "mcp[cli]" httpx.Connecting to a local IntelliPlan instance
Connecting to a local IntelliPlan instance
Set The server strips trailing slashes from
INTELLIPLAN_API_BASE to your local server address:INTELLIPLAN_API_BASE automatically, so http://localhost:5000/ works too.