Skip to main content
Glama
vivek081166

japan-utils-mcp

by vivek081166

japan-utils-mcp

PyPI License: MIT

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:

  • 🗓️ Era ↔ Western year令和8年2026

  • 🔤 Kanji → Hepburn romaji山田太郎yamada tarou

  • 📮 Postal code lookup150-0001東京都 渋谷区 神宮前

  • 🎌 National holiday calendar — is 2026-05-03 a holiday? what about all of 2026?

  • 🅰️ Kana conversion — hiragana ↔ katakana ↔ half-width katakana

  • 📏 Width normalization — full-width (全角) ↔ half-width (半角) for ASCII, digits, kana

  • 👤 Name splitting山田太郎 → 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.

Why this exists

Generic LLMs hallucinate on JP-specific data:

  • "What year is 令和8年?" — often wrong

  • "Convert 山田太郎 to romaji" — gets the surname wrong half the time

  • "What's the address for postal code 150-0001?" — fabricates plausible-looking nonsense

  • "Is May 3rd a Japanese holiday?" — guesses

This MCP gives them a deterministic answer.

Related MCP server: Edition Intelligence Platform

Tools

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.

Installation

Run with 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.

From source

git clone https://github.com/vivek081166/japan-utils-mcp.git
cd japan-utils-mcp
uv sync
uv run japan-utils-mcp

Configuration

Claude Desktop

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 Code

claude mcp add japan-utils -- uvx japan-utils-mcp

Cursor / Cline / Continue

Same JSON snippet as Claude Desktop, in their respective MCP config files.

Examples

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("長谷川健太")長谷川 / 健太

Caveats

  • Romaji of personal names uses the most common reading — proper nouns with unusual readings will be wrong. This is a fundamental limitation of any kanji-to-romaji conversion without disambiguation context.

  • Postal code dataset ships via the posuto library, refreshed against Japan Post's monthly KEN_ALL. If you need ultra-fresh data, refresh posuto periodically.

  • Holidays covers national holidays (国民の祝日) only — not company-specific or regional observances.

  • Era conversion supports Meiji (明治) through Reiwa (令和). Earlier eras are not supported.

Development

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年'))"

License

MIT

Available Tools

9 tools
convert_kanaA

Convert between hiragana, katakana, and half-width katakana.

Args: text: Input string. Mix of hiragana, katakana, kanji, ASCII is fine — non-target characters pass through unchanged. to: Target script. One of: - 'hiragana' : ひらがな (e.g. ヤマダ → やまだ) - 'katakana' : カタカナ (full-width) (e.g. やまだ → ヤマダ) - 'half_kana' : ハンカクカタカナ (half-width katakana) (e.g. ヤマダ → ヤマダ) - 'full_kana' : ヤマダ (half-width → full-width katakana)

Returns: dict with keys: - input: str - output: str - to: str

Examples: convert_kana("ヤマダタロウ", "hiragana") → "やまだたろう" convert_kana("やまだたろう", "katakana") → "ヤマダタロウ" convert_kana("ヤマダ", "half_kana") → "ヤマダ" convert_kana("ヤマダ", "full_kana") → "ヤマダ"

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
toYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It clearly explains that non-target characters pass through unchanged, lists all target script options with examples, and describes the return dictionary structure. No side effects, permissions, or error behavior are mentioned, but the core transformation is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, and Examples sections, and the main purpose is front-loaded. It is somewhat lengthy but every sentence adds value. Minor redundancy could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema (implied by context), the description provides complete information: parameter details, transformation behavior, and return structure. The examples cover all four conversion directions, leaving no ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, but the description fully compensates. It defines 'text' as input string and 'to' with four explicit allowed values and examples. Examples illustrate usage, making parameter semantics clear and actionable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Convert between hiragana, katakana, and half-width katakana,' specifying the verb (convert) and resource (kana scripts). This distinctively sets it apart from sibling tools like kanji_to_romaji or lookup_postal_code, which handle different conversions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any when-to-use or when-not-to-use guidance, nor does it mention alternatives among siblings. The absence of usage context leaves the agent without explicit direction on when this tool is appropriate versus others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

era_to_westernA

Convert a Japanese era year to a Western (Gregorian) year.

Args: era_year: An era-year string. Accepts kanji form ('令和8年', '令和8', '令和元年'), single-letter alias ('R8', 'H30'), or English alias ('Reiwa 8', 'Heisei 30').

Returns: dict with keys: - western_year: int (Gregorian year) - era_kanji: str (e.g. '令和') - era_english: str (e.g. 'Reiwa') - year_of_era: int

Examples: era_to_western("令和8年") → {"western_year": 2026, ...} era_to_western("R8") → {"western_year": 2026, ...} era_to_western("Reiwa 8") → {"western_year": 2026, ...}

