DEV Community

Cover image for I Built an Open-Source McDonald's Meal Recommender Using MCP and Python
echo lee
echo lee

Posted on AI-assisted

I Built an Open-Source McDonald's Meal Recommender Using MCP and Python

Why I Built McPilot

Choosing what to eat sounds simple, but finding a meal that fits your budget, nutritional goals, and taste preferences can be surprisingly complicated.

I built McPilot, an open-source McDonald's meal recommendation assistant powered by the official McDonald's China MCP (Model Context Protocol) service.

Instead of generating arbitrary suggestions, McPilot uses available menu, store, nutrition, and coupon information to create explainable meal recommendations.

What Does It Do?

McPilot supports three recommendation strategies:

  • Budget First: Finds more affordable meal combinations within a specified budget.
  • High Protein: Prioritizes meals with better protein content when reliable nutritional information is available.
  • Balanced Recommendation: Considers price, nutrition, personal preferences, and meal composition.

Users can provide their budget, party size, dietary restrictions, and nutritional goals.

The system also supports price calculations, explanations for its recommendations, missing-data warnings, and suggestions when no suitable meal combination is found.

How It Works

McPilot combines several components:

  • McDonald's China MCP: Provides access to supported restaurant, menu, nutrition, and coupon information.
  • Python: Handles data processing, validation, and recommendation logic.
  • Tencent WorkBuddy: An AI coding assistant used during development, debugging, and Skill creation.
  • Responsive Web Interface: Allows users to enter preferences and view recommendations on desktop or mobile devices.
  • GitHub: Hosts the open-source code and documentation.

The project communicates with the MCP service through Streamable HTTP.

All MCP operations are read-only. McPilot does not place orders, claim coupons, or perform transactions.

Screenshots

Main Interface

McPilot's main interface allows users to configure their meal preferences.

McPilot main interface with meal preference settings

Recommendation Results

The application presents different meal recommendations based on the selected strategy.

McPilot recommendation results showing three meal selection strategies

Mobile Interface

The interface is also designed for smaller screens.

McPilot responsive mobile interface

Lessons Learned

One challenge was handling incomplete nutritional information.

If an item has no reliable protein or calorie data, the system should not automatically treat the missing value as zero. McPilot explicitly identifies missing data to avoid misleading recommendations.

Another important consideration was explainability. Rather than only showing a meal combination, the application aims to explain why it was recommended.

Limitations

McPilot currently integrates with McDonald's China MCP, so its data availability and supported ordering scenarios are specific to that service.

Using the live MCP functionality requires appropriate access and configuration. The project is a recommendation tool, not a global McDonald's ordering service.

Open Source

The repository includes the Python implementation, WorkBuddy Skill, MCP integration documentation, configuration examples, and usage instructions.

GitHub Repository: McPilot — Open-Source Meal Recommender

McPilot has also been accepted as an entry in the 2026 McDonald's Developer Innovation Challenge.

If you're interested in MCP, AI agents, or recommendation systems, feel free to explore the code and share feedback.

If you find it useful, a GitHub Star is appreciated!

Final Thoughts

McPilot is an experiment in bringing AI-assisted development and real-world MCP data together to solve a small everyday problem.

The goal is not simply to generate meal suggestions, but to make recommendations more transparent, data-driven, and practical.

Top comments (1)

Collapse
 
suppdevbot profile image
DEV SUPPORTS •

You need to verify your account.

Enter fullscreen mode Exit fullscreen mode

tr.ee/dev-to