Skip to main content
Glama
ScaDS

Mensa TUD MCP Server

by ScaDS

Mensa TUD MCP Server

An MCP (Model Context Protocol) server for accessing the TU Dresden canteen API (Studentenwerk Dresden). This server provides tools to query canteen information, available days, and daily meal menus through the OpenMensa v2 API.

You can access it, e.g. via the jan.ai GUI or using Claude Desktop.

Features

This MCP server provides three tools:

  1. list_canteens - List all available canteens with their IDs, names, addresses, and coordinates

  2. list_canteen_days - List all days for which a specific canteen has meal data available

  3. get_meals - Get all meals available at a specific canteen on a specific date (defaults to today)

Related MCP server: Cafeteria MCP

Installation

  1. Install uv (fast Python package manager)

  2. The dependencies will be automatically installed by uv when running the server

Integrating with GUIs

To use this MCP server e.g. with Claude Desktop, add it to your Claude Desktop configuration file:

On Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the following to your configuration:

{
  "mcpServers": {
    "mensa-tud": {
        "command": "uv",
        "args": [
        "--directory",
        "path\\to\\mensa-tud-mcp",
        "run",
        "server.py"
        ]
    }
  }
}

Make sure to adjust the path to match your installation location. In jan.ai you can enter this information under Settings > MCP Servers.

Under the hood

This server uses the OpenMensa v2 API provided by Studentenwerk Dresden:

  • Base URL: https://api.studentenwerk-dresden.de/openmensa/v2

  • Documentation: OpenMensa API

License

This is a simple MCP server implementation for educational and personal use provided unter MIT License.

Available Tools

3 tools
get_mealsA

Get all meals available at a specific canteen on a specific date.

Notes:

  • To figure out the ID of a specific canteen, first use the list_canteens tool.

  • Also make sure to check which days have meal data available using the list_canteen_days tool.

Args: canteen_id: The ID of the canteen to query (e.g., 9 for Alte Mensa) date: The date in YYYY-MM-DD format (e.g., 2026-01-13). If not provided, uses today's date.

Returns meal names, categories, prices, and dietary information.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
canteen_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns meal names, categories, prices, and dietary information. However, it does not mention behavior for invalid canteen IDs, empty results, or any error conditions. Still, for a simple read operation, the transparency is good.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is approximately 100 words, well-structured with a main statement, bullet points for notes, an Args section, and a return summary. It is front-loaded with the core purpose and contains no unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (context states 'Has output schema: true'), the description completes the picture by stating what is returned. It also includes prerequisite steps (using list_canteens and list_canteen_days). No major gaps remain for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (only titles), but the description adds full parameter details: canteen_id is 'The ID of the canteen to query (e.g., 9 for Alte Mensa)', and date is 'The date in YYYY-MM-DD format (e.g., 2026-01-13). If not provided, uses today's date.' This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get all meals available at a specific canteen on a specific date.' It specifies the verb (get), the resource (meals), and the constraints (canteen and date). This distinguishes it from sibling tools list_canteens (lists canteens) and list_canteen_days (lists days with meals).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use list_canteens first to get the canteen ID, and use list_canteen_days to check available dates. It also explains that the date parameter defaults to today. This effectively tells when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canteen_daysA

List all days for which a canteen has meal data available.

Args: canteen_id: The ID of the canteen to query (e.g., 9 for Alte Mensa)

Returns dates for which you can query meals.

ParametersJSON Schema
NameRequiredDescriptionDefault
canteen_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It minimally discloses that it returns dates for meal queries, but does not mention read-only nature, error handling, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and front-loaded with the main function. It includes an Args section and a note on returns, keeping sentences purposeful with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity and existence of output schema, the description adequately covers the main purpose. However, it lacks details on edge cases (e.g., empty results, invalid canteen_id) and does not explicitly state that the tool is read-only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaning: it explains what canteen_id is and provides an example ('e.g., 9 for Alte Mensa'), which goes beyond the schema's type and title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists days for which a canteen has meal data, using a specific verb+resource. It distinguishes from siblings: get_meals queries meals for a specific day, list_canteens lists canteens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (query days before meals) and gives an example canteen_id, but does not explicitly state when to use vs alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canteensA

List all available canteens from the Studentenwerk Dresden.

Returns canteen IDs, names, addresses, and coordinates for all available canteens.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It states it returns data but doesn't explicitly disclose read-only nature or other traits. However, the verb 'list' implies a safe read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with no parameters and has an output schema. Description covers the return value sufficiently. Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. The description doesn't need to add parameter details. Baseline of 4 for zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'list' and the resource 'canteens', specifying the return fields (IDs, names, addresses, coordinates). Distinguishes from siblings like 'get_meals' and 'list_canteen_days'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says it lists all available canteens, implying use when you need a list. No alternatives or exclusions are mentioned, but for a simple list tool, this is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedget_meals
    • First observedlist_canteen_days
    • First observedlist_canteens

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing canteens, listing available days for a canteen, and getting meals for a specific canteen and date. No overlap or ambiguity.

Naming Consistency4/5

Two tools use the 'list_' prefix while one uses 'get_', creating a minor inconsistency. However, the verb-noun pattern is consistent and all names are descriptive.

Tool Count5/5

With 3 tools, the set is well-scoped for a canteen query system, covering all necessary operations without unnecessary bloat.

Completeness5/5

The tools cover the full workflow: discover canteens, check available days, and retrieve meals with dietary info. No obvious gaps for the intended use case.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers