关于 Vocabit
Vocabit 是连接 Vocabit 闪卡应用的 MCP 服务,让 AI 助手创建学习集并读取学习者的逐卡进度。它可根据薄弱卡片和未学习卡片的实际结果调整后续内容。
主要功能
- 01创建并发布学习集
- 02读取学习集及逐卡结果
- 03查看薄弱、未触及和到期卡片
- 04更新或删除学习集
- 05提供学习集资源与学习流程提示词
适用场景
- 01将 AI 生成的主题卡片发送到学习者应用
- 02依据逐卡学习结果规划后续复习
- 03查看学习集进度并调整卡片内容
MCP 相关
向 MCP 客户端提供用于管理学习集和查看学习结果的工具,并暴露学习集 JSON 资源及 study-session 提示词。可连接 Vocabit 后端,也可在演示模式下运行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y vocabit-mcpVOCABIT_BASE_URLBase URL of your Vocabit backend. Omit to run in demo mode with in-memory fixtures.VOCABIT_AGENT_KEY密钥Agent key sent as X-Agent-Key, issued by your Vocabit backend.VOCABIT_USER_IDFirebase UID of the learner. Optional; the backend has a default.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
8收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
vocabit-mcp
适用于 Vocabit(一款抽认卡应用)的 MCP 服务。 它可以让 AI 助手将一组学习卡片写入手机上的真实应用,然后读取学习者的实际学习情况。
大多数 MCP 服务从 API 读取数据,而这个服务能闭合反馈循环:
flowchart LR
A["Assistant<br/>teaches a topic"] --> B["create_study_set"]
B --> C["Set appears in the<br/>Vocabit app"]
C --> D["Learner works<br/>through it"]
D --> E["get_set_results"]
E -->|weak cards| A
有意思的工具不是 create_study_set——生成抽认卡谁都能做到。
真正有意思的是 get_set_results:学习者将哪些卡片标记为难、哪些卡片从未学过,以及每张卡片复习了多少次。下一组学习卡片会据此生成,而不是凭猜测。
30 秒快速体验
无需后端、账号或 API 密钥:
npx -y vocabit-mcp --demo
演示模式会使用带有两组预置学习卡片的内存版 Vocabit,运行同一个服务。 创建一组学习卡片并请求查看结果后,一个确定性的模拟学习者会完成学习;响应中会标明结果是模拟的,因此绝不会被误认为是真实数据。
使用 UI 试用:
npx @modelcontextprotocol/inspector npx -y vocabit-mcp --demo
安装
已列入 MCP Registry,名称为 io.github.JohnBilousov/vocabit-mcp,因此能够读取该注册表的客户端可以自行找到它。
Claude Code
claude mcp add vocabit -- npx -y vocabit-mcp
Claude Desktop / 任意 MCP 客户端
{
"mcpServers": {
"vocabit": {
"command": "npx",
"args": ["-y", "vocabit-mcp"],
"env": {
"VOCABIT_BASE_URL": "https://your-vocabit-backend.example.com",
"VOCABIT_AGENT_KEY": "your-agent-key"
}
}
}
}
删除 env 块即可在演示模式下运行。
工具
| 工具 | 功能 |
|---|---|
vocabit_health | 检查连接状态以及服务当前所处的模式。 |
create_study_set | 将一组学习卡片发布到学习者的应用中。返回可在设备上打开的深层链接。 |
list_study_sets | 列出最近的学习卡片组,按最新优先排序,并附上每组的进度摘要。 |
get_study_set | 获取某组学习卡片的完整内容,以及助手附加的主题和备注。 |
get_set_results | **反馈部分。**提供每张卡片的状态、weakCards、untouchedCards 和待复习卡片。 |
update_study_set | 更改标题、标签或追加卡片——通常用于读取结果后的跟进操作。 |
notify_learner | 通过 Telegram 提醒学习者有一组学习卡片待学习。 |
delete_study_set | 从应用中移除一组学习卡片。学习历史会保留。 |
此外还提供 vocabit://set/{setId} 资源(以 JSON 格式表示一组学习卡片,可供列出),以及引导完成整个循环的 study-session 提示词。
卡片状态
进度由应用的间隔重复引擎生成,而非由助手生成:
| 状态 | 含义 |
|---|---|
new | 从未复习过。 |
struggling | 学习者将其标记为难。 |
learning | 标记为良好。 |
mastered | 标记为简单。 |
当不再有状态为 new 的卡片时,学习卡片组会报告 completed: true。
实时模式
将服务指向已启用 Agent API 的 Vocabit 后端:
export VOCABIT_BASE_URL=https://your-vocabit-backend.example.com
export VOCABIT_AGENT_KEY=... # must match one of AGENT_API_KEYS on the backend
npx -y vocabit-mcp
| 变量 | 用途 |
|---|---|
VOCABIT_BASE_URL | 后端基础 URL。 |
VOCABIT_AGENT_KEY | 作为 X-Agent-Key 发送。 |
VOCABIT_USER_ID | 学习者的 Firebase UID。可选;后端有默认值。 |
VOCABIT_TERM_LANGUAGE / VOCABIT_DEFINITION_LANGUAGE | 新学习卡片组的默认语言,例如 de / en。 |
VOCABIT_TELEGRAM_ID | notify_learner 的接收者。 |
VOCABIT_TIMEOUT_MS | 请求超时时间,默认为 20000。 |
VOCABIT_DEMO | 设为 1 可强制使用演示模式。 |
不设置 URL 和密钥时,服务会以演示模式启动。只设置其中一个时,服务会拒绝启动——配置不完整是错误,而不是提示。
设计说明
演示模式是一等客户端,而不是占位实现。 HttpVocabitClient 和
DemoVocabitClient 实现相同的 VocabitClient 接口,因此没有任何工具需要判断“我们是不是在模拟?”。审查者可以在尚未获得凭据时运行服务,而测试套件会通过真实的 MCP
传输测试实际工具,而不是模拟 SDK。
错误可恢复,而非致命。 调用失败时会返回 isError,其中包含后端自己的消息以及面向模型的提示——404 会提示“调用
list_study_sets 查看有哪些学习集”,401 会提示“或者使用 VOCABIT_DEMO=1 运行”。
对于互斥参数,系统会说明原因并拒绝调用,而不是自行猜测。
输出架构在边缘处保持宽松。 标识字段为必填;其他字段均为可选,因此后端新增字段不会导致原本可用的工具出现验证错误。
注释如实反映行为。 delete_study_set 标记为 destructiveHint,读取工具标记为 readOnlyHint。notify_learner 会向真人发送消息,其说明也提示应谨慎使用。
开发
git clone https://github.com/JohnBilousov/vocabit-mcp && cd vocabit-mcp
npm install
npm run build
npm test # tool surface + full loop, plus the HTTP client against a mocked fetch
npm run lint # eslint
npm run format # prettier --write
npm run inspect # demo mode in the MCP Inspector
CI 会在每次推送和拉取请求时运行 typecheck、lint、format:check、test 和 build。
src/
index.ts CLI entry, stdio transport
config.ts env → Config, demo-mode resolution
server.ts tool / resource / prompt registration
schemas.ts zod input and output shapes
format.ts human-readable summaries next to structuredContent
client/
types.ts wire types + VocabitClient contract
http.ts live backend
mock.ts in-memory backend for demo mode
test/
server.test.ts tool surface + full loop — over an in-memory MCP transport
client/
http.test.ts query encoding, error-body parsing, timeouts — against a mocked fetch
发布
发布使用 npm 的可信发布(OIDC)——
无需 NPM_TOKEN 密钥,也没有可能泄露或过期的内容。只需在 npmjs.com 上进行一次性设置:在软件包的设置 → 可信发布 → GitHub Actions下,填写组织 JohnBilousov、此仓库以及工作流文件名 publish.yml。
要发布新版本:同时更新 package.json、server.json 和 src/server.ts 中的 VERSION(测试会确保它们保持一致),然后提交、推送,再发布带有对应 vX.Y.Z 标签的 GitHub Release。这会触发
.github/workflows/publish.yml,运行测试套件并将软件包发布到 npm,同时附带来源证明——
软件包页面会显示一个经过验证的链接,指向此确切提交和工作流运行记录,而不只是注册表中的名称。
路线图
- 除 stdio 外,支持 Streamable HTTP 传输
- 支持多位学习者,无需后端默认 UID
- 音频发音卡片
许可证
MIT © Ivan Bilousov
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。