iitkgp-erp-mcp
Allows exporting the timetable to Google Calendar via ICS file format.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iitkgp-erp-mcp what's my current CGPA?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
iitkgp-erp-mcp
MCP server for IIT Kharagpur ERP. Query your grades, CGPA, attendance, timetable, placements, and more through any AI agent.
Works with: Claude Code, Claude Desktop, Cursor, Cline, Continue, Zed, custom agents — anything that speaks MCP.
Install
pip install iitkgp-erp-mcp
playwright install chromiumRelated MCP server: mcp-guap
Setup
iitkgp-erp-setupThis stores your credentials securely in your OS keychain.
Usage
Add to your MCP client config (.mcp.json, mcp_servers.json, etc.):
{
"mcpServers": {
"iitkgp-erp": {
"command": "iitkgp-erp-mcp"
}
}
}Then ask your AI agent:
"What's my CGPA?"
"Show my grades for semester 4"
"Compare my performance in CS vs MA subjects"
"If I get A in all subjects this sem, what's my CGPA?"
"Which breadth electives should I take?"
"Any new placement notices for SDE roles?"
"Can I skip tomorrow's Signals class?"
"What's my schedule today?"
"Export my timetable to Google Calendar"
"Browse the fee payment page"
Available Tools (25)
Grades & GPA
Tool | Description |
| Login to ERP (handles OTP) |
| End session |
| Fetch grades (all or specific semester) |
| Current CGPA |
| SGPA for a semester |
| Semester-wise CGPA/SGPA progression |
| Compare across subjects |
| Projected CGPA calculator |
| Grade breakdown (EX/A/B/C/D/P/F counts) |
Attendance
Tool | Description |
| All subjects with attendance % |
| Subjects below 80% danger zone |
| How many classes you can safely miss |
Elective Recommender
Tool | Description |
| Suggests electives based on your grade patterns |
| Your top 5 best/worst subjects |
| Average GPA by department |
Timetable & Schedule
Tool | Description |
| Full week or specific day schedule |
| Today's classes |
| Find a professor's location via timetable |
| Export to ICS format (Google Calendar, Apple Calendar) |
Placements & Notices
Tool | Description |
| CDC notices, filterable by keyword |
| Full text of a specific notice |
| Academic announcements |
Explorer
Tool | Description |
| Navigate any ERP page freely |
| Find ERP pages by keyword |
Utility
Tool | Description |
| Clear locally cached data |
Security
Credentials stored in OS keychain (never plaintext)
Session is local to your machine
OTP entered live, never stored
Nothing sensitive is committed to git
How it works
Your AI Agent ←→ MCP Protocol (stdio) ←→ iitkgp-erp-mcp server
│
├── iitkgp-erp-login (auth)
├── requests + BeautifulSoup (scraping)
└── Playwright (JS-heavy pages)
│
▼
erp.iitkgp.ac.inGrading Scale
Grade | Points |
EX | 10 |
A | 9 |
B | 8 |
C | 7 |
D | 6 |
P | 5 |
F | 0 |
Roadmap
Grades & GPA tools
Attendance tracking + alerts
Elective recommender
Placement notice integration
Timetable extraction
Calendar sync (ICS export)
Prof finder
Academic notices
Freeform ERP browser
Batch grade distributions (historical data)
Registration status
Fee payment status
Hostel info
Contributing
PRs welcome! The scrapers in src/scrapers/ may need selector updates if ERP changes its HTML structure.
License
MIT
Available Tools
28 toolsbrowse_erp_pageA
Browse any ERP page. Pass a path like 'Academic/notices.htm' or full URL. Returns page title, text content, tables, and links found.
Inputs: path (required). Returns: result
can_i_skipA
Check how many classes you can skip for a subject and still stay above 80%.
Inputs: subject_code (required). Returns: result
check_slot_conflicts_toolA
Check if any of your registered subjects have slot conflicts.
Inputs: no named parameters. Returns: result
clear_cacheB
Clear locally cached ERP data.
Inputs: no named parameters. Returns: result
compare_subjects_toolB
Compare performance across subjects. Pass comma-separated codes or names. Example: 'CS10001,MA10001' or 'Programming,Mathematics'
Inputs: subjects (required). Returns: result
erp_loginA
Login to IIT KGP ERP. If OTP is required, pass it as a parameter.
Inputs: otp. Returns: result
erp_logoutA
Logout from ERP and clear the session.
Inputs: no named parameters. Returns: result
export_timetable_icsA
Export timetable as ICS (calendar) format. Optionally pass semester start date (YYYY-MM-DD). You can import the output into Google Calendar, Apple Calendar, etc.
Inputs: semester_start. Returns: result
get_academic_noticesC
Get academic notices/announcements. Optionally filter by keyword.
Inputs: keyword. Returns: result
get_attendanceA
Get attendance for all subjects in current semester.
Inputs: no named parameters. Returns: result
get_attendance_alertsB
Get subjects where attendance is below threshold (default 80%).
Inputs: threshold. Returns: result
get_cgpaC
Get your current CGPA.
Inputs: no named parameters. Returns: result
get_cgpa_trend_toolB
Get semester-wise CGPA and SGPA progression.
Inputs: no named parameters. Returns: result
get_credit_summary_toolA
Get credit summary — total credits and breakdown by type (core, elective, lab, etc.).
Inputs: no named parameters. Returns: result
get_department_performanceA
See your average performance grouped by department (CS, MA, EE, etc.).
Inputs: no named parameters. Returns: result
get_grade_distribution_toolB
Get your grade distribution (count of each grade).
Inputs: no named parameters. Returns: result
get_gradesA
Fetch grades. Pass semester like 'Semester 3' to filter, or leave empty for all.
Inputs: semester. Returns: result
get_notice_detailA
Get full details of a specific placement notice. Pass the URL from get_placement_notices.
Inputs: notice_url (required). Returns: result
get_placement_noticesA
Get placement/internship notices from CDC. Optionally filter by keyword. Example: 'SDE', 'Google', 'internship'
Inputs: keyword. Returns: result
get_registered_subjectsA
Get all subjects you're currently registered for this semester.
Inputs: no named parameters. Returns: result
get_sgpaC
Get SGPA for a specific semester. Example: 'Semester 3'
Inputs: semester (required). Returns: result
get_strengths_weaknessesB
Find your strongest and weakest subjects based on grades.
Inputs: no named parameters. Returns: result
get_timetableA
Get your timetable. Pass a day like 'Monday' to filter, or leave empty for full week.
Inputs: day. Returns: result
get_today_classesB
Get today's class schedule.
Inputs: no named parameters. Returns: result
recommend_electives_toolB
Recommend electives based on your grade history and strengths. Types: 'breadth', 'depth', 'open'
Inputs: elective_type. Returns: result
search_erp_pagesA
Search for ERP pages by keyword. Returns matching page paths. Examples: 'grades', 'fee', 'hostel', 'library'
Inputs: query (required). Returns: result
what_if_cgpa_toolA
Calculate projected CGPA with hypothetical grades. Pass as JSON: [{"credits": 4, "grade": "A"}, {"credits": 3, "grade": "B"}]
Inputs: projected_grades (required). Returns: result
where_is_profA
Find where a professor is based on timetable data. Pass partial name like 'sharma' or 'Prof Kumar'.
Inputs: prof_name (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Each tool has a distinct purpose with minimal overlap. For example, get_attendance and get_attendance_alerts target different information, and get_cgpa, get_sgpa, get_cgpa_trend are clearly separated. The functions cover unique academic queries, making it easy for an agent to select the right one.
Most tools follow a verb_noun pattern in snake_case (e.g., get_attendance, check_slot_conflicts). However, there is inconsistency with the '_tool' suffix appearing on some (e.g., compare_subjects_tool) but not others. Also, erp_login/erp_logout use a prefix instead of a noun. Overall, the pattern is mostly consistent.
With 28 tools, the set is on the higher end but reasonable for a comprehensive ERP system covering attendance, grades, timetable, notices, and more. Each tool addresses a specific need, and the count is not excessive given the domain complexity.
The tool set covers many common ERP queries (attendance, grades, timetable, notices) but lacks write operations (e.g., course registration, fee payment). It is read-heavy, missing some lifecycle actions one might expect from an ERP interface. This creates minor gaps for agents needing to perform updates.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSimple MCP server that exposes a tool to fetch student result/CGPA data from MANIT ERP APIs.ISC
- FlicenseAqualityDmaintenanceMCP server for ГУАП's student portal enabling AI agents to manage tasks, materials, and reports.112-
- AlicenseNot gradedqualityBmaintenanceAn MCP server that connects AI assistants to university D2L Brightspace and Piazza, enabling query of courses, grades, assignments, deadlines, files, and Piazza posts.7MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides information about IIT Guwahati campus life using a RAG pipeline backed by Qdrant Cloud.-