chengyu-coach-mcp
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., "@chengyu-coach-mcp抽三个成语考考我,答完记得更新我的掌握进度"
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.
chengyu-coach-mcp
成语学习 MCP 服务器(Python,mcp SDK v2 的 MCPServer,stdio 传输)。内置 3303 条常用成语,学习进度存在本地 SQLite,让任意 MCP 客户端(Qoder / Claude Desktop / Cursor 等)帮你每天抽几个成语学,并根据聊天表现自动记录掌握程度。
抽词:优先抽没抽过的;一轮抽完后按"抽得最少 + 最久没抽"轮转;默认跳过最近 20 条和已掌握的
查询:每个成语抽中了几次、当前状态、备注
记录:掌握状态 + 每词自由备注,由 AI 根据对话自行判断写入
不内置测验卷:考不考、怎么考由客户端 AI 决定,服务端只负责抽词和记录
掌握状态:learning(还不熟)→ reviewing(基本会但不稳)→ mastered(能熟练解释和造句)。
安装
pip install chengyu-coach-mcp # 发布到 PyPI 后
# 或使用 uv
uvx chengyu-coach-mcp从源码安装:
git clone <repo-url> chengyu-coach-mcp
cd chengyu-coach-mcp
python -m venv .venv
.venv/Scripts/pip install -e . # Windows;macOS/Linux 用 .venv/bin/pipRelated MCP server: mcp-server-maimemo
接入 MCP 客户端
已安装到环境后,在客户端配置里加:
{
"mcpServers": {
"chengyu-coach": {
"command": "uvx",
"args": ["chengyu-coach-mcp"]
}
}
}从源码运行时(pip install -e . 之后),用解释器直接启动模块:
{
"mcpServers": {
"chengyu-coach": {
"command": "<项目路径>/.venv/Scripts/python.exe",
"args": ["-m", "chengyu_coach_mcp.server"]
}
}
}调试可用官方 MCP Inspector:
npx @modelcontextprotocol/inspector uvx chengyu-coach-mcp提供的能力
类型 | 名称 | 说明 |
Tool |
| 随机抽成语(未抽过优先,可配数量/是否含已掌握) |
Tool |
| 查词:释义、出处、古例 + 学习进度 + 备注 |
Tool |
| 按关键词/拼音/拼音缩写搜词库 |
Tool |
| AI 根据对话表现更新掌握状态(learning/reviewing/mastered) |
Tool |
| 写/清备注 |
Tool |
| 总进度:各状态数量、有备注数、最近抽取 |
Tool |
| 清空某词学习记录(destructive) |
Resource |
| 读取词库词条(JSON) |
Resource |
| 学习进度统计(JSON) |
Prompt |
| 教学提示词(讲解 + 双场景造句) |
Prompt |
| 口头考问流程提示词(抽词→作答→讲评→记录状态) |
造句和出题都不需要服务端:抽题/查词结果已带释义、出处、古文例句,客户端大模型据此讲解、造句、提问,并把判断结果写回 update_status / add_note。
数据与隐私
学习记录默认写入
~/.chengyu-coach/idiom_progress.db,可用环境变量CHENGYU_COACH_DB指定其他路径数据只存在本机,不联网、不上传
词库随包分发,只读;替换
src/chengyu_coach_mcp/data/chengyu_common.json即可换词库(数组,每条需含word/pinyin/explanation/derivation/example/id)
user_word 表结构:
字段 | 说明 |
| 成语原文(主键) |
| 抽中次数 |
| learning / reviewing / mastered(由 AI 判断写入) |
| 自由备注 |
| 首次/最近抽取时间 |
开发
python -m venv .venv
.venv/Scripts/pip install -e .
.venv/Scripts/python tests/smoke_test.py # 端到端冒烟测试(自动使用临时数据库)项目结构:
chengyu-coach-mcp/
├── src/chengyu_coach_mcp/
│ ├── __init__.py # 版本号
│ ├── server.py # 词库加载 + SQLite + 全部工具/资源/提示词
│ └── data/chengyu_common.json # 常用成语词库(3303 条)
├── tests/smoke_test.py # stdio 端到端测试
├── .github/workflows/ci.yml # Linux/Windows × Python 3.10/3.12
├── .github/workflows/release.yml # 推 v* 标签自动发布到 PyPI(OIDC)
├── server.json # 官方 MCP Registry 元数据
├── pyproject.toml
├── LICENSE # MIT(代码)
├── THIRD_PARTY_NOTICES.md # 词库来源与许可
└── CHANGELOG.md发布新版本时同步改三处:pyproject.toml 的 version、src/chengyu_coach_mcp/__init__.py 的 __version__、CHANGELOG.md;server.json 里的 version 与 packages[0].version 也要跟上。改完打标签并推送,release.yml 会校验四处版本号一致后自动构建上传:
git tag -a v1.0.1 -m "chengyu-coach-mcp v1.0.1"
git push origin main --tagsREADME 顶部那行 <!-- mcp-name: io.github.FlowerOfFire/chengyu-coach-mcp --> 是给官方 MCP Registry 验证包所有权用的,发布到 PyPI 的版本里必须带着它,删掉会导致 mcp-publisher publish 失败。
数据来源与许可
代码:MIT
成语词条:chinese-xinhua(MIT)
词频数据:JioNLP(Apache-2.0)
Available Tools
7 toolsadd_noteA
给某个成语写备注(自由文本,如易错点、使用场景),会覆盖原备注。
Args: word: 成语原文 note: 备注内容;传空字符串则清除备注
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| word | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses the important mutation semantics: the note overwrites any existing note, and an empty string clears it (a destructive side effect). It does not cover authorization needs or behavior when the word does not exist.
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?
Front-loaded with the core action and the overwrite warning before the Args section. The Args block mirrors schema fields but each line adds meaning rather than restating titles.
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 2-parameter write tool with an output schema (so return values need no explanation) and a readOnlyHint annotation, this is largely sufficient. The remaining gap is the not-found / auto-create behavior for an unknown word.
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 carries the full burden and does: word is the literal idiom text (成语原文, not an ID) and note is the content, with the non-obvious edge case that an empty string clears the note. Minor gap: no length/format constraints on note.
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 specific verb+resource: write a free-text note on a given idiom, with example content types (易错点, 使用场景). It clearly is not a search/detail/status tool, so it is distinguishable from the sibling set, though no sibling is named explicitly.
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 usage context is implied by the example content types (mistake-prone points, usage scenarios), and the sibling list contains no competing note tool, so no alternatives need routing. However, there is no explicit when-to-use/when-not statement or prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_idiomA
随机抽成语学习。优先抽没抽过的;都抽过一轮后,抽得最少且最久没抽的优先。默认跳过最近 20 条和已掌握的。
Args: count: 抽几个(1~10) include_mastered: 是否把已掌握的也放回抽奖池
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| include_mastered | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=false matches the description, which implies the draw records into the draw history (that's what makes 'never drawn' and 'stalest' meaningful). The prioritization rules and default exclusions are real behavioral context beyond the annotation, though the persistence side effect could be stated outright.
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?
Front-loaded with the purpose, then the algorithm, then parameter notes — every sentence carries information. The separate Args block is slightly redundant with the schema 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?
With an output schema present, return values need not be described, and both parameters are documented. The one remaining gap is whether the draw is recorded/persisted and what happens when the pool is exhausted.
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 carry the load and does: it gives count a range (1~10) that the schema lacks, and explains include_mastered as putting mastered items back into the pool. Only edge behavior (e.g. out-of-range count) is unaddressed.
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 specific verb+resource: randomly draw idioms for study, with an explicit selection algorithm. Clear enough to distinguish from search_idiom or idiom_detail, though it never names those siblings to sharpen the distinction.
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?
Explains the selection policy (prefer never-drawn, then least-drawn and stalest) and the defaults (skip the most recent 20 and mastered items). No explicit when-not guidance or sibling routing, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
idiom_detailARead-only
查一个成语的释义、出处、古文例句,以及学习进度(抽中次数、状态、备注)。
Args: word: 成语原文,如 守株待兔
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a lookup tool and the description adds the useful detail that progress metadata (draw count, status, notes) is bundled into the response. However, that return content is largely already captured by the output schema, and nothing is said about failure behavior for unknown idioms or about how notes/status are sourced.
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?
One front-loaded sentence states the tool's output scope, followed by a compact Args block. No filler, though the Args block partly restates the schema rather than adding new constraint detail.
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 single-parameter read-only tool with an output schema and a readOnly annotation, the essentials are present. What's missing is the not-found behavior and the boundary against search_idiom, which an agent needs to route correctly among six siblings.
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% — the 'word' property carries only a title, no description — so the description must carry the parameter, and it does: '成语原文' plus a concrete example (守株待兔) tells the agent to pass the exact idiom form, not a keyword or partial string. A short note on whether variant/simplified forms are accepted would close the remaining 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 names a specific verb (查/look up) and resource (an idiom's detail), then enumerates exactly what comes back: definition, origin, classical example sentences, and learning progress. That enumeration distinguishes it in substance from search_idiom and draw_idiom, though no sibling is named explicitly.
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 only implied: 'word: 成语原文' hints that this is for a single exact idiom rather than a fuzzy query, which is the natural split from search_idiom. But the description never states when to prefer this over search_idiom, nor what happens for a word that isn't in the collection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
progressARead-only
查看整体学习进度:接触了几个、各状态数量、有备注的、最近抽的 10 个。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read, so the description's main added value is scope disclosure: a status breakdown and a hard cap of '最近抽的 10 个'. That fixed limit is genuinely useful behavioral context, but it stops short of describing ordering, totals, or what '有备注的' covers.
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 compact sentence: purpose first, then a colon-led enumeration of the concrete metrics. No filler and nothing to trim.
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 no parameters, an output schema, and a readOnly annotation, the definition carries almost the entire burden of context already; the description's metric list is enough for an agent to call it correctly. It adds little on return shape, but the output schema covers that.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool is 4. The enumerated metrics give the agent a sense of what the argument-less call produces.
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 specific verb+resource ('查看整体学习进度') and then enumerates exactly what the view contains: touch counts, per-status counts, noted items, and the 10 most recently drawn. The word '整体' (overall) implicitly separates it from the single-item sibling idiom_detail, though no sibling is named explicitly.
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 only implied: an agent can infer this is the aggregate dashboard to call before drilling into idiom_detail, but the description never says when to prefer it over that sibling or over search_idiom. 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.
reset_wordBRead-onlyDestructive
清空某个成语的学习记录(抽中次数、状态、备注),词库本身不受影响。
Args: word: 成语原文
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations by enumerating exactly what is destroyed (抽中次数、状态、备注) and what is preserved (词库本身); that is precisely the 'what gets destroyed' context the rubric credits. Gaps remain: irreversibility/undo, and behaviour when no record exists. Note the annotation pair itself is internally inconsistent (readOnlyHint=true alongside destructiveHint=true); the description agrees with destructiveHint, so the conflict appears to lie in the annotations rather than in the description.
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 main clause is front-loaded and the destructive scope is stated in the first sentence with zero preamble. The trailing Args block largely restates the schema and is the only mild redundancy.
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 one parameter, an output schema, and annotations present, the description covers purpose, destroyed/preserved data, and the argument's meaning. It still omits whether the reset is reversible and what the tool does when the idiom has no learning record, which matter for a destructive operation.
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% (the only property has no description), so the description must carry the parameter, and it does add meaning with 成语原文 (the idiom string itself). It does not clarify matching rules — exact string vs fuzzy, case/whitespace, or what happens with an unknown word — leaving the 0%-coverage gap only partly closed.
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 specific verb + resource: 清空某个成语的学习记录, and immediately bounds the scope with 词库本身不受影响, which separates it from the word-bank-level siblings (search_idiom, draw_idiom). It does not name the near-neighbour it is distinguished from (update_status, add_note), so an agent must infer the granular-vs-wholesale split.
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?
Use is only implied: clearing a whole learning record suggests use when an idiom should be re-learned from scratch, versus the granular siblings update_status and add_note. No explicit when-to-use/when-not, no prerequisites (e.g. must the record already exist), and no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_idiomARead-only
按关键词搜成语(匹配成语、拼音或释义),并附各自的抽中次数。
Args: keyword: 关键词,中文或拼音缩写(如 szdt) limit: 最多返回几条(1~20)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes that this is a safe read operation, so the description carries a lower burden. The description does add that each result includes its draw count ('抽中次数'), which is meaningful output context. However, it says nothing about match ordering, case sensitivity, or behavior when the keyword matches nothing. With annotations covering safety, a 3 is appropriate.
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 definition is front-loaded: the purpose sentence comes first, followed by a tight Args block. Nothing is redundant. It is terse without being cryptic, though the Args formatting is slightly more verbose than needed for two parameters.
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?
There is an output schema, so the description need not explain return values; the safety profile is covered by annotations; and both parameters are documented in the description, including a range the schema lacks. The remaining gap is the lack of guidance on related tools and on empty-result behavior, which is minor for this simple search 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, and it does. It explains that the keyword can be Chinese or a pinyin abbreviation (example 'szdt') and that limit is a maximum with a 1–20 range. That range constraint is absent from the schema, which only shows the default. This is a substantial addition beyond the structured fields.
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 states a specific verb and resource: it searches idioms by keyword, matching against the idiom text, pinyin, or definition, and returns each result's draw count. This is clearly distinguishable from the sibling operations draw_idiom and idiom_detail, though it never names them explicitly. It is clear but lacks the explicit sibling routing that would earn 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?
Usage is only implied: the agent can infer it should search when it has a keyword phrase or pinyin abbreviation. There is no explicit guidance on when to prefer this over idiom_detail or draw_idiom, and no mention of what to do when there are no matches. It is adequate but has a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_statusA
根据对话中用户的实际表现,更新成语的掌握状态。由 AI 自行判断调用,服务端不做判分。
Args: word: 成语原文 status: learning=还不熟/答错/卡壳;reviewing=大致理解但不够稳;mastered=能准确解释并举一反三
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=false already marks this as a write. The description adds meaningful context: judging is delegated to the model and the server does not score, which sets expectations for the write. However, it does not state whether an existing record is overwritten, what happens if the idiom is unknown, or whether the update is one-way.
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 main sentence comes first and is followed by the Args block; every line adds information that is used at call time. The status definitions are dense but justified, since they replace a missing enum.
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 annotation covers write semantics. Even so, for a mutation tool with 0% schema coverage, the definition omits whether the 'word' must already exist, and whether repeated calls update or append. These gaps are minor but real.
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 has to carry the parameters, and it does this well for 'status': three named values (learning/reviewing/mastered) with concrete decision criteria that are not encoded as a schema enum. By contrast, 'word' gets only '成语原文', with no detail on whether it must be the exact canonical form or must already exist.
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 states a specific verb and resource: '更新成语的掌握状态' (update an idiom's mastery status), scoped to the user's demonstrated performance in the conversation. This clearly distinguishes it from the siblings 'progress' (which reads) and 'reset_word' (which clears), so an agent can tell what this tool does without opening the schema.
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?
'由 AI 自行判断调用,服务端不做判分' explicitly tells the agent that it is the one deciding when to call, and that no server-side grading happens. That resolves the main ambiguity for a judgement-writing tool. It does not name the alternative actions (implicitly reading status via 'progress', or clearing status via 'reset_word'), so the routing is implied rather than spelled out.
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.
7 tool updates
v1.0.0- First observed
add_note - First observed
draw_idiom - First observed
idiom_detail - First observed
progress - First observed
reset_word - First observed
search_idiom - First observed
update_status
TDQS
Scored across 7 tools
Each tool maps to a distinct action: random draw, single-word lookup, keyword search, note writing, status update, aggregate stats, and reset. The main overlap is between idiom_detail and search_idiom when a keyword is an exact idiom, but descriptions clarify that one returns full detail plus progress while the other returns a list with draw counts.
All names use snake_case, which is consistent and readable. Most follow a verb_noun pattern (draw_idiom, add_note, search_idiom, update_status, reset_word), with minor deviations like the noun-phrase idiom_detail and the bare noun progress.
Seven tools is well-scoped for a flashcard-style learning server, with one tool per core operation and no redundant surface area.
The lifecycle is well covered: draw, inspect, search, annotate, update mastery, view aggregate progress, and reset. Minor gaps exist—no way to list or filter idioms by status/note, no batch status update, and no browsing of the full corpus—but workarounds via search and progress exist.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Chinese web novel MCP: 36 tools (outline, prose, review, coach, KD export). BYOK, no API key.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables management of Eudic dictionary wordbooks, including categories and words, directly from MCP-compatible clients like Claude Desktop.MIT
- AlicenseNot gradedqualityDmaintenanceExposes the Maimemo (墨墨背单词) Open API as MCP tools, enabling AI assistants to look up words, manage mnemonics and study plans, and maintain cloud notepads.1MIT
- AlicenseBqualityBmaintenanceEnables MCP-compatible AI clients to act as a personal exam-prep tutor for Chinese postgraduate entrance exams, with a local knowledge base, spaced-repetition review scheduling, worksheet generation and delivery (print/PDF/HTML/text), and learning analytics—all with zero third-party dependencies and data staying local.142MIT
- AlicenseAqualityBmaintenanceProvides Chinese cultural and public data as MCP tools, including random classical poems, Chinese holiday and compensatory workday queries with annual summaries, and historical events for any date.4MIT