Taiwan Mandarin
⌘ K
Display

Saved on this device.

Pronunciation
how readings are shown
Changes apply instantly.
mcp server · for your ai tutor

Hand the dictionary to your LLM.

An MCP server over the whole database — 4,974 traditional Chinese characters and 30,117 words with real frequency ranks, Taiwan readings and TOCFL levels, searchable by meaning or pinyin. One line of config and your model looks the answer up instead of recalling it. No key, no account.

Paste it into Claude Code, Cursor, or any agent — it registers the server and checks the connection for you.

https://mcp.taiwanmandarin.com
setup

Connect a client

The server speaks the Model Context Protocol over Streamable HTTP, so most clients need nothing but the URL. Add this to your client's MCP config — Claude Desktop's claude_desktop_config.json, Cursor's ~/.cursor/mcp.json, or the equivalent panel — then restart it.

{
  "mcpServers": {
    "taiwan-mandarin": {
      "url": "https://mcp.taiwanmandarin.com"
    }
  }
}
Claude Code, from the terminal
claude mcp add --transport http taiwan-mandarin https://mcp.taiwanmandarin.com
Clients that only speak stdio

Some clients can only launch a local process. Bridge to the HTTP endpoint with mcp-remote:

{
  "mcpServers": {
    "taiwan-mandarin": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.taiwanmandarin.com"]
    }
  }
}

Once connected, the client discovers the 9 tools below on its own. Ask it something like “what's the difference between and ?”, “how do you actually say computer in Taiwan?” or “give me the 20 most common words built on ” and watch it call them.

tools

The 9 tools

Each one is a read against the same database that backs the pages on this site. The descriptions below are verbatim what the model is given.

get_character

Look up a single Chinese character (traditional). Returns Taiwan frequency rank, pinyin (multiple readings when applicable), bopomofo, English definition, TOCFL level, radical, stroke count, and common words built on this character (example_words, derived from word_chars).

NameTypeNotes
charstringrequiredThe character itself (e.g. 我, 學). Single CJK character; surrogate pairs allowed (some rare chars are 2 UTF-16 code units, hence maxLength 4).
list_characters

List traditional Chinese characters filtered by rank range, radical, or stroke count, ordered by Taiwan (COCT) frequency. Use for queries like 'top 20 characters', 'all characters with the 木 radical', or '7-stroke characters'.

NameTypeNotes
minRankintegerTaiwan frequency rank >= this value.
maxRankintegerTaiwan frequency rank <= this value.
radicalstringExact radical character (e.g. 木).
strokesintegerExact stroke count.
pageintegerdefault 11-indexed page of results, max 1000.
pageSizeintegerdefault 20Default 20, max 100. (The JSON API defaults to 100 and caps at 500; this tool uses tighter bounds to keep MCP token costs reasonable.)
get_word

Look up a single traditional Chinese word — a multi-character vocabulary item such as 電腦 or 謝謝. Returns Taiwan frequency rank, pinyin, bopomofo, English definition, TOCFL level and part of speech, plus the full record for each component character, so the word can be explained from its parts. Use get_character for a single glyph.

NameTypeNotes
wordstringrequiredThe word itself, in traditional characters (e.g. 電腦, 謝謝). Exact match — no pinyin, no simplified forms; use search to find a word from English or pinyin.
list_words

List traditional Chinese words ordered by Taiwan (COCT) frequency — the vocabulary side of the database. Filter by frequency rank, or by a character the word must contain: `contains: 學` returns the words built on 學, which is how a learner turns one known character into usable vocabulary. Lists only words carrying a frequency rank; for a graded level's complete vocabulary use list_tocfl_terms.

NameTypeNotes
minRankintegerTaiwan frequency rank >= this value.
maxRankintegerTaiwan frequency rank <= this value. maxRank=100 is the 100 most common.
containsstringOne character. Returns the words containing it anywhere (學 → 學生, 大學, 同學).
pageintegerdefault 11-indexed page of results, max 1000.
pageSizeintegerdefault 20Default 20, max 100.
list_radicals

