Project · MCP Server

Japan in Seasons

A production MCP server for Claude — 12 tools, 1,700+ data points, 100/100 on Smithery. The agent answers seasonal travel questions in real time.

MCP Server Tool Use Claude 100/100 Smithery

Why MCP

Anthropic's Model Context Protocol turns Claude into a tool-using agent. The catch: most MCP servers are toys — one tool, no caching, no annotations, undocumented inputs. They pass the spec but they don't pass the bar for production.

I built Japan in Seasons to find out how far the bar actually goes. The result: a server that scores 100/100 on Smithery's quality audit and answers questions like “where should I see cherry blossoms next week?” with current forecast data — not training-time guesses.

The 12 tools

Sakura
sakura_now, sakura_forecast, sakura_best_dates, sakura_spots, kawazu_forecast — cherry blossom timing by city + best viewing spots, including the early-January Izu Kawazu-zakura.
Koyo
koyo_now, koyo_forecast, koyo_best_dates, koyo_spots — autumn-leaves timing and spots.
Flowers
flowers_spots — non-sakura seasonal flowers: plum, wisteria, hydrangea, lavender, sunflower, cosmos.
Festivals
festivals_list — recurring fireworks, matsuri, and winter events with official links.
Fruit
fruit_seasons, fruit_farms — what's in season and where to pick it.
Weather
weather_forecast — short-range weather for trip-planning.
Routing
japan_seasonal_answer — the meta-tool that picks the right specific tool given a broad question.

How I went from 64/100 to 100/100

The first Smithery audit scored 64. Every gap turned into a fix, and every fix taught me something about how the protocol expects you to behave:

The full walkthrough is the most-read post on my blog — it's reusable as a skill template for any MCP server.

What gets shipped

100/100
Smithery score
12
Tools exposed
1,700+
Places indexed
24h
Forecast cache TTL

Tech stack

TypeScript MCP SDK Smithery Claude Node.js FastAPI Python SQLite Vercel Railway