LingoChunk MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINGOCHUNK_TOKEN | Yes | Your personal access token (lcp_...). Required. | |
| LINGOCHUNK_BASE_URL | No | API origin override (for self-host/testing). Default: https://lingochunk.com | https://lingochunk.com |
| LINGOCHUNK_CLIP_DIR | No | Where get_audio_clip writes clip files. Default: ~/.cache/lingochunk-mcp | ~/.cache/lingochunk-mcp |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_vocabularyA | List the user's vocabulary, aggregated per word with FSRS maturity (state/stability/due/reps). Grounded in the user's real listening history. Filter by language, status (known|learning|new|due), or CEFR; use 'since' (an ISO 8601 time from a prior 'updated_at') plus 'cursor' for incremental sync. Sync is additive-only, so full-resync periodically. The list is cursor-paginated (limit up to 200); follow next_cursor until it is null to read the complete set. |
| lookup_wordA | Look up one word: the user's own context (translation, gender, CEFR, FSRS state) if they have cards for it, backed by the shared enrichment lexicon as a gender/CEFR fallback. Use this to ground an LLM's guesses about a word rather than inventing them. |
| list_libraryA | List the user's ready-to-study episodes (their own submissions plus collections they follow), newest first. Cursor-paginated. Use the returned submission ids with get_transcript / get_audio_url / get_audio_clip. |
| get_transcriptA | Fetch a submission's transcript: timestamped sentences with translations. Sliceable by sentence-position range (from_sentence/to_sentence) or time range in seconds (from_time/to_time) so you can pull an excerpt instead of a whole episode. transcript_state tells you if it is ready, still processing, or unavailable. |
| get_audio_urlA | Get a short-lived presigned URL to a submission's full native audio (supports HTTP Range). Use for streaming; for a durable snippet to embed in a lesson, use get_audio_clip instead. |
| search_examplesA | Search the user's readable library for sentences. 'lemma' returns the curated example sentences for that word; 'q' does a case-insensitive substring match on sentence text. At least one is required, and 'lemma' takes precedence when both are given. Results are a capped sample, not exhaustive. |
| get_audio_clipA | Cut a native-audio snippet [start, end] (seconds, max 60s) from a submission and SAVE IT to a local file, returning the file path. Use these small clips to embed audio in a self-contained HTML lesson (e.g. as a data URI). Rate limited. |
| list_decksA | List the user's study decks so you can pick a deck_id before adding cards (add_card) or exporting (export_anki_deck). Each deck reports its language and card counts (total / new / due). Requires the cards:write or decks:export scope. |
| add_cardA | Add a card to the user's LingoChunk review queue (FSRS; it starts as 'new'). kind=vocab adds a word the user ALREADY has in their vocabulary, resolved by lemma against their own content (404 if the lemma is not in their vocabulary; 409 code=ambiguous_lemma if it occurs in several episodes or under several parts of speech, so pass submission_id or pos as the message names). kind=custom adds a freeform card and REQUIRES front, back and submission_id (the episode it anchors to); pass sentence_position to anchor its example to a specific transcript sentence. Omit deck_id and the card goes to the deck for its own submission (the same deck the app builds, reviews and exports that episode from, so it is immediately visible and exportable); an explicit deck_id must belong to that submission (400 otherwise). A 409 code=duplicate_card means the card already exists: expected, not worth retrying. NOTE: deleting the anchoring episode deletes the card (cascade), and a card added while the app's Words tab is open on that episode may be overwritten by the app's own save, so add cards when the app is not actively editing that deck. Requires the cards:write scope. |
| export_anki_deckA | Export one of the user's decks to an Anki .apkg and return a download URL. Running it costs nothing (no LLM). This starts the export and polls status for up to ~60s, absorbing rate limits with a Retry-After backoff and never starting a second job while one is already in flight. It returns {status:'ready', download_url} when the file is ready, {status:'pending'} (call again shortly to keep checking) while it generates, {status:'failed'} to retry, or {status:'none'} (nothing to download; call again to trigger a fresh export). A deck with no linked source episode cannot be exported (400). Use list_decks to find a deck_id. Requires the decks:export scope. |
| save_lessonA | Save a single self-contained HTML lesson to the user's private LingoChunk library (10 MB max, up to 100 lessons, private by default). Returns the lesson metadata plus a short-lived view URL to open it now; its durable home is the app's library, where it opens on any device. Use this to keep a lesson the lingochunk-lesson skill produced. Requires the lessons:write scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lingochunk/lingochunk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server