Latgalian MCP server
An MCP server and JSON API over the English Wiktionary's Latgalian entries — so LLMs read and write Latgalian, a living East Baltic language of Latgale in eastern Latvia, with attested words and grammatical forms, not invented ones. Full paradigms: the nouns' seven cases, the adjectives' indefinite/definite × gender family, and the verbs' positive and negative conjugations. Read-only.
MCP JSON API politely cached rate limited
Connect an MCP client
Remote streamable-HTTP endpoint — no auth, read-only:
https://latgalian.valksor.com/mcp
Claude Code — CLI
claude mcp add --transport http latgalian https://latgalian.valksor.com/mcp
Cursor · Cline
— remote url (~/.cursor/mcp.json)
{
"mcpServers": {
"latgalian": { "url": "https://latgalian.valksor.com/mcp" }
}
}
VS Code — .vscode/mcp.json
{
"servers": {
"latgalian": { "type": "http", "url": "https://latgalian.valksor.com/mcp" }
}
}
Claude Desktop · Windsurf · other stdio clients
— bridge via
mcp-remote
(claude_desktop_config.json)
{
"mcpServers": {
"latgalian": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://latgalian.valksor.com/mcp"]
}
}
}
Claude Desktop only accepts command-based (stdio) servers
in its config, so a bare url is rejected — the bridge above
wraps the remote endpoint. On Pro/Team/Enterprise you can instead add it
under Settings → Connectors → Add custom connector and paste
https://latgalian.valksor.com/mcp.
Codex CLI — ~/.codex/config.toml
[mcp_servers.latgalian] command = "npx" args = ["-y", "mcp-remote", "https://latgalian.valksor.com/mcp"]
Rule of thumb: clients with native streamable-HTTP/SSE support take the
url directly (Claude Code, Cursor, Cline, VS Code);
stdio-only desktop apps wrap it with
npx -y mcp-remote https://latgalian.valksor.com/mcp.
Three tools
query — Latgalian: any form of the word; English: the
word itself.Returns senses + inflection handles (full tables inline by default). An inflected query resolves to its lemma automatically, and ASCII spellings work —
akmins finds akmiņs (once
the lemma's paradigm is cached). With
search_language=eng the query is an English word and the
result lists its per-sense Latgalian equivalents plus their entries.
entry_id (the lemma), word_class (the
part of speech) from a handle.Returns the full paradigm — JSON grouped by
category
(nominal cases with the adjectives' state/gender split, or verbal
mood·tense·person with the negative conjugation), Markdown over MCP.
text — strips the orthography (macrons, carons, soft
consonants) to clean ASCII (ā→aa, š→sh, ļ→ly); a one-way fold,
diacritics dropped, never added.For feeding an English-trained voice/TTS or search box.
Or call the JSON API
curl "https://latgalian.valksor.com/api/search?query=akmi%C5%86s" curl "https://latgalian.valksor.com/api/search?query=stone&search_language=eng" curl "https://latgalian.valksor.com/api/inflections?entry_id=byut&word_class=verb" curl -G --data-urlencode "text=akmiņs" "https://latgalian.valksor.com/api/romanize"
Interactive docs: /api/docs · OpenAPI schema: /api/openapi.json · LLM usage: /llms.txt
How lookup works
Any form of a word works as a query — an inflected form is
resolved to its lemma via paradigms already cached (the dictionary is
keyed by Latgalian headwords), and the result says which way it was
found (search_method = direct ·
lemma_index · translations). Diacritics are
optional once a paradigm is cached: every Latgalian diacritic strips to
its base letter, so akmins finds akmiņs — a
one-way fold (diacritics optional, never a two-way swap).
English→Latgalian works too: with search_language=eng the
query is an English word, and its per-sense Latgalian equivalents come
from Wiktionary's translation tables. Latgalian is written in the Latin
script and is recognized as a distinct written language of Latgale
alongside standard Latvian.