IIITH Mess MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MESS_AUTH_KEY | Yes | Your auth key from mess.iiit.ac.in (Settings > Auth Keys) or a session cookie |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| mess_cas_login_infoA | Get instructions for IIIT student CAS login (browser-only, cannot be called via API/AJAX). Returns: Step-by-step instructions for obtaining a session cookie |
| mess_login_msitA | Login as an MSIT student or intern using email + password. Args: params: user (email address), password Returns: JSON User object. 'session_hint' contains the session cookie value to pass as 'session' in subsequent tool calls. |
| mess_get_meB | Get the currently logged-in user's profile. Args: params: auth_key or session Returns: JSON User object (id, name, email, roll_number, token, attributes, tags) |
| mess_get_auth_keysA | Get all auth keys for the current user (including expired ones). Args: params: auth_key or session Returns: JSON array of AuthKey objects (name, user_id, created_at, expires_at) |
| mess_create_auth_keyA | Create a new API auth key. Key names must be unique. Args: params: auth_key/session, name (unique friendly name), expiry (YYYY-MM-DD) Returns: JSON AuthKey including the key value — save this, it won't be shown again. Returns 409 if a key with the same name already exists. |
| mess_get_auth_key_infoB | Get info about the auth key currently in use (passed in Authorization header). Args: params: auth_key (the key to inspect) Returns: JSON AuthKey details. Returns 401/403 if the key is expired. |
| mess_delete_auth_keyA | Delete an auth key by its name (not its value). Identified by name in the URL path. Args: params: auth_key/session for auth, name = the friendly name of the key to delete Returns: JSON status 204 on success |
| mess_reset_qr_tokenB | Reset the user's QR code token (shown at the mess counter). Args: params: auth_key or session Returns: JSON { token: string } — new URL-safe base64 token |
| mess_generate_reset_password_otpA | Send a password reset OTP to the given email. Only for MSIT/intern accounts. Rate limited to once per minute. Returns 204 even if email is invalid. Args: params: email address Returns: JSON status 204 on success |
| mess_complete_password_resetA | Complete password reset with OTP + new password. Args: params: email, otp (6-digit string e.g. '123456'), password (new password) Returns: JSON status 204 on success |
| mess_get_infoA | Get info about all messes (name, short_name, color, tags, rating, billing_id). No auth required. Returns: JSON array of MessInfo objects |
| mess_get_menusA | Get the food menu for all messes on a date. No auth required. Use to answer "what's for lunch today?", "what's on the menu this week?", "what is [mess] serving for dinner?". Menu structure per mess: { day_name: { meal: [{ category, name }] } } Menus are stored week-wise (Sunday-anchored). effective_from always falls on a Sunday. Args: params: on (YYYY-MM-DD, optional, defaults to today) Returns: JSON array of { mess, updated_at, effective_from, days } |
| mess_get_ratesA | Get mess rates (in paise) for a meal on a date, grouped by category. Categories: registered, unregistered, guest, extra. Args: params: meal (required), on (YYYY-MM-DD, optional) Returns: JSON { category: [{ mess, day, rate }] } — rate in paise |
| mess_get_capacitiesA | Get mess capacities for a meal on a date, grouped by category. Args: params: meal (required), on (YYYY-MM-DD, optional) Returns: JSON { category: [{ mess, available, capacity }] } |
| mess_get_registrationsA | Look up what meals the user is registered for over a date range. Use this to answer: "what am I eating today/tomorrow/this week?", "show my registrations", "which meals do I have booked?". Max range: 2 months. Both dates are inclusive. Args: params: auth_key/session, from (YYYY-MM-DD), to (YYYY-MM-DD) Returns: JSON array of MealRegistration objects (meal_date, meal_type, meal_mess, category, user_id, registered_at, cancelled_at, availed_at, availed_price, monthly_reg) |
| mess_create_registrationA | Register the user for a meal at a specific mess on a date. Use this when the user wants to book/register for breakfast, lunch, or dinner. Fails with 403 if the registration window is closed or the mess is full. Args: params: auth_key/session, meal_date, meal_type, meal_mess, optional guests (int) Returns: JSON MealRegistration on success, or 204 if already registered |
| mess_get_registrationA | Look up the user's registration for a single date (defaults to today). Use this to answer "am I registered for lunch today?", "what mess am I going to tonight?". Only returns active (non-cancelled) registrations. If meal is omitted, returns all meals for the date as { meal_type: MealRegistration }. If date is omitted, defaults to today. Args: params: auth_key/session, optional meal, optional date (YYYY-MM-DD) Returns: JSON MealRegistration or object keyed by meal name |
| mess_skip_mealA | Mark a registration as skipped or unskipped. Skipping = user likely won't attend but is still charged. Use when out of free cancellations. Args: params: auth_key/session, meal_date, meal_type, meal_mess, skipping (bool) Returns: JSON updated MealRegistration |
| mess_cancel_registrationA | Cancel a meal registration so the user is not charged for it. Use when the user wants to cancel/drop a booked meal. Returns 403 if the cancellation window is closed, 424 if no registration exists. Args: params: auth_key/session, meal_date, meal_type Returns: JSON status 204 on success |
| mess_uncancel_registrationA | Restore a previously cancelled meal registration. Returns 424 if the registration was not cancelled. Args: params: auth_key/session, meal_date, meal_type Returns: JSON status 204 on success |
| mess_provide_feedbackA | Submit anonymous feedback for a meal. User must have availed the meal. Returns 409 if feedback already submitted, 424 if meal not availed. Args: params: auth_key/session, meal_date, meal_type, rating (1-5), optional remarks Returns: JSON status 204 on success |
| mess_get_meal_ratingA | Get the average rating for a meal at a mess on a date. If mess is omitted, returns ratings keyed by mess ID. Ratings are only visible after the feedback window closes (403 otherwise). Args: params: auth_key/session, meal (required), optional mess, optional date Returns: JSON { rating: float, count: int } or { mess_id: { rating, count } } |
| mess_get_monthly_registrationA | Get the monthly mess registration for the current user. Also returns snack availments for the month. Args: params: auth_key/session, optional month (1-12), optional year Returns: JSON { registration: MonthlyRegistration, snack_availments: [...] } |
| mess_create_monthly_registrationA | Register at a mess for an entire month. Returns 409 if already registered, 403 if window closed or mess full. Args: params: auth_key/session, month (1-12), year, mess (mess ID) Returns: JSON MonthlyRegistration object |
| mess_delete_monthly_registrationA | Delete a monthly mess registration (individual meal registrations are kept). Returns 403 if window closed. Args: params: auth_key/session, month (1-12), year Returns: JSON status 204 on success |
| mess_get_cancellations_countB | Get count of cancelled registrations for a meal in a month. Args: params: auth_key/session, meal (required), optional month, optional year Returns: JSON integer count |
| mess_get_billA | Get the user's mess bill for a month. Use to answer "how much do I owe?", "what's my bill?". Amounts are in paise — divide by 100 for rupees. May include projected future meals. Returns 404 if registrations haven't opened for that month. Args: params: auth_key/session, optional month, optional year Returns: JSON { non_projected: int, projected: int } — in paise (divide by 100 for rupees) |
| mess_get_scans_countA | Get meal availment (scan) count for a mess on a date. No authentication required. Args: params: meal (required), mess (required), optional date (YYYY-MM-DD) Returns: JSON { meal, mess, date, total: int, recent: int (last 10 min) } |
| mess_get_registered_extrasB | Get extra item registrations for the current user for a meal on a date. Args: params: auth_key/session, meal (required), optional date (YYYY-MM-DD) Returns: JSON array of ExtraRegistration objects |
| mess_create_extra_registrationA | Register for an extra item on a meal. User must have a regular registration at that mess for that meal. Cannot be modified — delete and recreate if needed. Args: params: auth_key/session, extra (item ID), meal_date, meal_type, meal_mess Returns: JSON array of ExtraRegistrationInserted objects |
| mess_delete_extra_registrationB | Delete an extra registration by its ID (passed as query param). Args: params: auth_key/session, id (extra registration ID) Returns: JSON array of remaining ExtraRegistration objects |
| mess_get_extras_in_rangeA | Get all extra registrations in a date range (max 2 months, both inclusive). Args: params: auth_key/session, from (YYYY-MM-DD), to (YYYY-MM-DD) Returns: JSON array of ExtraRegistration objects |
| mess_list_extrasA | List available extra items for a meal on a date. Some extras (same ID) may be available across multiple meals. Args: params: meal (required), optional date (YYYY-MM-DD), optional mess ID Returns: JSON array of ExtraItem objects (id, name, description, rate in paise, mess, food_tags) |
| mess_get_all_billsA | Get bill breakdown for all months with a non-zero bill. Includes food_bill, extras_bill, and infra_bill (all in paise). Divide by 100 to get rupees. Args: params: auth_key or session Returns: JSON array of { month, year, food_bill, extras_bill, infra_bill } — all in paise |
| mess_get_all_windowsA | Get all window times in seconds: cancellation, registration, feedback, extras, skip. Args: params: auth_key or session Returns: JSON { cancellation_window, registration_window, feedback_window, extras_window, skip_window } |
| mess_get_registration_windowB | Get the registration window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_cancellation_windowB | Get the cancellation window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_feedback_windowB | Get the feedback window time in seconds (time after a meal to submit feedback). Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_extras_windowA | Get the extra registration window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_skip_windowB | Get the skip window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_registration_max_dateB | Get the maximum future date allowed for meal registration. Args: params: auth_key or session Returns: JSON date string (YYYY-MM-DD) |
| mess_get_max_cancellationsB | Get the maximum free cancellations allowed per month for a meal. Args: params: auth_key/session, meal (required) Returns: JSON integer |
| mess_get_meal_timingsA | Get meal timings (start/end times) for each mess on a date. Args: params: optional on (YYYY-MM-DD), defaults to today Returns: JSON { mess_id: [{ meal, start_time, end_time }] } |
| mess_get_preferencesB | Get all user preferences. Args: params: auth_key or session Returns: JSON UserPreferences: notify_not_registered, notify_malloc_happened, auto_reset_token_daily, enable_unregistered, nag_for_feedback, skip_malloced |
| mess_update_preferencesA | Update all user preferences (full replacement — all 5 fields required). Args: params: auth_key/session plus all 5 booleans: - notify_not_registered: remind before registration deadline - notify_malloc_happened: email on random meal allocation - auto_reset_token_daily: reset QR at 02:00 daily - enable_unregistered: allow on-spot availing at unregistered rates - nag_for_feedback: prompt after every availed meal - skip_malloced: auto-skip randomly allocated meals Returns: JSON status 204 on success |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| nutrition | Estimate nutrition breakdown for a mess meal using the menu |
| check-my-meals | Show meal registrations for a given date (today, tomorrow, or YYYY-MM-DD) |
| register-meal | Register for a meal on a specific date |
| cancel-meal | Cancel a meal registration |
| my-bill | Show the current month's mess bill in rupees |
| whats-for-lunch | Show the mess menu for a meal on a date |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
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/Kallind/IIITH-Mess-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server