ParametersJSON Schema
NameRequiredDescriptionDefault
era_yearYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description details input formats and return structure but does not cover error handling, invalid input behavior, or edge cases. With no annotations, a full behavioral picture is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and front-loaded purpose. Examples are helpful but add length; still justified and not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the description covers input/output well. Omission of error behavior and edge cases is minor but prevents a 5. Output schema exists, so return details are sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 0% schema description coverage, yet the description exhaustively documents acceptable formats (kanji, alias, English) with examples, fully compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts a Japanese era year to a Western year, with examples that differentiate it from the sibling tool western_to_era.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for conversion but lacks explicit guidance on when to use it vs. alternatives or when not to use it. Sibling tools include the reverse conversion, but no mention is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

is_holidayA

Check whether a date is a Japanese national holiday (祝日).

Args: date_str: Date in 'YYYY-MM-DD', 'YYYY/MM/DD', or 'YYYYMMDD' format.

Returns: dict with keys: - date: str (normalized 'YYYY-MM-DD') - is_holiday: bool - name_jp: str | None (holiday name in Japanese, if applicable) - weekday_jp: str (e.g. '月', '火', ...) - weekday_en: str (e.g. 'Monday')

Examples: is_holiday("2026-05-03") → {"is_holiday": True, "name_jp": "憲法記念日", ...} is_holiday("2026-05-04") → {"is_holiday": True, "name_jp": "みどりの日", ...} is_holiday("2026-05-08") → {"is_holiday": False, "name_jp": None, ...}

Notes: - Covers national holidays only (祝日 designated by the 国民の祝日に関する法律). Does not cover company-specific or regional observances. - 振替休日 (substitute holidays) are correctly identified.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_strYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explains what types of holidays are covered and that substitute holidays are handled, but does not explicitly state that it is read-only or mention any potential side effects. For a simple lookup, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Notes) and is concise. Every sentence adds value, and the examples are particularly helpful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no annotations, output schema present but described in detail), the description provides all necessary context: input format, return structure with key types, examples, and scope notes. It is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for the single parameter 'date_str', but the tool description lists three accepted date formats (YYYY-MM-DD, YYYY/MM/DD, YYYYMMDD). This adds significant value beyond the bare schema type 'string'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it checks whether a date is a Japanese national holiday, using a specific verb ('check') and resource ('date'). It distinguishes from sibling tools like 'list_holidays' by focusing on single-date validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes notes on scope (national only, substitute holidays) but does not explicitly contrast with sibling tools like 'list_holidays' for when to use each. However, the single-date focus and examples make purpose clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kanji_to_romajiA

Transliterate Japanese text (kanji + kana mix) to Hepburn romaji.

Args: text: Japanese text. May contain kanji, hiragana, katakana, ASCII. Non-Japanese characters pass through unchanged.

Returns: dict with keys: - romaji: str (space-separated Hepburn romaji) - hiragana: str (kanji converted to hiragana, kana preserved) - input: str (echo of the original input)

Examples: kanji_to_romaji("山田太郎") → {"romaji": "yamada tarou", "hiragana": "やまだたろう"} kanji_to_romaji("東京駅") → {"romaji": "toukyou eki", "hiragana": "とうきょうえき"}

Caveats: - Kanji with multiple readings (e.g. proper nouns) may be ambiguous. The transliteration uses the most common reading, which is sometimes wrong for personal names. Use as a starting point, not a guarantee.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: non-Japanese characters pass through unchanged, ambiguous readings may occur, and the return format is a dict with specific keys. This is thorough but could mention if the tool is read-only or has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (Args, Returns, Examples, Caveats) and front-loaded with the main purpose. While comprehensive, it is slightly verbose; the examples and caveats are helpful but add length. Still, every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one input, defined output), the description is highly complete. It covers input constraints, output structure, and addresses ambiguity caveats. The presence of an output schema in the description further enhances completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'text' has no description in the schema (0% coverage). The description adds semantic value by explaining what the text may contain (kanji, kana, ASCII) and that non-Japanese characters pass through unchanged. This fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: transliterate Japanese text to Hepburn romaji. It specifies the verb 'transliterate' and the resource 'Japanese text (kanji + kana mix)'. This distinguishes it from sibling tools like convert_kana or split_japanese_name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples and caveats (ambiguous readings for proper nouns) that guide usage. However, it does not explicitly contrast with siblings like convert_kana, so it lacks a clear 'when to use this vs alternatives' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_holidaysA

List all Japanese national holidays for a given year.

Args: year: Western year (e.g. 2026).

