IIITH Mess MCP
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., "@IIITH Mess MCP What's on the menu for dinner tonight?"
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.
IIITH Mess MCP
MCP server for the IIIT Hyderabad Mess System. Lets LLMs check registrations, view menus, manage meals, and track billing — all conversationally.
Requires IIIT VPN or intranet access.
Examples of what you can ask
"What am I eating today?"
"Cancel all my Friday lunches"
"Register me for dinner at Kadamba tomorrow"
"What's on the menu tonight?"
"Every week, register my favourite meals for the week"
"Estimate the nutrition for tonight's dinner"
"How much is my mess bill this month?"
Related MCP server: IIITH Mess MCP Server
Prerequisites
An auth key from mess.iiit.ac.in (Settings > Auth Keys), or a session cookie
uv
Adding to Claude Code
Via uv (recommended)
claude mcp add iiith-mess -e MESS_AUTH_KEY=your-auth-key -- uvx iiith-mess-mcpVia local clone
git clone https://github.com/Kallind/IIITH-Mess-MCP
claude mcp add iiith-mess -e MESS_AUTH_KEY=your-auth-key -- uv run --directory IIITH-Mess-MCP python iiith_mess_mcp/server.pyVerify it connected:
claude mcp listAdding to GitHub Copilot (VS Code)
Simplest way: Just ask Copilot to set it up by providing this repository URL.
Via uvx
Create or edit .vscode/mcp.json in your workspace:
{
"servers": {
"iiith-mess": {
"type": "stdio",
"command": "uvx",
"args": ["iiith-mess-mcp"],
"env": {
"MESS_AUTH_KEY": "your-auth-key-here"
}
}
}
}Via local clone
{
"servers": {
"iiith-mess": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/IIITH-Mess-MCP", "python", "iiith_mess_mcp/server.py"],
"env": {
"MESS_AUTH_KEY": "your-auth-key-here"
}
}
}
}Made with <3 at IIITH by Kallind Soni and Arihant Tripathy
Available Tools
45 toolsmess_cancel_registrationADestructiveIdempotent
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
Inputs: params (required). Returns: result
mess_cas_login_infoARead-onlyIdempotent
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
Inputs: no named parameters. Returns: result
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
Inputs: params (required). Returns: result
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.
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
mess_delete_auth_keyADestructiveIdempotent
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
Inputs: params (required). Returns: result
mess_delete_extra_registrationBDestructiveIdempotent
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
Inputs: params (required). Returns: result
mess_delete_monthly_registrationADestructiveIdempotent
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
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
mess_get_all_billsARead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_all_windowsARead-onlyIdempotent
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 }
Inputs: params (required). Returns: result
mess_get_auth_key_infoBRead-onlyIdempotent
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.
Inputs: params (required). Returns: result
mess_get_auth_keysARead-onlyIdempotent
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)
Inputs: params (required). Returns: result
mess_get_billARead-onlyIdempotent
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)
Inputs: params (required). Returns: result
mess_get_cancellations_countBRead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_cancellation_windowBRead-onlyIdempotent
Get the cancellation window time in seconds.
Args: params: auth_key or session
Returns: JSON integer (seconds)
Inputs: params (required). Returns: result
mess_get_capacitiesARead-onlyIdempotent
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 }] }
Inputs: params (required). Returns: result
mess_get_extras_in_rangeARead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_extras_windowARead-onlyIdempotent
Get the extra registration window time in seconds.
Args: params: auth_key or session
Returns: JSON integer (seconds)
Inputs: params (required). Returns: result
mess_get_feedback_windowBRead-onlyIdempotent
Get the feedback window time in seconds (time after a meal to submit feedback).
Args: params: auth_key or session
Returns: JSON integer (seconds)
Inputs: params (required). Returns: result
mess_get_infoARead-onlyIdempotent
Get info about all messes (name, short_name, color, tags, rating, billing_id). No auth required.
Returns: JSON array of MessInfo objects
Inputs: no named parameters. Returns: result
mess_get_max_cancellationsBRead-onlyIdempotent
Get the maximum free cancellations allowed per month for a meal.
Args: params: auth_key/session, meal (required)
Returns: JSON integer
Inputs: params (required). Returns: result
mess_get_meBRead-onlyIdempotent
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)
Inputs: params (required). Returns: result
mess_get_meal_ratingARead-onlyIdempotent
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 } }
Inputs: params (required). Returns: result
mess_get_meal_timingsARead-onlyIdempotent
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 }] }
Inputs: params (required). Returns: result
mess_get_monthly_registrationARead-onlyIdempotent
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: [...] }
Inputs: params (required). Returns: result
mess_get_preferencesBRead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_ratesARead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_registered_extrasBRead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_registrationARead-onlyIdempotent
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
Inputs: params (required). Returns: result
mess_get_registration_max_dateBRead-onlyIdempotent
Get the maximum future date allowed for meal registration.
Args: params: auth_key or session
Returns: JSON date string (YYYY-MM-DD)
Inputs: params (required). Returns: result
mess_get_registrationsARead-onlyIdempotent
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)
Inputs: params (required). Returns: result
mess_get_registration_windowBRead-onlyIdempotent
Get the registration window time in seconds.
Args: params: auth_key or session
Returns: JSON integer (seconds)
Inputs: params (required). Returns: result
mess_get_scans_countARead-onlyIdempotent
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) }
Inputs: params (required). Returns: result
mess_get_skip_windowBRead-onlyIdempotent
Get the skip window time in seconds.
Args: params: auth_key or session
Returns: JSON integer (seconds)
Inputs: params (required). Returns: result
mess_list_extrasARead-onlyIdempotent
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)
Inputs: params (required). Returns: result
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.
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
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
Inputs: params (required). Returns: result
mess_skip_mealAIdempotent
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
Inputs: params (required). Returns: result
mess_uncancel_registrationAIdempotent
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
Inputs: params (required). Returns: result
mess_update_preferencesAIdempotent
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
Inputs: params (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 45 tools
Most tools have distinct purposes, but there is some overlap between cancellation-related tools (e.g., mess_cancel_registration, mess_get_cancellations_count, mess_get_cancellation_window) and registration tools (e.g., mess_create_registration, mess_get_registration, mess_get_registrations), which could cause minor confusion. However, descriptions are clear enough to differentiate them in most cases.
All tools follow a consistent 'mess_verb_noun' naming pattern with snake_case throughout, such as mess_create_registration and mess_get_auth_keys. This uniformity makes the tool set predictable and easy to navigate.
With 45 tools, the count is excessive for a mess management system, making it cumbersome for agents to navigate. A more focused set of 10-20 tools would better cover the domain without overwhelming complexity.
The tool set provides comprehensive coverage for mess operations, including registration, cancellation, billing, authentication, preferences, and feedback. It supports full CRUD and lifecycle management with no apparent gaps for the domain.
Maintenance
Related MCP Connectors
Scraps Kitchen gives any AI agent a persistent, household-aware kitchen memory. Unlike generic chatbot recall, Scraps maintains structured cooking data: what's in your fridge (with freshness tracking), who you cook for (with allergens, dietary restrictions, and preferences), your recipe collection (with cook notes and per-diner ratings), your shopping list, and your kitchen equipment. 27 tools across 6 domains let agents read kitchen context, suggest meals that respect dietary safety, update the pantry after cooking, and build a history of what works for your household. Every interaction makes the data richer. Cooking history, preference signals, kitchen awareness = better suggestions next time. All tools work via oAuth and a free scraps.kitchen account.
Persistent food journal for AI assistants. Log meals, save recipes, plan meals and track nutrition.
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Log meals and read your nutrition diary from Claude or ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Mealie for recipe management, meal planning, and shopping list operations. Supports searching and managing recipes, creating meal plans, and generating shopping lists from recipes or meal plans.7MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with the IIIT Hyderabad Mess Management System through natural language, allowing students to view menus, manage meal registrations, check bills, submit feedback, and configure preferences.2911MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time access to menus from all six MIT Bon Appétit dining halls. It enables users to query daily or weekly schedules and filter options by specific dietary requirements such as vegan, halal, or gluten-free.62 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the IIIT-H mess dining and marketplace systems through resources, tools, and prompts for meal planning, billing analysis, and registration modifications.27GPL 3.0