Skip to main content
Glama
NJP6969

IIITH Mess MCP Server

by NJP6969
README.md
# Mess MCP Server

An MCP (Model Context Protocol) server for the IIIT Mess Management System. This allows AI assistants like Claude to interact with the mess portal through natural language.

## Features

- šŸ½ļø **View Menus** - Get menus for any date at all messes
- šŸ“ **Manage Registrations** - Register, cancel, or uncancel meals
- šŸ’° **Check Bills** - View your monthly mess bill with projections
- ⭐ **Submit Feedback** - Rate and review meals
- šŸ• **Extra Items** - View and register for extra items
- šŸ“… **Monthly Plans** - Manage monthly mess registrations
- āš™ļø **Preferences** - Control notification and meal settings
- šŸ‘¤ **Profile** - View your user information

## Prerequisites

- **Node.js 18+** (Download from [nodejs.org](https://nodejs.org/))
- **Claude Desktop** (Download from [claude.ai/download](https://claude.ai/download))
- **Mess Portal API Key** (Get from [mess.iiit.ac.in](https://mess.iiit.ac.in))

## Installation

### 1. Clone and Install

```bash
git clone <your-repo-url>
cd mess-mcp
npm install
```

### 2. Get Your API Key

1. Log into https://mess.iiit.ac.in
2. Navigate to **Settings → API Keys**
3. Click **Create New Key**
4. Give it a name (e.g., "MCP Server") and set an expiry date
5. **Copy the key immediately** (it's only shown once!)

### 3. Configure Environment

Copy the example environment file and add your API key:

```bash
cp .env.example .env
```

Edit `.env` and replace `your-api-key-here` with your actual API key:

```env
MESS_API_KEY=your-actual-api-key-here
MESS_API_URL=https://mess.iiit.ac.in/api
```

### 4. Build the Project

```bash
npm run build
```

### 5. Configure Claude Desktop

Find your Claude Desktop config file:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS/Linux**: `~/Library/Application Support/Claude/claude_desktop_config.json`

Add the MCP server configuration:

```json
{
  "mcpServers": {
    "mess": {
      "command": "node",
      "args": ["/absolute/path/to/mess-mcp/dist/index.js"],
      "env": {
        "MESS_API_KEY": "your-actual-api-key-here",
        "MESS_API_URL": "https://mess.iiit.ac.in/api"
      }
    }
  }
}
```

**Important**: Replace `/absolute/path/to/mess-mcp` with the actual path to your project.

**Example paths:**
- Windows: `"args": ["C:/Users/YourName/mess-mcp/dist/index.js"]`
- macOS/Linux: `"args": ["/home/yourname/mess-mcp/dist/index.js"]`

### 6. Restart Claude Desktop

Close Claude Desktop completely (check system tray/menu bar) and reopen it. The MCP server will load automatically.

## Usage

Once set up, you can interact with the mess system using natural language in Claude Desktop:

### Example Conversations

**View Today's Menu:**
> "What's for lunch today?"
> "Show me today's menu at Kadamba Veg"

**Register for Meals:**
> "Register me for dinner tomorrow at Yuktahar"
> "Sign me up for breakfast on Friday at Palash"

**Cancel/Manage Registrations:**
> "Cancel my breakfast for tomorrow"
> "Show my registrations for this week"
> "Uncancel my lunch on December 5th"

**Check Bills:**
> "What's my mess bill this month?"
> "How much have I spent so far?"

**View Capacities:**
> "Is there space at Kadamba for dinner tonight?"
> "Show me available spots for lunch tomorrow"

**Submit Feedback:**
> "Rate today's lunch 4 stars with remark 'Good food'"

**Manage Preferences:**
> "Turn off meal reminder notifications"
> "Enable unregistered meal access"

## Available Tools

The MCP server exposes 30+ tools organized into categories:

### šŸ¢ Mess Information
- Get mess info, menus, rates, capacities, and timings

### šŸ“ Registrations
- View, create, cancel, and manage meal registrations

### šŸ’° Billing & Feedback
- Check bills, submit feedback, view ratings

### šŸ• Extra Items
- Browse and register for extra food items

### šŸ“… Monthly Plans
- Manage monthly mess subscriptions

### āš™ļø Configuration
- View/update preferences, check windows and limits

### šŸ‘¤ User Profile
- View profile, reset QR token

## Development

### Project Structure

```
mess-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts           # Main MCP server entry point
│   ā”œā”€ā”€ client.ts          # HTTP client for Mess API
│   ā”œā”€ā”€ types.ts           # TypeScript type definitions
│   └── tools/
│       ā”œā”€ā”€ auth.ts        # User authentication tools
│       ā”œā”€ā”€ mess.ts        # Mess information tools
│       ā”œā”€ā”€ registrations.ts # Registration management
│       ā”œā”€ā”€ billing.ts     # Bills and feedback
│       ā”œā”€ā”€ extras.ts      # Extra items
│       ā”œā”€ā”€ monthly.ts     # Monthly registrations
│       └── config.ts      # Preferences and settings
ā”œā”€ā”€ dist/                  # Compiled JavaScript (generated)
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ .env                   # Your config (not in git)
ā”œā”€ā”€ .env.example           # Template for .env
└── README.md
```

### Scripts

- `npm run build` - Compile TypeScript to JavaScript
- `npm run dev` - Build and run in development mode
- `npm start` - Run the compiled server

## Troubleshooting

### "Command not found" or "node not found"
- Make sure Node.js is installed and in your system PATH
- Try using the full path to `node.exe` in the Claude config

### "Unauthorized" errors
- Verify your API key is correct in `.env` and Claude config
- Check if your API key has expired in the mess portal

### MCP server not loading
- Ensure the path in `claude_desktop_config.json` is absolute and correct
- Check Claude Desktop logs for errors
- Restart Claude Desktop after config changes

### Menu not showing items
- The menu might not be updated for the current week
- Try a different date or mess

## Security

- **Never commit `.env` file** - It contains your API key
- **Never share your API key** - It provides full access to your account
- The `.gitignore` file is configured to exclude sensitive files
- Rotate your API keys periodically in the mess portal settings

## Contributing

Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

## License

MIT

## Acknowledgments

Built for students of IIIT Hyderabad using the Mess Management System API.

## Support

For issues or questions:
- Open an issue on GitHub
- Check the [MCP Documentation](https://modelcontextprotocol.io)
- Review the [Mess Portal API docs](https://mess.iiit.ac.in)

TDQS

B3.2/5.0

Scored across 29 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity; for example, cancel_meal vs. uncancel_meal, get_registration vs. get_registrations, and register_meal vs. create_monthly_registration are well-differentiated. The descriptions specify unique actions on specific resources, preventing misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as cancel_meal, get_bill, and update_preferences. There are no deviations in naming conventions, making the set predictable and readable.

Tool Count2/5

With 29 tools, the count is too high for the apparent scope of a mess management system, making it feel heavy and potentially overwhelming. A more focused set of 15-20 tools would better suit the domain without sacrificing functionality.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for mess operations, including registration, cancellation, billing, preferences, and feedback. There are no obvious gaps, and agents can handle all core workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues