A Free Chinese Dictionary API and MCP Server for AI Agents

· Giovanni Fu Lin · chinese-learning, api, mcp, ai-agents, hsk

A chat assistant can already write you a set of Chinese flashcards. What it does not have is a fixed word list to check against, so “this word is HSK 3” is only as good as its memory. I wanted a source it could ask instead, so I put the HSK Studio dictionary behind an API and an MCP server. It went live this week and needs no key. I do not yet know whether anyone will call it.

I’m Giovanni, and I build HSK Studio under Fulin Labs. The data is the dictionary and the graded readings the site already uses. Nothing was added for the API.

What it answers

Five questions, each one a GET request:

  • What does this word mean, and which HSK level is it?
  • Which words belong to HSK level N?
  • Which graded readings exist?
  • What is the text of one reading?
  • What HSK level does this passage need?

The word lookup takes Chinese, pinyin or English. Here is the real response for 咖啡:

GET https://hsk.fulinlabs.com/api/agent/word?q=咖啡

{
  "query": "咖啡",
  "match": {
    "word": "咖啡",
    "pinyin": "kāfēi",
    "meaning": "coffee",
    "partOfSpeech": "noun",
    "hskLevel": 2
  },
  "related": [ ... ],
  "url": "https://hsk.fulinlabs.com/dictionary?utm_source=agent&utm_medium=api&utm_campaign=agent-api"
}

The level check takes a passage and reports the HSK level whose words cover it. For 我要一杯咖啡。 it returns HSK 2 with 100 percent coverage, 5 unique words and 咖啡 as the hardest one. Level 1 alone holds 369 words, and words?level=1&limit=20 pages through them.

Using it from an MCP client

The MCP endpoint is https://hsk.fulinlabs.com/api/agent/mcp. It takes POST requests with JSON-RPC and keeps no session. The tools are lookup_word, list_words_by_level, list_readings, get_reading, check_text_level and get_level_check_link. Point any client that supports remote MCP servers at that URL.

A plain HTTP client works too. The index at /api/agent lists the endpoints, and /llms.txt describes them for agents that read that file.

Where it stops

It returns no audio. Speech runs in the browser, so every result links to the HSK Studio page for that word, where the learner can hear it and read example sentences.

Poems and classical texts come back with an HSK level of null. No level covers 90 percent of their words, and a guessed level would be worse than none. The reading list shows null for the poems, for example 静夜思 and 春晓.

Page sizes are capped at 100 words, and a level check reads at most 5,000 characters.

Each response includes a url on hsk.fulinlabs.com with utm_source=agent. The assistant is meant to show it to the learner. That gives me one number I can read: how many visits come from an agent that used the API. Until I see that number move, “agents will use this” stays a guess.

The reverse is also true. If you build a Chinese study tool and want a word list with HSK levels that you did not have to compile, the API is there. Tell me what is missing from it.

FAQ

Do I need an API key for the HSK Studio agent API?

No. The endpoints and the MCP server are open, read-only and free. There is no account and no payment. The only limits are page sizes: 100 words per page and 5,000 characters per level check.

What is the MCP endpoint?

POST JSON-RPC to https://hsk.fulinlabs.com/api/agent/mcp. The server is stateless and has six tools: lookup_word, list_words_by_level, list_readings, get_reading, check_text_level and get_level_check_link.

Does it return audio or example sentences?

No. Audio runs in the browser, so the API cannot serve it. Each result carries a link to the HSK Studio page where a learner can hear the word and see example sentences.

Why does a poem come back with no HSK level?

No single HSK level covers 90 percent of the words in the classical poems and texts, so the API reports the level as null instead of guessing. The response says so.

Related project: HSK Studio by Fulin Labs