mealviewer-mcp-server

BrandCast-Signage/mealviewer-mcp-server

3.2

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.

Tools
3
Resources
0
Prompts
0

MealViewer MCP Server

License: MIT

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:

  1. Visit https://www.mealviewer.com
  2. Search for your school district
  3. Select your school
  4. Inspect the URL or page source to find the school identifier
  5. Examples:
    • "Elmwood Elementary" → ElmwoodElementary
    • "Lincoln Middle School" → LincolnMiddleSchool
    • "Washington High School" → WashingtonHighSchool

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:

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

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