Skip to content
Conduit

mcp server

Ayaka

MCP tools for Japanese learning

Kvyii/Ayakacommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 23, 2026

Ayaka 彩花

Python MCP SQLite License JLPT

A local MCP server that gives Claude structured, persistent access to JLPT curriculum data and learner progress across kanji, vocabulary, and grammar. Built in Python with SQLite storage, running as a stdio process registered with Claude Desktop.

What it does

Ayaka seeds a local SQLite database with ~3,000 kanji and ~20,000 vocabulary entries sourced from community-maintained JLPT datasets, then exposes that data — along with per-item progress tracking — to Claude through MCP tools. This lets Claude:

  • Look up kanji, vocabulary, and grammar with readings, meanings, and JLPT levels
  • Track progress across sessions — confidence levels, last-seen dates, production flags
  • Plan lessons by querying JLPT coverage stats and finding items due for review
  • Teach adaptively by knowing exactly what the learner has and hasn't covered

Tools

ToolDescription
get_kanjiLook up kanji by character — reference data + progress
update_kanji_progressSet confidence, mark seen/produced
get_vocabLook up vocabulary by word or reading
update_vocab_progressSet confidence, mark produced
get_grammarQuery grammar patterns by text or JLPT level
update_grammar_progressTrack a new pattern or update status
get_jlpt_coverageCoverage summary for a JLPT level across all categories
get_due_for_reviewItems not seen in N days, across any/all categories
get_introduced_betweenItems introduced within a date range, across any/all categories

Setup

cd mcp
uv sync                        # install dependencies
uv run seed/seed.py            # download data + populate ayaka.db (one-time)

Register with Claude Desktop by adding to your claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):

{
  "mcpServers": {
    "ayaka": {
      "command": "uv",
      "args": ["--directory", "C:\\path\\to\\Ayaka\\mcp", "run", "server.py"]
    }
  }
}

This config can also be accessed via Settings > Developer > Local MCP Servers in Claude Desktop.

Data sources

The seed script (uv run seed/seed.py) downloads three JSON files from GitHub and parses them into SQLite. It's idempotent — if the data already exists, it skips.

DataSourceWhat the seed does
Kanji + readings + JLPTdavidluzgouveia/kanji-dataDownloads kanji.json (~1.5MB), extracts character, meanings, on/kun readings, JLPT level (N5–N1), grade, frequency, and stroke count into kanji_ref
Vocabulary + readings + POSscriptin/jmdict-simplifiedResolves the latest GitHub release, downloads the jmdict-eng-common .tgz (~1.3MB), extracts the JSON, and parses primary word/reading, English glosses, and part of speech into vocab_ref
Vocab → JLPT level mappingBluskyo/JLPT_VocabularyDownloads JLPTWords.json (~200KB) and joins JLPT levels onto vocab entries by matching word + reading
Grammar patterns + examplesJLPT Grammar ListReads the committed grammar.json (708 patterns across N5–N1) into grammar_ref with pattern, meaning, and example sentences

Project structure

mcp/
├── server.py            # MCP server entrypoint (FastMCP, stdio)
├── db.py                # SQLite schema + connection helpers
├── tools/
│   ├── kanji.py         # get_kanji, update_kanji_progress
│   ├── vocab.py         # get_vocab, update_vocab_progress
│   └── grammar.py       # get_grammar, update_grammar_progress
└── seed/
    └── seed.py          # One-time data download + DB population
↑↓ navigate openesc close