List the Kangxi radicals in use — the semantic components characters are built from, and the traditional way of indexing a dictionary. Each entry carries the radical glyph, its Kangxi ordinal (1-214), a one-word English gloss (木 → tree), and how many characters in the inventory use it. Radicals with no characters are omitted. Pass a glyph to list_radical_characters, or to the `radical` filter on list_characters.

Takes no arguments.

list_radical_characters

List the characters built on one Kangxi radical, most useful first — Taiwan frequency, then stroke count. The response also carries the radical's ordinal and English gloss. Use this to answer 'what else uses 水?' or to teach a radical as a group. It differs from list_characters' `radical` filter in that it includes characters the frequency corpus never attests, and orders by stroke count within equal frequency, which is how a paper dictionary arranges them.

NameTypeNotes
radicalstringrequiredThe radical glyph, from list_radicals (e.g. 木, 水, 心). Must be one of the 214 Kangxi radicals — a character that merely contains one won't do.
pageintegerdefault 11-indexed page of results, max 1000.
pageSizeintegerdefault 20Default 20, max 100.
list_tocfl_levels

List the 7 TOCFL (華語八千詞) proficiency levels — Taiwan's official graded vocabulary scale, traditional script. Returns each level's slug, display name, and entry count (characters + words). Pass the returned slug to list_tocfl_terms. Note the display names are NOT the ordinals: 1=Novice 1, 2=Novice 2, 3=Level 1, 4=Level 2, 5=Level 3, 6=Level 4, 7=Level 5.

Takes no arguments.

list_tocfl_terms

List the vocabulary at one TOCFL level — characters and/or multi-character words from the 華語八千詞 list (traditional script), ordered by Taiwan frequency (unranked entries last). Each entry carries pinyin, bopomofo, English definition, part of speech, and frequency rank. Call list_tocfl_levels first to get the level slug. Use this for queries like 'TOCFL Level 1 words' or 'beginner Taiwan vocabulary'.

NameTypeNotes
levelstringrequiredLevel slug from list_tocfl_levels: novice-1, novice-2, level-1, level-2, level-3, level-4, level-5.
kindstringdefault bothchar = single-character entries only; word = multi-character words only; both = all (default).
pageintegerdefault 11-indexed page of results, max 1000.
pageSizeintegerdefault 20Default 20, max 100.
search

Find characters and words by meaning or pronunciation, when you don't have the glyph: English ("computer"), pinyin with or without tone marks or numbers ("diannao", "diàn nǎo", "dian4nao3"), or the traditional characters themselves. Results are ordered by match quality — exact reading first, then a definition that leads with the searched meaning, then Taiwan frequency. Reach for this before asserting how something is said or written in Taiwan; use get_character / get_word instead when you already have the exact term. Lexical search, not semantic: it matches readings and definition wording, so a near-synonym the gloss doesn't use won't be found.

NameTypeNotes
querystringrequiredEnglish meaning, pinyin, or traditional Han text. A single word or short phrase — the longest term drives the meaning ranking.
kindstringdefault bothchar = single characters only; word = multi-character vocabulary only; both = each searched and returned separately (default).
limitintegerdefault 10Maximum results per kind. Default 10, max 50.
protocol

How the endpoint behaves

Streamable HTTP, stateless

Every request is a self-contained JSON-RPC 2.0 POST to https://mcp.taiwanmandarin.com. There is no session to open and no server→client stream: a GET asking for text/event-stream gets a 405, which the spec allows. A plain GET from a browser gets a small JSON description of the service instead.

Protocol version 2025-11-25

Reported in the initialize result, along with the server's name and tool capability.

No authentication

Public and read-only. No keys, no OAuth, no cookies — and Access-Control-Allow-Origin: *, so a browser-based client can connect directly.

Errors come back as results, not transport failures

A malformed call returns a JSON-RPC error object; a lookup that finds nothing returns a tool result with isError: true and a readable message, which is what lets the model recover on its own.

List the tools
curl -s https://mcp.taiwanmandarin.com \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call one
curl -s https://mcp.taiwanmandarin.com \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":
       {"name":"get_character","arguments":{"char":"水"}}}'
Prefer plain HTTP? The JSON API ›Where the data comes from ›What MCP is ›