Japanophile MCP Server
This server provides Japanese language learning tools, utilities, and fleet integrations via MCP and a webapp.
Kanji lookup and study (
kanji): search by character, meaning, JLPT level, grade, radical, or get random kanji.JLPT quiz practice (
jlpt): fetch questions, submit answers, track session progress and streaks.Vocabulary search (
vocab): query 400k+ words, filter by JLPT level, and retrieve example sentences.Cultural and language knowledge (
knowledge): browse curated articles on Japanese culture, grammar, vocabulary, keigo, and exams.Japanese locale utilities (
jp_utils): convert kana to romaji/hiragana/katakana, and convert between Japanese eras and Western years.Review support (
remember): view your study streak and review missed questions from your JLPT history.Fleet crossconnects (
crossconnect): speak text via TTS, search a Calibre library, or search a Plex media library by proxying sibling MCP servers.Help and status (
japanophile_help): list tools and data readiness.Webapp: access a dashboard, interactive learning games, chat with a local LLM, and more via a browser UI on port 11194.
Allows searching a Plex media library for Japanese movies and anime by query and media type via the crossconnect tool.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Japanophile MCP Servershow me N5 kanji with the water radical"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
japanophile-mcp
Your Japanophile workstation: kanji/JLPT learning tools, Japanese culture knowledge box, travel and diary on the roadmap. First -phile repo (fleet doc: mcp-central-docs/projects/japanophile-mcp/PHILE_PATTERN.md). Polite name on listings; working title was weeaboo, retired to joke status.
Ports: backend 11193, frontend 11194. Registered in mcp-central-docs/operations/WEBAPP_PORTS.md.
Quick start (Stage 2)
cd D:\Dev\repos\japanophile-mcp
uv sync --group dev
.\start.ps1Opens http://127.0.0.1:11194 (HTTP API + MCP on 11193). MCP-only (stdio): uv run python -m japanophile_mcp.server.
Claude Desktop bundle: just mcpb-pack → dist/japanophile-mcp-v{version}.mcpb (see scripts/mcpb-pack.ps1, mcp-central-docs/standards/MCPB_PACKAGING_STANDARDS.md).
Related MCP server: Jisho MCP
Stage 1: MCP tools
Seven portmanteau tools, dialogic returns, seeds in assets/seed/, learning corpora in data/ (committed). Deliberately thin on the MCP side by design — this repo is primarily a human webapp (quizzes, games, reading), MCP tools are the agent-facing afterthought, not the product. vocab, jp_utils, and remember were added 2026-09-14 to close the gap against narrower competing MCP servers (Jisho MCP, JLPT Study MCP, Japan Utils MCP, Ayaka, Potto Japan) — see reports/quality-japanophile-mcp-2026-09-14.md:
Tool | Operations | Data |
| lookup, search, by_jlpt, by_grade, by_radical, random | assets/seed/kanji_database.db (13,108 kanji) |
| next, answer, progress | assets/seed/jlpt_questions.db (600 Q + options) |
| search (400k vocab + jmdict), by_jlpt, examples (278k example sentences) | data/kanji.db (~135MB, vendored) |
| list, get — collection=culture (29 pages) or collection=language (grammar/vocab/keigo/exams, 11 pages) | assets/knowledge/japan/.html, assets/language/.html |
| kana_convert (hiragana/katakana/romaji), era_to_year, year_to_era | pure Python — Hepburn table + Meiji-Reiwa era table |
| streak, due (missed-question queue) | data/progress.db |
| speak, library_search, media_search | proxies speech-mcp/calibre-mcp/plex-mcp REST APIs (2026-09-15, see Crossconnects below) |
| tool + data status | - |
No structured grammar tool: the fleet has no vendored JLPT-graded grammar-point database (unlike Ayaka/Potto Japan), and Makino/Tsutsui's grammar dictionaries are copyrighted — fabricating one would violate the no-fake-data standard. knowledge(collection=language) exposes the real vendored grammar prose page instead.
{ "mcpServers": { "japanophile-mcp": {
"command": "uv",
"args": ["run", "--directory", "D:\\Dev\\repos\\japanophile-mcp",
"python", "-m", "japanophile_mcp.server"] } } }Stage 2: webapp
Dashboard, Learn (kanji / JLPT quiz / vocab), Know, Games (vendored drills), Chat (japanophile-expert + local LLM), Skills, Tools, Settings, Help, Logs. Playwright e2e + screenshot automation in webapp/e2e/.
Webapp (for demo-vid and docs)
Page | Purpose |
Dashboard | Backend health, KPI cards for kanji seed, JLPT question bank, and knowledge page count; surfaces fetch hints when large DBs are missing |
Learn | Kanji lookup and search, JLPT quiz with scored sessions, vocabulary search when |
Know | Browse and read vendored Japan culture articles (history, travel, food, manga, and related topics) as plain text |
Games | Embedded HTML/JS practice tools: flashcards, stroke order, JLPT tests, grammar and listening drills |
Chat | Local LLM tutoring with the japanophile-expert skill loaded; routes answers through repo tools and knowledge pages (text today; voice via speech-mcp when connected) |
Skills | View the japanophile-expert skill markdown used by Chat |
Tools | One-click MCP tool runner (sample kanji lookup) for debugging and demos |
Settings | Ollama-compatible LLM endpoint and model selection for Chat |
Help | Ports, tool list, and pointers to install docs |
Logs | Sorted, filterable-style diagnostic view of backend health, database paths, and load errors from API probes |
Narrated tour script (two sentences per page, 3s pause between): docs/demo-vid/narration.yaml. demo-vid-mcp loads it automatically for demo_vid_generate(repo="japanophile-mcp").
Preview: draft PNGs + agent-made demo MP4 in docs/screenshots/README.md (better PNG contrast planned 2026-09-14).
Inheritance
Learn tools (~15 html/js games), 29 knowledge pages, kanji/JLPT seeds vendored from ai-games-collection (docs/INHERITANCE.md). Canonical home for Japanese learning; ai-games-collection keeps hanafuda/cho-han play with crosslinks.
Crossconnects
local-llm-mcp — Chat tutoring (wired).
speech-mcp — TTS via
crossconnect(speak)and the Know page's Listen button; proxied through/api/crossconnect/speak.wavso the browser never talks to speech-mcp's port directly (wired 2026-09-15).calibre-mcp —
crossconnect(library_search), Sandra's Japanese-literature/textbook/manga shelf by query or tag (wired 2026-09-15; client-side query filter works around an upstream bug — calibre-mcp's ownqueryparam is currently a no-op, see reports/quality-japanophile-mcp-2026-09-14.md follow-ups).plex-mcp —
crossconnect(media_search), Sandra's JP movies/anime by query and media_type (wired 2026-09-15; client-side type filter works around plex-mcp'smedia_typeparam currently being a no-op).ai-games-collection — canonical home for hanafuda/cho-han gameplay; this repo owns learning.
Voice Command Bus — registered as a receiver (
japanophileentity, direct route tokanji/vocab/jlpt/knowledge/japanophile_help) inmcp-central-docs/config/voice_command_bus.yaml+ fleet-agent-mcp'sFLEET_SERVERS(2026-09-15). Not yet functional — this repo's own/mcpstreamable-HTTP mount currently fails session init; fleet-agent can't reach it until that's fixed (seemcp-central-docs/standards/VOICE_COMMAND_BUS.md§4c). Seemcp-central-docs/standards/VOICE_COMMAND_BUS.mdfor the full pattern.Full crossconnect map:
mcp-central-docs/projects/japanophile-mcp/PHILE_PATTERN.md. No webapp browser UI yet for library_search/media_search — MCP/HTTP only so far.
Roadmap
Tauri NSIS winapp (installer built at 0.3.0; next release when rebased on 0.3.1).
Plan + Remember: travel planner APIs, diary, full SRS scheduler (today's
remembertool is a missed-question queue, not SM-2/FSRS).austrophile-mcp as second -phile template.
Docs: TOOLS - CONFIGURATION - INSTALL - CONTRIBUTORS
Available Tools
8 toolscrossconnectB
Fleet crossconnects: speak | voices | library_search | media_search. Each proxies a sibling MCP server's REST API (speech-mcp :10909, calibre-mcp :10720, plex-mcp :10740 by default, override via SPEECH_MCP_URL/CALIBRE_MCP_URL/ PLEX_MCP_URL). Peer offline returns a fail() with a start hint, not a traceback — see PHILE_PATTERN.md crossconnects section.
speak: text=... plays via speech-mcp's TTS on ITS OWN speaker (agent voice output), not returned audio. Defaults provider=gemini (noticeably better than Windows SAPI); pass provider="windows" if Gemini isn't configured on speech-mcp. library_search: query and/or tag against Sandra's Calibre library. media_search: query (+ optional media_type) against her Plex library.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| text | No | ||
| limit | No | ||
| query | No | ||
| provider | No | gemini | |
| voice_id | No | default | |
| operation | Yes | ||
| media_type | No |
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 of behavioral disclosure. It usefully states that each operation proxies a sibling REST API, that offline peers return a fail() with a start hint instead of a traceback, and that speak plays on the agent's own speaker rather than returning audio. It also mentions provider behavior. However, it stays silent on side effects for library_search/media_search, does not cover authentication or rate limits, and gives zero behavioral detail for `voices`. Moderate but incomplete disclosure.
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 a single dense paragraph that front-loads the operation list and then details each operation. It packs in URLs, environment variables, provider defaults, and fallback hints, all of which are useful, but the lack of structured bullet points makes it harder to scan. Some details (e.g., exact port numbers) could be moved lower, but no sentence is purely valueless. It is long yet efficient, warranting a middle score.
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 complexity (8 parameters, no param descriptions, no annotations, and an output schema), the description should cover all operations and parameters to enable correct invocation. It explains three of four operations and several parameters, but completely omits `voices` and the `voice_id` and `limit` parameters. It also never explicitly states the allowed values of `operation`. These gaps make the description insufficient for an agent to fully use the 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 coverage is 0%, so the description must compensate by explaining parameters. It clarifies `text` for speak, `query`/`tag` for library_search, `query`/`media_type` for media_search, and `provider` for speak. But it never explains the required `operation` parameter as the dispatcher, and it omits `voice_id` and `limit` entirely. The `voices` operation's parameters are also unexplained. Given the 8-parameter schema, nearly half the parameters lack semantic grounding.
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 opens with 'Fleet crossconnects: speak | voices | library_search | media_search' and explains each operation is a proxy to a specific sibling MCP server. This gives a clear verb+resource mapping for four distinct behaviors, making the tool's purpose obvious and differentiating it from its unrelated sibling tools (jlpt, vocab, etc.). The only minor omission is not explicitly tying the required `operation` parameter to these four values, but the implication is strong enough.
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 some usage context: it tells when to use speak (with provider choices), library_search (Calibre library), and media_search (Plex library), and it notes the offline peer fail() behavior. However, it does not explain the `voices` operation at all, and it gives no explicit 'when not to use' guidance or alternatives beyond provider choice. Since the siblings are unrelated, that gap is minor, but the missing `voices` guidance is a real defect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
japanophile_helpB
List tools, data status, and next steps for agents and IDEs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 full burden. 'List' implies read-only behavior, but the description does not state whether authentication is needed, whether there are rate limits, or any other behavioral constraints. It also does not clarify if calling it has side effects or what 'next steps' means operationally.
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?
A single sentence that is front-loaded and contains no filler. Every word contributes to stating what the tool does and for whom.
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?
With an output schema present, the description need not explain return values. It states the tool's purpose and audience, which is sufficient for a simple, zero-parameter help tool. The missing usage guidance is the only notable gap.
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 tool has zero parameters, so per the rubric the baseline is 4. The description adds no parameter semantics, but none are needed.
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 a specific verb (List) and resources (tools, data status, next steps), distinguishing it as a meta/help tool. It does not explicitly differentiate from domain-specific siblings like jlpt or vocab, but the audience 'for agents and IDEs' makes its role apparent.
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?
No when-to-use, when-not-to-use, or alternative tools are mentioned. The audience hint implies context, but an agent receives no explicit guidance on when to invoke this help tool instead of directly using sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlptB
JLPT quiz: next | answer | progress.
next: random unseen question for level (N5..N1, falls back to any level). answer: grade question_id with letter; records to progress store. progress: session score summary.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | N5 | |
| answer | No | ||
| operation | Yes | ||
| session_id | No | default | |
| question_id | No | ||
| response_time_ms | No |
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 behavioral burden. It discloses some important traits: random unseen question selection, level fallback to any level, grading an answer, and recording to a progress store. However, it omits other relevant behaviors such as error handling, validation rules, session persistence, and any auth or rate limit considerations.
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 front-loaded with a one-line summary followed by a clean, line-per-operation breakdown. Every sentence is necessary and there is 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?
An output schema exists, so return values need not be explained. For a multi-operation tool with six parameters and no annotations or schema descriptions, the definition covers the operation routing but is incomplete on parameter meaning and deeper behavioral context. It is minimally viable but has clear gaps.
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 explain all six parameters. It covers operation, level (N5..N1), answer (a letter), and question_id, but leaves session_id and response_time_ms completely undefined. The two missing parameters are significant for correct invocation, so compensation is only partial.
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 specifies the resource (JLPT quiz) and enumerates its three operations (next, answer, progress) with a brief gloss for each. It is clear what the tool does, but it does not differentiate itself from sibling tools like vocab or kanji, which could also relate to Japanese learning.
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 when each operation should be used (next for a new question, answer for grading, progress for a score summary), but it offers no guidance on when to choose this tool over the sibling tools (vocab, knowledge, kanji) or any exclusions. Usage is inferable only from the operation breakdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jp_utilsA
Japan-locale utilities: kana_convert | era_to_year | year_to_era.
kana_convert: text=kana string, target=romaji|hiragana|katakana. Romaji is standard Hepburn (gojuon + digraphs + sokuon doubling + chouonpu vowel repeat) — see caveats in the conversion docstring. era_to_year: era=meiji|taisho|showa|heisei|reiwa, era_year=N -> western year. year_to_era: year=western year -> {era, era_year} (year-granularity; see _ERA_TABLE note on transition-year handling).
| Name | Required | Description | Default |
|---|---|---|---|
| era | No | ||
| text | No | ||
| year | No | ||
| target | No | romaji | |
| era_year | No | ||
| operation | 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 and delivers meaningful behavioral disclosure: it specifies the Hepburn romanization standard with concrete traits (gojuon, digraphs, sokuon doubling, chouonpu vowel repeat), year-granularity of era conversion, and flags transition-year handling via the _ERA_TABLE note. The main weakness is deferring details to 'the conversion docstring' and an internal table note that the agent cannot reliably access.
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 compact and well-structured, front-loading the operation list and then giving each sub-operation a focused one-liner. It is dense enough that every clause earns its place, though the linguistic jargon (gojuon, sokuon, chouonpu) adds some cognitive load without definition.
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 three-in-one dispatcher with 6 parameters, no annotations, and 0% schema coverage, the description covers an unusual amount: operation semantics, parameter value sets, conversion conventions, and output granularity. Remaining gaps are the unresolved docstring/_ERA_TABLE deferrals and no statement about invalid-input behavior (e.g., empty text or out-of-range years). An output schema exists, so return-value documentation is not required.
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 — and it largely does: text, target (with romaji|hiragana|katakana values), era (meiji|taisho|showa|heisei|reiwa), era_year, and year are all given meaning and accepted value sets. The one gap is the required 'operation' parameter, whose binding to the three named operations is only implied by the top-line 'kana_convert | era_to_year | year_to_era' list rather than stated explicitly.
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 opens with a clear subject ('Japan-locale utilities') and enumerates three concrete operations — kana_convert, era_to_year, year_to_era — each with its own verb-and-resource semantics (convert kana text, convert era to western year, convert western year to era). It is clear and specific, but it never references sibling tools to differentiate itself, so the 'distinguishes from siblings' bar for a 5 is not fully met.
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?
Usage is implied through the sub-operation breakdown: the description tells you which parameters belong to which operation and what each operation computes. However, there is no explicit when-to-use versus when-not-to guidance, no mention of alternatives among the sibling tools (jlpt, kanji, vocab, etc.), and no exclusions or prerequisites. The routing is left for the agent to infer from the operation list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kanjiB
Kanji dictionary: lookup | search | by_jlpt | by_grade | by_radical | random.
lookup: query=single kanji char. search: query=English meaning fragment. by_jlpt: level=N5..N1. by_grade: grade=1..8. by_radical: radical=char. random: optional level filter.
| Name | Required | Description | Default |
|---|---|---|---|
| grade | No | ||
| level | No | ||
| limit | No | ||
| query | No | ||
| radical | No | ||
| operation | 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 behavioral burden; it states nothing about read-only vs mutating behavior, authentication, rate limits, pagination, or result-count behavior. Output schema exists so return shape is covered, but the operational traits an agent needs before invoking a 6-parameter tool are absent.
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 operation list is front-loaded, followed by terse per-operation parameter hints with no filler sentences. The fragment style is dense but efficient; nothing is wasted, though the run-on second block could be slightly more scannable.
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 an output schema exists, return values need not be described, and the description covers most parameters and all operations. The remaining gaps are the unmentioned 'limit' parameter and the absence of a formal enum for 'operation' (the schema leaves it an open string), which the prose only partially mitigates.
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?
With 0% schema description coverage across 6 parameters, the description compensates well: it explains query semantics (single kanji vs English fragment, varying by operation), level (N5..N1), grade (1..8), and radical (a character). Only 'limit' is left entirely unexplained and the per-operation value constraints are prose rather than schema enums.
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 names a specific resource (kanji dictionary) and enumerates six concrete operations (lookup, search, by_jlpt, by_grade, by_radical, random), so an agent immediately knows what the tool is and what verbs it supports. It does not, however, differentiate itself from siblings like jlpt or vocab, which likely overlap on Japanese-language lookups.
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?
It maps each operation to its expected argument form (lookup→single char, search→English fragment, by_jlpt→N5..N1, by_grade→1..8, random→optional level), which implies when each operation applies. But there is no guidance on when to prefer this tool over the sibling jlpt/vocab tools, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledgeC
Knowledge box: list | get. collection=culture (default, 29 history/travel/food pages) or collection=language (grammar/vocabulary/keigo/exams/materials study pages — same vendored assets/language/ the webapp Language tab reads).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| operation | Yes | ||
| collection | No | culture |
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 of behavioral disclosure. It implies read-only behavior via 'list|get' but does not explicitly state it, nor does it mention any side effects, auth requirements, rate limits, or pagination. The reference to 'same vendored assets' is too vague to be actionable. This is a significant gap for a tool without annotation support.
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 concise, contained in a single sentence, and front-loads the core operations 'list | get'. However, the sentence is dense and the trailing clause about 'same vendored assets/language/ the webapp Language tab reads' is confusing and poorly structured, undermining clarity. It is terse but not elegantly organized.
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 has 3 parameters and no annotations, the description is incomplete: it omits explanations for 'operation' and 'page', and provides no guidance on usage context relative to siblings. While an output schema exists (so return format is covered), the description still fails to equip an agent with the necessary knowledge to call this tool correctly and decide when to use 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?
The schema has 0% description coverage, so the description must compensate. It does explain the 'collection' parameter (culture vs language, with default), which is helpful. However, it does not explain the 'operation' parameter (beyond implying list/get) and provides no meaning for 'page'. Two of three parameters remain unexplained, making it insufficient for correct invocation.
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 supports 'list' and 'get' operations on knowledge pages, and specifies two collections (culture and language) with a clear default. This gives a specific verb+resource. However, it does not explicitly contrast with sibling tools like 'vocab' or 'kanji' to differentiate them, so it falls short of a 5.
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 culture and language knowledge pages but provides no explicit guidance on when to choose this tool over its siblings (jlpt, vocab, kanji, etc.). There are no examples, no conditions, and no alternative tool recommendations, leaving the agent to infer the intended context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberA
Review support over your own JLPT answer history: streak | due.
streak: consecutive days (ending today) with >=1 jlpt/answer logged for
session_id. due: question_ids answered at least once but never correctly —
a simple missed-question queue, NOT a full SM-2/FSRS spaced-repetition
scheduler (see PRD.md open question on SRS algorithm choice; this reads
the same data/progress.db answers table jlpt/answer writes to).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| operation | Yes | ||
| session_id | No | default |
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 burden of behavioral disclosure. It states that the tool reads the answers table, defines streak and due precisely, and clarifies the limitation of not being a full spaced-repetition scheduler. It does not mention side effects, but 'reads' implies a read-only operation.
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 compact and well-organized, with a lead summary followed by clear definitions of streak and due. The PRD reference adds useful context without bloating the text, though it could be trimmed without losing core meaning.
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?
An output schema exists, so return values need not be described, and the description covers the data source and non-SRS limitation. However, parameter semantics are incomplete, especially for 'limit' and the exact accepted values of 'operation', leaving some ambiguity for an agent invoking the 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 for parameter meaning. It partially explains operation concepts (streak/due) and mentions session_id in the streak definition, but it never explicitly maps the 'operation' parameter to allowed values and does not explain 'limit' or fully clarify session_id scoping for the due operation.
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: reviewing JLPT answer history with two operations, streak and due. It names a specific resource (your own JLPT answer history) and the two modes, but it does not explicitly differentiate itself from sibling tools like jlpt or knowledge beyond implying it is review-oriented.
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 gives useful context: it operates over the same answers table that jlpt/answer writes to, and it explicitly warns that this is NOT a full SM-2/FSRS scheduler. It implies when to use it (for streak/due review), though it does not explicitly state when to prefer a sibling tool or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vocabB
Vocabulary: search | by_jlpt | examples. Needs the big kanji.db (135MB, fetched).
search: expression/reading/translation fragment. by_jlpt: jlpt_vocabulary level. examples: query against the 278k-row examples table (Japanese sentence, English translation, linked words) — vendored with kanji.db but previously unqueried.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| query | No | ||
| operation | 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 behavioral burden. It adds useful context: the dependency on a large 135MB database and the characteristics of the examples table (278k rows). But it does not explicitly state the read-only nature of these queries, how empty results behave, or what the response structure looks like — gaps that matter for a data-retrieval tool.
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 compact and front-loads the three operations in the first line, with detail following in a structured, scannable format. Each sentence earns its place. The compressed pipe-separated style is slightly dense but effective and free of filler.
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?
An output schema exists, so return-value documentation is covered. The three operations are each explained with their query targets. But for a multi-operation tool, the description omits the explicit enumeration of operation values and limit semantics, and the sibling overlap with jlpt/kanji is unaddressed — leaving moderate gaps for correct invocation.
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 partially does: it maps operations to parameters (search → query fragment, by_jlpt → level, examples → query against examples table). However, it never explains the 'limit' parameter, and the valid values for the required 'operation' parameter are only implied by the three operation names rather than stated explicitly.
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?
States a clear verb+resource (query vocabulary) and enumerates three specific operations: search, by_jlpt, examples. It implicitly distinguishes from the kanji sibling tool by focusing on vocabulary data. The purpose is clear, though the terse 'search | by_jlpt | examples' shorthand could be more explicit about what each operation returns.
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?
Discloses a key prerequisite ('Needs the big kanji.db (135MB, fetched)') and notes the examples table was 'previously unqueried', giving context on when the tool is ready to use. However, it never names sibling tools (jlpt, kanji) as alternatives or states when NOT to use this tool, leaving selection inference to the agent.
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.
4 tool updates
v0.3.1- Added
crossconnect - Added
jp_utils - Changed
knowledge1 field changed- added
Input schema / properties / collectionAdded value: +{ + "default": "culture", + "type": "string" +}
- Added
remember
5 tool updates
v0.1.0- First observed
japanophile_help - First observed
jlpt - First observed
kanji - First observed
knowledge - First observed
vocab
TDQS
Scored across 8 tools
Each tool targets a clearly separate domain: quiz, kanji, vocabulary, knowledge, utilities, review, fleet proxies, and help. Even where subcommands like 'search' or 'by_jlpt' reappear, their target resources are explicit and non-overlapping.
Tool names are short lowercase domain labels with consistent subcommands, which is a recognizable and predictable pattern. Minor deviations like jp_utils and japanophile_help using underscores while others do not prevent a perfect score.
8 tools is well within the ideal range, and each tool bundles several related subcommands without creating namespace sprawl. Every tool earns its place in the overall Japan-study and utility workflow.
The core loop of learning kanji/vocabulary, taking JLPT quizzes, reviewing mistakes, and accessing reference material is well covered. Minor gaps exist: the review tool is deliberately not a full spaced-repetition system, and grammar material is only available as static knowledge pages rather than an interactive lookup.
Maintenance
Related MCP Connectors
- potto-japanOAuthapp.potto
Authoritative JLPT-graded Japanese dataset (kanji, vocab, grammar, history) via MCP and REST.
Jisho.org Japanese-English dictionary MCP (keyless).
Search the Inoh dictionary and create, track and delete your own vocabulary flashcards.
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides AI agents with direct access to local Yomitan dictionary databases for offline Japanese vocabulary lookups, kanji searches, and sentence tokenization. It leverages the Yomitan browser extension's API to enable rich dictionary interactions and Anki flashcard field generation.59 npm6Mozilla Public 2.0
- AlicenseAqualityDmaintenanceEnables Japanese word lookup and search using the Jisho.org dictionary, providing tools to search entries and retrieve exact word definitions with JLPT levels and parts of speech.22MIT
- AlicenseAqualityAmaintenanceExposes J-STAGE WebAPI as four tools for searching articles, issues, journals, and resolving DOIs, returning bilingual JSON with attribution.32MIT
- AlicenseNot gradedqualityCmaintenanceEnables Japanese language gap analysis and remediation through adaptive probes, evidence tracking, and prerequisite-aware study queues.MIT