japan-utils-mcp
japan-utils-mcp
AI 에이전트(Claude, Cursor, Cline, Continue 등)에 일본 관련 유틸리티를 제공하는 MCP 서버입니다. 일본 관련 작업 시 일반적인 LLM이 정확하게 처리하지 못하는 일본 특화 기능을 에이전트에게 제공합니다:
🗓️ 연호 ↔ 서기 —
令和8年↔2026🔤 한자 → 헵번식 로마자 —
山田太郎→yamada tarou📮 우편번호 조회 —
150-0001→東京都 渋谷区 神宮前🎌 공휴일 달력 —
2026-05-03은 공휴일인가요? 2026년 전체 공휴일은 언제인가요?🅰️ 가나 변환 — 히라가나 ↔ 가타카나 ↔ 반각 가타카나
📏 폭 정규화 — ASCII, 숫자, 가나에 대한 전각(全角) ↔ 반각(半角) 변환
👤 이름 분리 —
山田太郎→ 성山田+ 이름太郎(통계 모델 기반)
검증된 일본어 라이브러리(jpholiday, posuto, pykakasi, jaconv, namedivider-python)를 기반으로 구축되었으며, MCP 도구로 래핑되어 있어 AI 에이전트가 읽기 규칙, 연호 계산, 우편 데이터, 이름 분리 휴리스틱을 직접 구현할 필요 없이 호출할 수 있습니다.
존재 이유
일반적인 LLM은 일본 관련 데이터에서 환각 현상을 보입니다:
"令和8年은 몇 년인가요?" — 종종 틀림
"山田太郎를 로마자로 변환해줘" — 성을 절반 정도의 확률로 틀림
"우편번호 150-0001의 주소는 무엇인가요?" — 그럴듯한 거짓 정보를 생성함
"5월 3일은 일본 공휴일인가요?" — 추측함
이 MCP는 에이전트에게 결정론적인 답변을 제공합니다.
Related MCP server: Torify — Japanese Locale APIs for AI Agents
도구
도구 | 기능 |
|
|
|
|
| 일본어 혼합 텍스트 → 헵번식 로마자 + 히라가나 읽기 |
| 7자리 일본 우편번호 → 도도부현 / 시구정촌 / 지역, 가나 읽기 포함 |
| 날짜 문자열 → 공휴일 여부 + 일본어 명칭 + 요일 |
| 연도 → 해당 연도의 모든 공휴일 |
| 히라가나 ↔ 가타카나 ↔ 반각 가타카나, 모든 방향 변환 |
| ASCII, 숫자, 가나에 대한 전각 ↔ 반각 변환 (카테고리별 제어 가능) |
| 일본어 성명 → 성 + 이름 (신뢰도 점수가 포함된 통계 모델) |
모든 도구는 구조화된 JSON을 반환합니다. 전체 스키마와 예제는 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
Claude Desktop과 동일한 JSON 스니펫을 각 MCP 설정 파일에 추가하세요.
예제
연결 후 에이전트에게 다음과 같이 질문해 보세요:
令和8年은 몇 년인가요? →
era_to_western("令和8年")→2026
우편번호 150-0001의 주소는 무엇인가요? →
lookup_postal_code("150-0001")→東京都 渋谷区 神宮前
山田太郎를 로마자로 변환해줘. →
kanji_to_romaji("山田太郎")→yamada tarou
2026년 5월 3일은 일본 공휴일인가요? →
is_holiday("2026-05-03")→憲法記念日(헌법기념일)
2026년의 모든 일본 공휴일을 나열해줘. →
list_holidays(2026)→ 명칭과 날짜가 포함된 18개의 공휴일
ヤマダタロウ를 히라가나로 변환해줘. →
convert_kana("ヤマダタロウ", "hiragana")→やまだたろう
ABC123을 반각으로 정규화해줘. →
normalize_width("ABC123", "to_half")→ABC123
長谷川健太를 성과 이름으로 분리해줘. →
split_japanese_name("長谷川健太")→長谷川/健太
주의사항
인명 로마자 표기는 가장 일반적인 읽기 방식을 사용합니다. 읽기가 특이한 고유 명사는 틀릴 수 있습니다. 이는 문맥적 모호성 해소 없이 한자를 로마자로 변환할 때 발생하는 근본적인 한계입니다.
우편번호 데이터셋은
posuto라이브러리를 통해 제공되며, 일본 우체국의 월간 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).
Japanese business days, holiday checks and invoice due dates for your AI agent.
13 free utility tools for AI agents: web text, markdown, hashing, IDs, dates, units, JSON.
Related MCP Servers
- AlicenseAqualityCmaintenanceJapan 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
- 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
- AlicenseAqualityDmaintenancePortable agent tools with typed schemas (diff, cron, units, JSON→TS, outdoor helpers, prompts). Free to try—no account required.30MIT