Language Tutor
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Language Tutor
A personal language tutor where your AI assistant is the teacher. The app stores your words, schedules reviews and shows the exercises that need a screen; Claude, ChatGPT or Codex talks to it over MCP and does the teaching: it writes stories from your words, judges your translations, names every mistake and remembers your habits.
Status: early. It runs a real learner's daily practice, but it is a single-user app. Today it teaches English to Russian speakers; other languages are planned, not built.
Today it teaches English to Russian speakers. Other languages are planned.
How it works
You collect words in any chat ("save these words") or paste a Google Translate export. Each word can carry a memory hook (a sound-alike, a known word or an image) and an example sentence.
The assistant writes a story around your words. You translate it paragraph by paragraph, in both directions.
Every mistake is named by category and by the rule behind it. A mistake that repeats becomes a habit the tutor works on, until you get it right often enough to retire it.
Reviews use the FSRS scheduler (ts-fsrs): cards come back just before you would forget them.
A translator (the Translate tab) that works like Google Translate but with an LLM: type in either of your two languages and the translation appears as you type, with other phrasings, a note on a trap, and the words worth learning, each with a memory hook. One tap saves the words (and, for a short text, the whole phrase) into your dictionary; each word comes back as a review card built from the sentence it was found in.
The phone app (a PWA) does what a chat cannot, in five tabs: Today (what to do now; review cards start here), Translate, Practice (paragraph translation and dictation), Words (search, filter, delete) and Profile (progress, habits, translator settings).
The tutoring method and its reasoning live in
@docs/research; the assistant reads the agreed method from the server, so every assistant teaches the same way.
Related MCP server: mcp-vocabulary-trainer
Stack
Next.js 16 (App Router), React 19, Tailwind 4 + daisyUI 5, Drizzle ORM on libSQL (SQLite), @modelcontextprotocol/sdk (stateless Streamable HTTP), OAuth 2.1 for the assistant connectors, zod, Vitest.
Run it locally
pnpm install
cp .env.example .env.local # set APP_PASSWORD, APP_SECRET, MCP_TOKEN (openssl rand -hex 32)
pnpm dev # http://localhost:3000, database file at data/english.dbLeave DATABASE_URL empty locally: a SQLite file is created and migrated for you.
Deploy to Vercel
Import the repository in Vercel (a paid plan; Hobby is for non-commercial use).
vercel.jsonsets the build command and the region.Add a Turso database from the Vercel Marketplace. It sets
DATABASE_URLandDATABASE_AUTH_TOKEN; scope them to the Production environment so previews never touch your data.Set
APP_PASSWORD,APP_SECRETandMCP_TOKENin the Production environment. SetAPP_URLonly for a custom domain.Push to
main: Vercel builds, runspnpm db:migrateagainst the database, and deploys.
Self-host with Docker
cp .env.example .env, set APP_PASSWORD, APP_SECRET, MCP_TOKEN and APP_URL, then docker compose up -d. The SQLite file lives in the data volume; run one instance only. Back it up with sqlite3 /data/english.db ".backup <file>" inside the container.
Connect an assistant
Open Profile → Connect an assistant in the app. It has the steps for Claude (claude.ai and Claude Code), ChatGPT (custom MCP server, OAuth) and Codex, with copy buttons. Sign-in asks for APP_PASSWORD once.
Configuration
Variable | Meaning |
| the one sign-in password |
| signs the session cookie and OAuth codes; changing it signs everyone out |
| the bearer token of |
| libSQL database; empty means a local file |
| public origin when it is not the Vercel production domain |
| key for the translator (OpenRouter or any OpenAI-compatible endpoint); or paste it in Profile → Translator |
| default model, |
| another OpenAI-compatible base URL (default |
| optional: send translator calls through a credential-injecting proxy such as Agent Vault, so the container holds no real key (0006) |
Development
pnpm check runs lint, type-check and the tests (a local libSQL file, no server needed). pnpm db:generate after changing src/db/schema.ts. The code map and invariants are in CLAUDE.md. See CONTRIBUTING.md.
Limits and security
One user, one writer. One password, one SQLite file, one process that writes. Do not scale it horizontally.
Sign-in is rate limited in memory (5 failed attempts per address and 40 in total per 15 minutes). On a single server that is the limit; on serverless each instance counts alone, so use a long password.
Secrets are yours. Nothing secret ships in the repository; set
APP_PASSWORD,APP_SECRETandMCP_TOKENas long random values. ChangingAPP_SECRETsigns every client out.No off-site backup yet. Back up the database file yourself (a Turso database has its own restore options).
English first. The prompts, word rules and UI copy are English; the learner's language is Russian.
Found a vulnerability? Open a private security advisory on GitHub rather than a public issue.
License
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Lexpad is a vocabulary notebook with spaced repetition, in 81 languages. Connect it to ChatGPT or Claude and ask the assistant to save a word from your chat, show the words due today or quiz you. Each answer counts as practice and moves the word through its Leitner boxes. Sign-in is OAuth 2.1 with PKCE on a Lexpad page. 20 tools; the ones that overwrite or delete are marked, so the client asks first. Connecting is free. On Lexpad's Free plan the assistant writes 10 cards a day; on Pro it is unlimited, up to 1,000 a day. Guide and example prompts: https://lexpad.app/features/assistants
Save vocabulary from any AI chat; see each word in every language you know; review it with FSRS.
Language learning memory: due flashcard reviews, past mistakes and level, shared with any AI tutor.
Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants like Claude to MindDory to automatically capture new vocabulary and grammar mistakes into spaced-repetition flashcards during language practice conversations.MIT
- AlicenseNot gradedqualityCmaintenanceA local multilingual vocabulary trainer with Leitner spaced repetition and MCP integration, enabling ChatGPT to manage vocabulary, domains, conjugations, and review schedules persistently.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to create spaced-repetition flashcards from material being learned, quiz users aloud, grade answers, and schedule reviews using the FSRS algorithm through a self-hosted MCP server.7AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables an AI assistant to act as the memory of a personal English-learning app: read progress and words due for review, run short practice conversations, and store sentences, corrections, new words, rubric scores, and checked exercises back to the user's dashboard. Also lets the assistant grow the flashcard deck and adjust word familiarity, which reschedules spaced-repetition reviews.MIT