The Canteen MCP server provides a structured API to retrieve daily lunch menus from a canteen.
Retrieve Lunch Menus: Query the lunch menu for a specific date using the
get_lunch_menutool with a date string in 'YYYY-MM-DD' formatData Format: Returns menu data as a JSON string
Real-Time Communication: Utilizes httpStream-based transport for real-time data exchange
Type-Safe API: Ensures input validation with a defined schema for query parameters
Customizable Deployment: Can be configured and deployed via Docker, including support for GitHub Container Registry and Hetzner
Environment-Based Configuration: Allows setting up API URLs, ports, and endpoints through environment variables
Connects to a lunch menu API hosted on Vercel to retrieve daily canteen meal information for specific dates
Click on "Install 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., "@Canteen MCPwhat's for lunch on October 15th?"
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.
Canteen MCP
A Model Context Protocol (MCP) server that provides access to the canteen's lunch menu via a simple API integration.
Description
Canteen MCP is a FastMCP-based server that exposes a tool for retrieving daily lunch menus from the canteen. It connects to a menu API and provides a structured interface for querying menu data for specific dates.
Related MCP server: MCP Apple Calendars
Features
Get lunch menu for any specific date
httpStream-based transport for real-time communication
Environment-based configuration
Type-safe API with input validation
Installation
npm installConfiguration
Copy the example environment file and update it with your values:
cp .env.example .envEnvironment Variables
Variable | Description | Example |
API_URL | URL of the lunch menu API | |
PORT | Port for the MCP server | 8080 |
ENDPOINT | HTTP endpoint | /endpoint |
Usage
Start the server:
npm startAvailable Tools
get_lunch_menu
Retrieves the lunch menu for a specific date.
Parameters:
date: String in YYYY-MM-DD format
Returns: JSON string containing the menu data
Example:
const result = await tool.execute({ date: "2024-10-05" });
Development
Prerequisites
Node.js >= 18
npm
Running in Development Mode
npm run devDocker
Building the Image
docker build -t canteen-mcp .Running the Container
docker run -d \
-p 8080:3000 \
-e API_URL=your_api_url \
-e PORT=3000 \
-e ENDPOINT=/http \
--name canteen-mcp \
canteen-mcpUsing GitHub Container Registry
Pull the latest image:
docker pull ghcr.io/[your-username]/canteen-mcp:latestDeployment
Deploying to Hetzner
SSH into your Hetzner server:
ssh root@your-server-ipInstall Docker if not already installed:
curl -fsSL https://get.docker.com | shCreate a docker-compose.yml file:
version: '3.8'
services:
canteen-mcp:
image: ghcr.io/c0dr/canteen-mcp:latest
restart: always
ports:
- "8080:3000"
environment:
- API_URL=your_api_url
- PORT=3000
- ENDPOINT=/httpStart the service:
docker-compose up -dLicense
This project is licensed under the MIT License - see the LICENSE file for details.