Why bundled data instead of an API? I wanted zero runtime dependencies. No API keys, no rate limits, no service to keep running. Everything ships compiled into the npm package. Works offline. The tradeoff is data freshness, but World Cup data doesn't change much once it's set... and I'll push npm updates for the playoffs (March 26 & 31) and any schedule changes.
What "18 tools" actually means: Matches with timezone conversion, team profiles (coach, key players, playing style, qualifying record), city guides written for fans not tourists, head-to-head World Cup history with aggregate stats, fan zone locations, visa/entry requirements for all three host countries, venue distances for trip planning, and a smart briefing that auto-detects the tournament phase and surfaces what's relevant today.
The briefing tool is my favorite part. Say "brief me on the World Cup" with zero parameters. Right now it tells you: 120 days out, 6 playoff spots pending, here are the groups to watch. During the tournament it'll shift to today's matches, yesterday's results, standings implications.
Why MCP? I wanted structured, queryable data instead of web scraping guesses. MCP lets AI assistants call tools natively, so the AI decides which endpoint to hit based on your question. "When does the USA play?" hits get_matches with a team filter. "Do I need a visa for Mexico?" hits get_visa_info. No prompt engineering needed.
Non-MCP paths: Same data powers a ChatGPT GPT (live in the GPT Store) and a Telegram bot with slash commands. The REST API on Vercel wraps the same bundled data as serverless functions.
Tech: TypeScript, MCP SDK, Zod schemas. MIT licensed. The /try playground has 17 live demos if you want to see actual responses before installing.
Let me know if you have questions about the architecture, data approach, etc.