Vocabit

io.github.JohnBilousov由 GitHub 账号 JohnBilousov 发布v0.1.3更新于 Oct 24, 2026

Create flashcard sets in the Vocabit app and read back how the learner actually did.

已验证STDIO仅桌面效率与工作流知识与记忆

概览

AI 生成的概览

把助手连接到 Vocabit 闪卡应用,可将学习卡片组发布到学习者手机,并读回其真实学习表现。

可以做什么
  • 检查连接状态以及服务器当前运行模式
  • 创建、列出、读取和更新学习卡片组,并返回可在设备上打开该组的深链接
  • 读取每张卡片的结果:困难卡、未触及卡、到期卡、复习次数与完成情况
  • 通过 Telegram 通知学习者有新的卡片组待学
  • 删除卡片组,同时保留学习历史
  • 以可列出的资源形式提供卡片组,并提供走完整学习闭环的提示词
适用场景
适合让助手把某个主题做成闪卡,由真实学习者在 Vocabit 应用中学习,再依据应用的间隔重复结果来调整下一组卡片,而不是凭空猜测。在还没有后端或凭据时,可用演示模式先体验完整闭环。
运行要求
通过 npx 在本地运行,需要 Node.js。实时模式需要一个启用了 agent API 的 Vocabit 后端:VOCABIT_BASE_URL 与 VOCABIT_AGENT_KEY(以 X-Agent-Key 发送)。可选:VOCABIT_USER_ID、语言默认值、VOCABIT_TELEGRAM_ID、VOCABIT_TIMEOUT_MS。两者都不设置则进入演示模式;只设置其中一个会拒绝启动。
安装前请注意
agent key 是密钥,必须与后端配置的密钥匹配。服务器会写入真实应用:创建、更新和删除都会改变学习者的卡片组,删除被标记为破坏性操作,但学习历史会保留。notify_learner 会通过 Telegram 给真人发消息,应谨慎使用。演示模式的结果来自模拟学习者,并会标注为模拟数据,并非真实数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Vocabit,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

vocabit-mcp

[CI] [npm] [license]

An MCP server for Vocabit, a flashcard app. It lets an AI assistant write a study set into a real app on a real phone, and then read back how the learner actually did with it.

Most MCP servers read from an API. This one closes a loop:

mermaid
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

The interesting tool is not create_study_set — anything can generate flashcards. It is get_set_results: which cards the learner marked hard, which they never reached, how many reviews each one took. The next set is built out of that, not out of a guess.

Try it in 30 seconds

No backend, no account, no API key:

bash
npx -y vocabit-mcp --demo

Demo mode runs the same server against an in-memory Vocabit with two seeded sets. Create a set, ask for results, and a deterministic stand-in learner will have worked through it — flagged in the response as simulated, so it is never mistaken for real data.

To poke at it with a UI:

bash
npx @modelcontextprotocol/inspector npx -y vocabit-mcp --demo

Install

Listed in the MCP Registry as io.github.JohnBilousov/vocabit-mcp, so clients that read the registry can find it on their own.

Claude Code
bash
claude mcp add vocabit -- npx -y vocabit-mcp
Claude Desktop / any MCP client
json
{  "mcpServers": {    "vocabit": {      "command": "npx",      "args": ["-y", "vocabit-mcp"],      "env": {        "VOCABIT_BASE_URL": "https://your-vocabit-backend.example.com",        "VOCABIT_AGENT_KEY": "your-agent-key"      }    }  }}

Drop the env block to run in demo mode.

Tools

ToolWhat it does
vocabit_healthCheck the connection and which mode the server is in.
create_study_setPublish a set to the learner's app. Returns a deep link that opens it on the device.
list_study_setsRecent sets, newest first, each with a progress summary.
get_study_setFull contents of one set, plus the topic and notes the assistant attached.
get_set_resultsThe feedback half. Per-card status, weakCards, untouchedCards, due cards.
update_study_setRetitle, retag, or append cards — typically the follow-up after reading results.
notify_learnerTelegram ping that a set is waiting.
delete_study_setRemove a set from the app. Study history is kept.

Also exposed: the vocabit://set/{setId} resource (a set as JSON, listable) and a study-session prompt that walks the whole loop.

Card states

Progress comes from the app's spaced-repetition engine, not from the assistant:

StatusMeaning
newNever reviewed.
strugglingLearner marked it hard.
learningMarked good.
masteredMarked easy.

A set reports completed: true once no card is left in new.

Live mode

Point the server at a Vocabit backend that has the agent API enabled:

bash
export VOCABIT_BASE_URL=https://your-vocabit-backend.example.comexport VOCABIT_AGENT_KEY=...   # must match one of AGENT_API_KEYS on the backendnpx -y vocabit-mcp
VariablePurpose
VOCABIT_BASE_URLBackend base URL.
VOCABIT_AGENT_KEYSent as X-Agent-Key.
VOCABIT_USER_IDFirebase UID of the learner. Optional; the backend has a default.
VOCABIT_TERM_LANGUAGE / VOCABIT_DEFINITION_LANGUAGEDefaults for new sets, e.g. de / en.
VOCABIT_TELEGRAM_IDRecipient for notify_learner.
VOCABIT_TIMEOUT_MSRequest timeout, default 20000.
VOCABIT_DEMO1 forces demo mode.

Set neither URL nor key and the server starts in demo mode. Set exactly one and it refuses to start — half a configuration is a mistake, not a hint.

Design notes

Demo mode is a first-class client, not a stub. HttpVocabitClient and DemoVocabitClient implement the same VocabitClient interface, so no tool has a branch for "are we pretending?". A reviewer can run the server before they have credentials, and the test suite exercises the real tool surface over a real MCP transport rather than mocking the SDK.

Errors are recoverable, not fatal. A failed call comes back as isError with the backend's own message plus a hint aimed at the model — 404 says "call list_study_sets to see which sets exist", 401 says "or run with VOCABIT_DEMO=1". Mutually exclusive arguments are rejected with an explanation instead of a guess.

Output schemas stay loose on the edges. Identifying fields are required; everything else is optional, so a backend that grows a field does not turn a working tool into a validation error.

Annotations are honest. delete_study_set is marked destructiveHint, the read tools readOnlyHint. notify_learner messages a real person, and its description says to use it sparingly.

Development

bash
git clone https://github.com/JohnBilousov/vocabit-mcp && cd vocabit-mcpnpm installnpm run buildnpm test          # tool surface + full loop, plus the HTTP client against a mocked fetchnpm run lint      # eslintnpm run format    # prettier --writenpm run inspect   # demo mode in the MCP Inspector

CI runs typecheck, lint, format:check, test, and build on every push and pull request.

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 modetest/  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

Releasing

Publishing uses npm's trusted publishing (OIDC) — no NPM_TOKEN secret, nothing that can leak or expire. One-time setup on npmjs.com, under the package's Settings → Trusted publishing → GitHub Actions: organization JohnBilousov, this repository, workflow filename publish.yml.

To cut a release: bump the version in package.json, server.json, and VERSION in src/server.ts together (a test asserts they can't drift), commit, push, then publish a GitHub Release with a matching vX.Y.Z tag. That triggers .github/workflows/publish.yml, which runs the test suite and publishes to npm with provenance — the package page shows a verified link back to this exact commit and workflow run, not just a name on the registry.

Roadmap

  • Streamable HTTP transport alongside stdio
  • Multi-learner support without a backend default UID
  • Audio pronunciation cards

License

MIT © Ivan Bilousov

来源:README.md,提交 b0bc8fd

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.3最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分