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

latgalian_search
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.
latgalian_get_inflections
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.
latgalian_romanize
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.