Wraps a handful of Python libraries (jpholiday, posuto, pykakasi, jaconv, namedivider-python) into MCP tools for Japan-specific operations that LLMs routinely hallucinate. You get era-to-Gregorian conversion (令和8年 to 2026 and back), kanji-to-romaji using Hepburn rules, postal code lookups against Japan Post's KEN_ALL dataset, national holiday checks, kana conversion between hiragana/katakana/half-width forms, full-width/half-width ASCII normalization, and statistical Japanese name splitting. Runs via uvx with no install hassle. Useful when you're building agents that handle Japanese addresses, dates, or text normalization and need deterministic answers instead of plausible-sounding garbage. Covers Meiji through Reiwa for era calculations, national holidays only.
MCP server exposing Japan-specific utilities to AI agents (Claude, Cursor, Cline, Continue, etc.). Hand your agent the small bag of JP-specific functions every Japan-related task needs but no generic LLM gets right reliably:
令和8年 ↔ 2026山田太郎 → yamada tarou150-0001 → 東京都 渋谷区 神宮前2026-05-03 a holiday? what about all of 2026?山田太郎 → surname 山田 + given 太郎 (statistical model)Built on top of well-maintained Japanese libraries (jpholiday, posuto, pykakasi, jaconv, namedivider-python) — wrapped as MCP tools so any AI agent can call them without re-implementing reading rules, era arithmetic, postal data, or name-splitting heuristics.
Generic LLMs hallucinate on JP-specific data:
This MCP gives them a deterministic answer.
| Tool | What it does |
|---|---|
era_to_western | 令和8年 / R8 / Reiwa 8 / 令和元年 → Gregorian year + era metadata |
western_to_era | 2026 → era kanji (令和), English (Reiwa), year-of-era (8), formatted strings |
kanji_to_romaji | Mixed Japanese text → Hepburn romaji + hiragana reading |
lookup_postal_code | 7-digit JP postal code → prefecture / city / area, with kana readings |
is_holiday | Date string → is it a national holiday? + Japanese name + weekday |
list_holidays | Year → all national holidays for that year |
convert_kana | hiragana ↔ katakana ↔ half-width katakana, any direction |
normalize_width | Full-width ↔ half-width for ASCII, digits, kana (with per-category control) |
split_japanese_name | Japanese full name → surname + given name (statistical model with confidence) |
All tools return structured JSON. See tool docstrings in src/japan_utils_mcp/server.py for full schemas and examples.
uvx (no install — recommended)uvx japan-utils-mcp
That's it. uvx (from uv) handles install + run in one shot, isolated from your global Python.
git clone https://github.com/vivek081166/japan-utils-mcp.git
cd japan-utils-mcp
uv sync
uv run japan-utils-mcp
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"japan-utils": {
"command": "uvx",
"args": ["japan-utils-mcp"]
}
}
}
claude mcp add japan-utils -- uvx japan-utils-mcp
Same JSON snippet as Claude Desktop, in their respective MCP config files.
Once connected, ask your agent things like:
What year is 令和8年? →
era_to_western("令和8年")→2026
What's the address for postal code 150-0001? →
lookup_postal_code("150-0001")→東京都 渋谷区 神宮前
Convert 山田太郎 to romaji. →
kanji_to_romaji("山田太郎")→yamada tarou
Is May 3rd 2026 a Japanese holiday? →
is_holiday("2026-05-03")→憲法記念日(Constitution Memorial Day)
List all Japanese holidays in 2026. →
list_holidays(2026)→ 18 holidays with names and dates
Convert ヤマダタロウ to hiragana. →
convert_kana("ヤマダタロウ", "hiragana")→やまだたろう
Normalize ABC123 to half-width. →
normalize_width("ABC123", "to_half")→ABC123
Split 長谷川健太 into surname and given name. →
split_japanese_name("長谷川健太")→長谷川/健太
posuto library, refreshed against Japan Post's monthly KEN_ALL. If you need ultra-fresh data, refresh posuto periodically.git clone https://github.com/vivek081166/japan-utils-mcp.git
cd japan-utils-mcp
uv sync
uv run python -c "from japan_utils_mcp.server import era_to_western; print(era_to_western('令和8年'))"
MIT