japan-utils-mcp
japan-utils-mcp
MCP-сервер, предоставляющий специфичные для Японии утилиты для ИИ-агентов (Claude, Cursor, Cline, Continue и др.). Предоставьте своему агенту набор инструментов для работы с японскими данными, которые необходимы для любых задач, связанных с Японией, но с которыми обычные LLM не всегда справляются надежно:
🗓️ Эра ↔ Западный год —
令和8年↔2026🔤 Кандзи → Ромадзи Хепберна —
山田太郎→yamada tarou📮 Поиск почтового индекса —
150-0001→東京都 渋谷区 神宮前🎌 Календарь государственных праздников — является ли
2026-05-03праздником? А как насчет всего 2026 года?🅰️ Преобразование каны — хирагана ↔ катакана ↔ полуширинная катакана
📏 Нормализация ширины — полноширинные (全角) ↔ полуширинные (半角) символы для ASCII, цифр, каны
👤 Разделение имен —
山田太郎→ фамилия山田+ имя太郎(статистическая модель)
Построено на базе надежных японских библиотек (jpholiday, posuto, pykakasi, jaconv, namedivider-python) и упаковано в инструменты MCP, чтобы любой ИИ-агент мог использовать их без необходимости повторной реализации правил чтения, арифметики эр, данных о почтовых индексах или эвристик разделения имен.
Зачем это нужно
Обычные LLM часто галлюцинируют при работе с японскими данными:
«Какой год 令和8年?» — часто ошибаются
«Преобразуй 山田太郎 в ромадзи» — в половине случаев неправильно определяют фамилию
«Какой адрес у почтового индекса 150-0001?» — выдумывают правдоподобную чепуху
«Является ли 3 мая японским праздником?» — угадывают
Этот MCP дает им детерминированный ответ.
Related MCP server: Torify — Japanese Locale APIs for AI Agents
Инструменты
Инструмент | Что он делает |
|
|
|
|
| Смешанный японский текст → ромадзи Хепберна + чтение хираганой |
| 7-значный почтовый индекс Японии → префектура / город / район, с чтением каной |
| Строка даты → является ли это государственным праздником? + японское название + день недели |
| Год → все государственные праздники для этого года |
| хирагана ↔ катакана ↔ полуширинная катакана, в любом направлении |
| Полноширинные ↔ полуширинные символы для ASCII, цифр, каны (с контролем по категориям) |
| Полное японское имя → фамилия + имя (статистическая модель с оценкой уверенности) |
Все инструменты возвращают структурированный JSON. См. docstrings инструментов в src/japan_utils_mcp/server.py для получения полных схем и примеров.
Установка
Запуск с помощью uvx (без установки — рекомендуется)
uvx japan-utils-mcpЭто всё. uvx (из uv) выполняет установку и запуск за один раз, изолированно от вашего глобального Python.
Из исходного кода
git clone https://github.com/vivek081166/japan-utils-mcp.git
cd japan-utils-mcp
uv sync
uv run japan-utils-mcpКонфигурация
Claude Desktop
Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %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-mcpCursor / Cline / Continue
Тот же фрагмент JSON, что и для Claude Desktop, в соответствующих файлах конфигурации MCP.
Примеры
После подключения задавайте агенту вопросы вроде:
Какой год 令和8年? →
era_to_western("令和8年")→2026
Какой адрес у почтового индекса 150-0001? →
lookup_postal_code("150-0001")→東京都 渋谷区 神宮前
Преобразуй 山田太郎 в ромадзи. →
kanji_to_romaji("山田太郎")→yamada tarou
Является ли 3 мая 2026 года японским праздником? →
is_holiday("2026-05-03")→憲法記念日(День памяти конституции)
Перечисли все японские праздники в 2026 году. →
list_holidays(2026)→ 18 праздников с названиями и датами
Преобразуй ヤマダタロウ в хирагану. →
convert_kana("ヤマダタロウ", "hiragana")→やまだたろう
Нормализуй ABC123 до полуширинных символов. →
normalize_width("ABC123", "to_half")→ABC123
Раздели 長谷川健太 на фамилию и имя. →
split_japanese_name("長谷川健太")→長谷川/健太
Ограничения
Ромадзи личных имен использует наиболее распространенное чтение — имена собственные с необычным чтением будут определены неверно. Это фундаментальное ограничение любого преобразования кандзи в ромадзи без контекста для устранения неоднозначности.
Набор данных почтовых индексов поставляется через библиотеку
posuto, обновляемую ежемесячно на основе данных Japan Post KEN_ALL. Если вам нужны максимально свежие данные, периодически обновляйтеposuto.Праздники охватывают только государственные праздники (国民の祝日) — не корпоративные или региональные праздники.
Преобразование эры поддерживает периоды от Мэйдзи (明治) до Рэйва (令和). Более ранние эры не поддерживаются.
Разработка
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
Available Tools
9 toolsconvert_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") → "ヤマダ"
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| to | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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, ...}
| Name | Required | Description | Default |
|---|---|---|---|
| era_year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date_str | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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": [...]}
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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, }
| Name | Required | Description | Default |
|---|---|---|---|
| postal_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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") → "カタカナ"
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| mode | No | to_full |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| full_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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"}
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v0.1.2- First observed
convert_kana - First observed
era_to_western - First observed
is_holiday - First observed
kanji_to_romaji - First observed
list_holidays - First observed
lookup_postal_code - First observed
normalize_width - First observed
split_japanese_name - First observed
western_to_era
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
Japan data tools for AI agents: calendar (rokuyo), address, name splitting, corporate number lookup
39 Japanese locale APIs — wareki, NTA invoice, 法人番号, postal, romanization, kanji-kana (Workers AI).
13 free utility tools for AI agents: web text, markdown, hashing, IDs, dates, units, JSON.
Normalize and romanize Japanese addresses, look up postal codes, count Japanese business days.
Related MCP Servers
- AlicenseAqualityBmaintenanceJapan Operations OS for AI agents — 14 knowledge domains covering regulations, protocols, calendar, travel, food culture, language, disaster safety, daily life, and persistent memory. 31 MCP tools via REST + Streamable HTTP.31MIT
- AlicenseNot gradedqualityCmaintenanceTorify 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 viaMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.1MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to perform Japanese business calendar calculations including holiday detection, business day arithmetic, payment date settlement, and deadline management using local data.6MIT