Returns: dict with keys: - year: int - count: int - holidays: list of {date: 'YYYY-MM-DD', name_jp: str, weekday_en: str}

Examples: list_holidays(2026) → {"year": 2026, "count": 16, "holidays": [...]}

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description fully discloses return structure and behavior via the example. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured with 'Args', 'Returns', and 'Examples' sections. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with good coverage: explains return format and example. Could mention potential edge cases like unsupported years, but adequate overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaning for 'year' ('Western year (e.g. 2026)'), compensating well for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all Japanese national holidays for a given year. It distinguishes from siblings like 'is_holiday' which checks a single date.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes the parameter and return format, but does not explicitly state when to use this tool over alternatives (e.g., 'is_holiday' for a single date). Usage is implied from example.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_postal_codeA

Look up a Japanese postal code (郵便番号) and return address components.

Args: postal_code: 7-digit JP postal code. Accepts '150-0001', '1500001', '150 0001', or with full-width digits.

Returns: dict with keys: - postal_code: str (normalized 7-digit form) - prefecture: str (都道府県) - city: str (市区町村) - area: str (町域 — neighborhood/area) - prefecture_kana: str (katakana reading of prefecture) - city_kana: str - area_kana: str - found: bool (true if the code resolved)

Examples: lookup_postal_code("150-0001") → { "postal_code": "1500001", "prefecture": "東京都", "city": "渋谷区", "area": "神宮前", ... "found": True, }

ParametersJSON Schema
NameRequiredDescriptionDefault
postal_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool accepts multiple formats, normalizes to 7 digits, and returns a 'found' boolean. However, it does not explicitly state whether it is read-only or rely on external APIs, though these are reasonably inferred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, parameter description, return value definition, and a concrete example. It is concise with no unnecessary information, and the example enhances understanding efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with one parameter, the description covers input format, output structure, and example. Despite the existence of an output schema (not shown), the description adds value by detailing return keys. Error cases are implied via the 'found' field. The description is complete given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only defines 'postal_code' as a string with no description. The description compensates fully by explaining accepted formats (with hyphen, spaces, full-width), length requirement, and provides an example, adding significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Look up a Japanese postal code' with a specific verb and resource. It clearly distinguishes from sibling tools like era conversion or name splitting, as it is the only postal code lookup tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. Usage is implied by the specific domain (Japanese postal codes), but no direct comparisons or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

normalize_widthA

Convert between half-width (半角) and full-width (全角) characters.

Args: text: Input string. mode: Conversion direction. One of: - 'to_full' : half-width → full-width for all categories (kana, ascii, digits) - 'to_half' : full-width → half-width for all categories - 'to_full_ascii_only' : convert only ASCII letters and digits to full-width, leave kana untouched - 'to_half_ascii_only' : convert only full-width ASCII to half-width - 'to_full_kana_only' : convert only half-width katakana to full-width - 'to_half_kana_only' : convert only full-width katakana to half-width

Returns: dict with keys: - input: str - output: str - mode: str

Examples: normalize_width("ABC123", "to_half") → "ABC123" normalize_width("ABC123", "to_full") → "ABC123" normalize_width("カタカナ", "to_full") → "カタカナ"

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
modeNoto_full

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the conversion direction and return format (dict with input, output, mode). It is a pure transformation tool with no destructive behavior, and the description adequately covers the behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief intro, Args list, Returns, and Examples. Every sentence adds value, and it is front-loaded with the purpose. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low schema coverage, the description is complete. It covers all modes, provides examples, and specifies the output structure. The output schema existence reduces the need for return value explanation, but the description still includes it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given that schema description coverage is 0%, the description fully compensates by explaining both parameters: text as input string and mode with all six enumerated values. Examples further clarify usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that it converts between half-width and full-width characters. It specifies the resource (characters) and action (convert), and the detailed mode list distinguishes it from sibling tools like convert_kana which handle kana type conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the various modes and their effects, which guides the user on when to use each mode. However, it does not explicitly mention alternatives or when not to use this tool versus siblings, but the sibling list (e.g., convert_kana) implies different use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

split_japanese_nameA

Split a Japanese full name into surname (姓) and given name (名).

Uses a kanji-feature-based statistical model (namedivider-python).

Args: full_name: Japanese full name written in kanji, with no separator (e.g. '山田太郎', '長谷川健太'). Names with existing separators (space, comma) are also accepted — the separator will be re-detected.

Returns: dict with keys: - input: str - family: str (姓 — surname) - given: str (名 — given name) - confidence: float (0.0–1.0; higher = more confident split) - algorithm: str (which underlying algorithm produced the split)

