mcpField
V
Vocabit

Vocabit

本地服务
github.com科研与教育09 周前更新

关于 Vocabit

Vocabit 是连接 Vocabit 闪卡应用的 MCP 服务,让 AI 助手创建学习集并读取学习者的逐卡进度。它可根据薄弱卡片和未学习卡片的实际结果调整后续内容。

主要功能

  1. 01创建并发布学习集
  2. 02读取学习集及逐卡结果
  3. 03查看薄弱、未触及和到期卡片
  4. 04更新或删除学习集
  5. 05提供学习集资源与学习流程提示词

适用场景

  1. 01将 AI 生成的主题卡片发送到学习者应用
  2. 02依据逐卡学习结果规划后续复习
  3. 03查看学习集进度并调整卡片内容

MCP 相关

向 MCP 客户端提供用于管理学习集和查看学习结果的工具,并暴露学习集 JSON 资源及 study-session 提示词。可连接 Vocabit 后端,也可在演示模式下运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"johnbilousov-vocabit": {
"command": "npx",
"args": [
"-y",
"vocabit-mcp"
],
"env": {
"VOCABIT_BASE_URL": "<VOCABIT_BASE_URL>",
"VOCABIT_AGENT_KEY": "<VOCABIT_AGENT_KEY>",
"VOCABIT_USER_ID": "<VOCABIT_USER_ID>"
}
}
}
}
启动命令npx -y vocabit-mcp
需要配置的环境变量
VOCABIT_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmvocabit-mcp0.1.3

工具

8

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

vocabit-mcp

CI npm license

适用于 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_IDnotify_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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。