Old Norse dictionary access

An MCP server and JSON API over the English Wiktionary's Old Norse entries — so LLMs read and write the language of the sagas and the Eddas with attested words and grammatical forms, not invented ones. Entries use the normalized classical orthography, with full paradigms: the nouns' definite forms, the adjectives' strong/weak/degree family, and the verbs' active and mediopassive voices. Read-only.

MCP JSON API politely cached rate limited

Connect an MCP client

Remote streamable-HTTP endpoint — no auth, read-only: https://norse.valksor.com/mcp

Claude Code — CLI

claude mcp add --transport http norse https://norse.valksor.com/mcp

Cursor · Cline — remote url (~/.cursor/mcp.json)

{
  "mcpServers": {
    "norse": { "url": "https://norse.valksor.com/mcp" }
  }
}

VS Code .vscode/mcp.json

{
  "servers": {
    "norse": { "type": "http", "url": "https://norse.valksor.com/mcp" }
  }
}

Claude Desktop · Windsurf · other stdio clients — bridge via mcp-remote (claude_desktop_config.json)

{
  "mcpServers": {
    "norse": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://norse.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://norse.valksor.com/mcp.

Codex CLI ~/.codex/config.toml

[mcp_servers.norse]
command = "npx"
args = ["-y", "mcp-remote", "https://norse.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://norse.valksor.com/mcp.

Two tools

search_norse
query — Old Norse: 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 — madr and mathr both find maðr (once the lemma's paradigm is cached). With search_language=eng the query is an English word and the result lists its per-sense Old Norse equivalents plus their entries.
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 indefinite/definite or strong/weak splits, or verbal mood·tense·person with the mediopassive), Markdown over MCP.

Or call the JSON API

curl "https://norse.valksor.com/api/search?query=maðr"
curl "https://norse.valksor.com/api/search?query=water&search_language=eng"
curl "https://norse.valksor.com/api/inflections?entry_id=kasta&word_class=verb"

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 itself is keyed by Old Norse headwords in normalized orthography), and the result says which way it was found (search_method = direct · lemma_index · translations). Diacritics are optional once a paradigm is cached: marks fold away (monnum finds mǫnnum) and the special letters fold two ways — madr AND mathr find maðr, thing AND ting find þing. English→Old Norse works too: with search_language=eng the query is an English word, and its per-sense Old Norse equivalents come from Wiktionary's translation tables. Because Icelandic and Faroese descend directly from Old Norse, much of their inherited word stock can be traced here in its classical form.