Examples: split_japanese_name("山田太郎") → {"family": "山田", "given": "太郎", ...} split_japanese_name("長谷川健太") → {"family": "長谷川", "given": "健太", ...} split_japanese_name("佐藤花子") → {"family": "佐藤", "given": "花子", ...}

Caveats: - Statistical model — not 100% accurate, especially for unusual names or non-traditional name compositions. - Confidence < 0.5 indicates an ambiguous split; treat with caution. - Single-kanji surnames + single-kanji given names (e.g. '林修') are fundamentally ambiguous without external context.

ParametersJSON Schema
NameRequiredDescriptionDefault
full_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully discloses behavioral traits: it is a statistical model with potential inaccuracies, confidence scores are provided, and ambiguity for certain name structures is noted. It also mentions that names with separators are accepted and re-detected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (brief intro, Args, Returns, Examples, Caveats), front-loaded with the core purpose, and every sentence adds value. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, output schema exists), the description is complete. It covers input format, output structure with keys, confidence interpretation, and common pitfalls. No significant gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has only one parameter with 0% description coverage, so the description must add meaning. It does so by explicitly describing the expected format (kanji without separator, but also accepts separators) and providing multiple examples. This fully compensates for the lack of schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool splits a Japanese full name into surname and given name, specifying the underlying model. It is distinct from sibling tools which handle other Japanese text operations like kana conversion or romanization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use the tool (for Japanese full names in kanji, with or without separators) and includes caveats about accuracy and ambiguous names. It does not explicitly state when not to use it or suggest alternatives, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

western_to_eraA

Convert a Western (Gregorian) year to its Japanese era year.

Note: this returns the era in effect for the majority of the given Gregorian year. For year transitions (e.g. 1989 split between 昭和64 and 平成1), it returns the newer era.

Args: year: Western year (e.g. 2026). Must be 1868 or later.

Returns: dict with keys: - era_kanji: str - era_english: str - year_of_era: int (1 for the first year of an era; written as 元年 in formal Japanese) - era_year_kanji: str (e.g. '令和8年') - era_year_short: str (e.g. 'R8')

Examples: western_to_era(2026) → {"era_kanji": "令和", "era_english": "Reiwa", "year_of_era": 8, "era_year_kanji": "令和8年", "era_year_short": "R8"}

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the transition behavior and the year constraint, but does not mention error handling for invalid inputs (e.g., year < 1868). The return structure is well-documented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (Note, Args, Returns, Examples) and front-loaded with the purpose. It is slightly lengthy but each section adds value. Could be more concise, but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description still provides a detailed return structure and covers the main behavioral note. It lacks error handling details but is otherwise complete for a simple conversion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the 'year' parameter with an example and the constraint 'Must be 1868 or later', adding significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it converts a Western year to Japanese era year, with specific verb 'convert' and resource 'year'. It distinguishes itself from the sibling tool 'era_to_western' by its direction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides necessary context: it returns the era for the majority of the year, handles year transitions by returning the newer era, and requires years 1868 or later. However, it does not explicitly mention when not to use this tool or direct alternatives, though the sibling list makes it obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.2
    • First observedconvert_kana
    • First observedera_to_western
    • First observedis_holiday
    • First observedkanji_to_romaji
    • First observedlist_holidays
    • First observedlookup_postal_code
    • First observednormalize_width
    • First observedsplit_japanese_name
    • First observedwestern_to_era

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a unique operation – kana conversion, era conversion, holiday checking, romaji transliteration, postal code lookup, width normalization, name splitting, and era-to-Western conversion. There is no functional overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with verb + noun or noun + verb structure (e.g., convert_kana, is_holiday, list_holidays). No mixed case or inconsistent styles.

Tool Count5/5

With 9 tools covering a broad set of Japanese language utilities (kana, kanji, eras, holidays, addresses, names), the number feels well-scoped. Enough to be useful without being overwhelming.

Completeness4/5

The set covers essential Japanese text operations: kana/width normalization, romaji, era conversion both ways, holiday queries (single and list), postal code lookup, and name splitting. Minor gaps like lunar calendar or date formatting exist but do not undermine core utility.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides Japanese UX conventions as an MCP server to help AI generate correct Japanese UI elements like proper name order, furigana, phone formats, and polite language. It includes tools for form generation, validation, keigo suggestions, and cultural adaptation for developers building Japanese-facing products.
    6
    112
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Torify gives AI agents the Japanese locale primitives that standard libraries lack — imperial era date conversion (wareki), qualified invoice number validation with NTA registry lookup, corporate number lookup (法人番号), postal code resolution, name romanization (Hepburn), and kanji-to-kana conversion via Yahoo! JLP. 31 endpoints total. No authentication required for MCP. Pay-per-call $0.02/call via
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vivek081166/japan-utils-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server