Old English MCP server

An MCP server and JSON API over the English Wiktionary's Old English entries — so LLMs read and write the language of Beowulf and the Anglo-Saxon Chronicle (Ænglisc, c. 450–1150) with attested words and grammatical forms, not invented ones — and not modern English. Full paradigms: the nouns' four cases (with the instrumental), the adjectives' strong/weak family, the verbs' indicative, subjunctive and imperative moods, and the personal pronouns' dual number. Read-only.

MCP JSON API politely cached rate limited

Connect an MCP client

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

Claude Code — CLI

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

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

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

VS Code .vscode/mcp.json

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

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

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

Codex CLI ~/.codex/config.toml

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

Two tools

anglo_search
query — Old English: 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 — thing finds þing and waeter finds wæter (once the lemma's paradigm is cached). With search_language=eng the query is a modern English word and the result lists its per-sense Old English equivalents plus their entries.
anglo_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' strong/weak split and the pronouns' dual, or verbal mood·tense·person), Markdown over MCP.

Or call the JSON API

curl "https://anglo.valksor.com/api/search?query=cyning"
curl "https://anglo.valksor.com/api/search?query=water&search_language=eng"
curl "https://anglo.valksor.com/api/inflections?entry_id=bindan&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 English headwords), and the result says which way it was found (search_method = direct · lemma_index · translations). The special letters are optional once a paradigm is cached: macrons and the dotted ġ/ċ fold away, and þ/ð/æ fold to ASCII — thing finds þing and waeter finds wæter. Modern English→Old English works too: with search_language=eng the query is a modern English word, and its per-sense Old English equivalents come from Wiktionary's translation tables. Because modern English descends directly from Old English, much of its core word stock can be traced here in its attested early form.