Skip to main content
Glama
iitkgp-erp-mcp
by MSR327

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 chromium

Related MCP server: mcp-guap

Setup

iitkgp-erp-setup

This 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

erp_login

Login to ERP (handles OTP)

erp_logout

End session

get_grades

Fetch grades (all or specific semester)

get_cgpa

Current CGPA

get_sgpa

SGPA for a semester

get_cgpa_trend

Semester-wise CGPA/SGPA progression

compare_subjects

Compare across subjects

what_if_cgpa

Projected CGPA calculator

get_grade_distribution

Grade breakdown (EX/A/B/C/D/P/F counts)

Attendance

Tool

Description

get_attendance

All subjects with attendance %

get_attendance_alerts

Subjects below 80% danger zone

can_i_skip

How many classes you can safely miss

Elective Recommender

Tool

Description

recommend_electives

Suggests electives based on your grade patterns

get_strengths_weaknesses

Your top 5 best/worst subjects

get_department_performance

Average GPA by department

Timetable & Schedule

Tool

Description

get_timetable

Full week or specific day schedule

get_today_classes

Today's classes

where_is_prof

Find a professor's location via timetable

export_timetable_ics

Export to ICS format (Google Calendar, Apple Calendar)

Placements & Notices

Tool

Description

get_placement_notices

CDC notices, filterable by keyword

get_notice_detail

Full text of a specific notice

get_academic_notices

Academic announcements

Explorer

Tool

Description

browse_erp_page

Navigate any ERP page freely

search_erp_pages

Find ERP pages by keyword

Utility

Tool

Description

clear_cache

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.in

Grading 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 tools
browse_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

    B3.4/5.0

    Scored across 28 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count4/5

    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.

    Completeness3/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers