Vocabit について
Vocabit は、フラッシュカードアプリ Vocabit と連携する MCP サーバーです。AI アシスタントが学習セットを作成し、カードごとの学習状況を取得できるため、実際に苦手なカードや未着手のカードに基づいて次の教材を調整できます。
主な機能
- 01学習セットの作成と公開
- 02セットとカードごとの結果の取得
- 03苦手・未着手・復習期限のカード確認
- 04学習セットの更新と削除
- 05セットのリソースと学習フローのプロンプト
活用シーン
- 01AI が作成したテーマ別カードを学習者のアプリに送信
- 02カードごとの結果に基づく次の復習計画
- 03セットの進捗確認とカード内容の調整
MCP 対応
学習セットの管理と学習結果の取得に使うツールに加え、セットの JSON リソースと `study-session` プロンプトを MCP クライアントに提供します。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
デモモードでは、2 つのセットがあらかじめ登録されたメモリ内の Vocabit に対して、同じサーバーが動作します。セットを作成して結果を尋ねると、決定論的な代役の学習者がそのセットに取り組んだ結果が返されます。レスポンスではシミュレーションであることが明示されるため、実際のデータと間違えることはありません。
UI で試すには、次のようにします。
npx @modelcontextprotocol/inspector npx -y vocabit-mcp --demo
インストール
io.github.JohnBilousov/vocabit-mcpとしてMCP Registryに登録されているため、レジストリを参照するクライアントが自動的に見つけられます。
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 | 1 つのセットの全内容と、アシスタントが追加したトピックおよびメモを返します。 |
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が返されます。
ライブモード
エージェント 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 インターフェースを実装しているため、どのツールにも
「これは見せかけなのか」を判定する分岐はありません。レビュー担当者は認証情報がなくてもサーバーを実行でき、
テストスイートでは SDK をモックするのではなく、実際の MCP トランスポート経由で実際のツール群を
テストします。
エラーは致命的ではなく、回復可能です。 呼び出しが失敗すると、バックエンド独自のメッセージと
モデル向けのヒントが付いた 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 で一度だけ設定します。パッケージの
Settings → Trusted publishing → 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。