BrandCast-Signage/mealviewer-mcp-server
If you are the rightful owner of mealviewer-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The MealViewer MCP Server is a Model Context Protocol server designed to facilitate natural language queries for school lunch menus through integration with Claude and other MCP clients.
MealViewer MCP Server
Model Context Protocol (MCP) server for MealViewer school lunch menus. Enables Claude and other MCP clients to query school lunch menus through natural language.
Features
- 📅 Get Today's Menu: Query today's lunch menu for any school
- 📆 Get Specific Date: Get menu for any specific date
- 🗓️ Get Week Menu: Get full week (Monday-Friday) of menus
- 🤖 Claude Integration: Use natural language to query school menus
- 📦 TypeScript: Full type safety with TypeScript
- ✅ Public API: No authentication required
Installation
Via npm (Recommended)
npm install -g @brandcast/mealviewer-mcp-server
Via npx (No installation)
npx @brandcast/mealviewer-mcp-server
From Source
git clone https://github.com/BrandCast-Signage/mealviewer-mcp-server.git
cd mealviewer-mcp-server
npm install
npm run build
Configuration
Claude Desktop
Add to your Claude Desktop config file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mealviewer": {
"command": "npx",
"args": ["-y", "@brandcast/mealviewer-mcp-server"]
}
}
}
Or if installed globally:
{
"mcpServers": {
"mealviewer": {
"command": "mealviewer-mcp-server"
}
}
}
Optional: Enable Debug Logging
{
"mcpServers": {
"mealviewer": {
"command": "npx",
"args": ["-y", "@brandcast/mealviewer-mcp-server"],
"env": {
"DEBUG": "true"
}
}
}
}
Available Tools
The server exposes three MCP tools:
mealviewer_get_menu
Get menu for a specific school and date.
Parameters:
school_name(required): School identifier (e.g.,"ElmwoodElementary")date(optional): Date in YYYY-MM-DD format (defaults to today)
Example:
User: What's for lunch at Elmwood Elementary on January 15th?
Claude: [Uses mealviewer_get_menu]
mealviewer_get_today_menu
Get today's menu for a school.
Parameters:
school_name(required): School identifier
Example:
User: What's for lunch today at Elmwood Elementary?
Claude: [Uses mealviewer_get_today_menu]
mealviewer_get_week_menu
Get this week's menus (Monday-Friday) for a school.
Parameters:
school_name(required): School identifier
Example:
User: Show me this week's lunch menu for Elmwood Elementary
Claude: [Uses mealviewer_get_week_menu]
Finding School Names
School identifiers are typically CamelCase without spaces. To find your school's identifier:
- Visit https://www.mealviewer.com
- Search for your school district
- Select your school
- Inspect the URL or page source to find the school identifier
- Examples:
- "Elmwood Elementary" →
ElmwoodElementary - "Lincoln Middle School" →
LincolnMiddleSchool - "Washington High School" →
WashingtonHighSchool
- "Elmwood Elementary" →
Usage Examples
With Claude Desktop
Once configured, you can interact with school menus through natural language:
View Today's Menu:
You: What's for lunch today at Elmwood Elementary?
Claude: [Displays today's menu with all meal items]
View Specific Date:
You: What will they serve at Lincoln Middle School next Monday?
Claude: [Shows menu for next Monday]
View Full Week:
You: Show me this week's lunch menus for Washington High School
Claude: [Displays Monday-Friday menus]
Check for Specific Items:
You: Is pizza on the menu this week at Elmwood Elementary?
Claude: [Checks week's menus and reports if/when pizza is served]
Nutritional Questions:
You: What are the healthiest options for lunch today at Lincoln?
Claude: [Reviews menu and suggests healthiest items]
Example Output
# Elmwood Elementary
123 Main Street, Springfield
## Monday, January 13, 2025
### Lunch
**Main Entree Line:**
- Cheese Pizza - 2 slices
_Hand-tossed pizza with mozzarella cheese_
- Chicken Tenders - 3 pieces
_Crispy breaded chicken tenders_
**Vegetable Bar:**
- Garden Salad - 1 cup
- Steamed Broccoli - 1/2 cup
**Fruit Bar:**
- Fresh Apple - 1 ea
- Orange Slices - 1 cup
**Milk:**
- 1% White Milk - 8 oz
- Chocolate Milk - 8 oz
Development
Building
npm install
npm run build
Type Checking
npm run type-check
Testing Locally
npm run build
node dist/index.js
The server will start and wait for MCP protocol messages on stdin/stdout.
Testing with MCP Inspector
npx @modelcontextprotocol/inspector npx -y @brandcast/mealviewer-mcp-server
Architecture
This MCP server is built on:
- @brandcast_app/mealviewer-api-client - API client for MealViewer
- @modelcontextprotocol/sdk - Official MCP SDK
Troubleshooting
Server Not Starting
- Ensure Node.js >= 18.0.0 is installed:
node --version - Check config file syntax (must be valid JSON)
- Verify the server path/command is correct
- Enable debug mode:
"DEBUG": "true"
School Not Found
- Verify the school identifier is correct (check MealViewer website)
- Identifiers are case-sensitive
- Try removing spaces and using CamelCase
Tools Not Appearing in Claude
- Restart Claude Desktop after configuration changes
- Check Claude Desktop logs for errors
- Verify JSON syntax in config file
Use Cases
- 📱 Family information displays
- 🏫 School district chatbots
- 📧 Parent notification systems
- 🤖 Educational assistants
- 📊 Menu tracking and analytics
Related Projects
- mealviewer-api-client - The underlying API client
- Model Context Protocol - Learn more about MCP
- FamilyCast - Family information displays
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see file for details.
Support
Changelog
1.0.0 (Initial Release)
- ✨ Initial implementation
- 📅 Get menu by date
- 🗓️ Get week of menus
- 🤖 Claude Desktop integration
- 📦 Full TypeScript support