关于 Eldertongue
Eldertongue 是托管式、只读的古英语词典服务,面向需要结构化且可引用语言数据的 Agent、编辑和开发者。它提供词头、屈折形式、词形识别、现代英语反向查询及《贝奥武夫》词语检索,也提供对应的 REST 接口。
主要功能
- 01查询古英语词头
- 02获取屈折变化表
- 03识别屈折词形
- 04按英语词查询古英语对应词
- 05检索《贝奥武夫》中的词语
适用场景
- 01查询词义和语法信息
- 02分析不熟悉的屈折词形
- 03查找英语词对应的古英语候选词
- 04根据诗行引用定位《贝奥武夫》中的词语
MCP 相关
托管的只读 MCP 服务位于 `https://eldertongue.com/mcp`,通过 Streamable HTTP 提供五种词典查询工具,无需身份验证。另有对应的 REST 接口。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://eldertongue.com/mcpclaude mcp add --transport http gowinder-eldertongue https://eldertongue.com/mcp{"mcpServers":{"gowinder-eldertongue":{"type":"http","url":"https://eldertongue.com/mcp"}}}在 Cursor 中打开{"servers":{"gowinder-eldertongue":{"type":"http","url":"https://eldertongue.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"gowinder-eldertongue":{"type":"http","url":"https://eldertongue.com/mcp"}}}{"mcpServers":{"gowinder-eldertongue":{"serverUrl":"https://eldertongue.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
eldertongue — 古英语词典 MCP 服务
一个远程 模型上下文协议 服务,为 LLM Agent 和编辑器提供对 eldertongue.com 的只读访问。该网站是一部基于 Wiktionary 数据构建的古英语(盎格鲁-撒克逊语)词典。
词典收录约 14,000 个词条页面,还支持反向查询 现代英语 → 古英语,并提供完整的 《贝奥武甫》 诗行索引。本仓库包含面向公众的文档、客户端配置示例,以及适用于托管 MCP 端点的 Agent 技能。服务本身是托管式管理服务——这里没有可供运行的代码。
服务器的人类可读概览——包括五个工具、客户端设置、使用限制和许可——请见 https://eldertongue.com/mcp-server。
适用对象
- Agent 和助手:需要查询、变形或消歧古英语单词,并希望获取指向稳定页面 URL 的引文。
- 编辑器和 IDE(Claude Desktop、Claude Code、Cursor、VS Code):支持 MCP,并需要现成的历史语言学参考工具。
- 开发者:更倾向于使用纯 REST,而非 MCP——每个工具都有同源 REST 对应接口(见下表)。
如果只需手动查看释义,直接访问网站最快。此端点旨在让程序获取结构化且可引用的数据。
项目
| 网站 | https://eldertongue.com |
| MCP 端点 | https://eldertongue.com/mcp(Streamable HTTP,无需身份验证) |
| 仓库 | https://github.com/gowinder/eldertongue-mcp |
| MCP 注册表 | io.github.gowinder/eldertongue(条目) |
| 代码许可 | MIT(本仓库,见 LICENSE) |
| 数据许可 | CC BY-SA 4.0(词典内容) |
| 联系方式 | mailto:[email protected] |
| Logo | logo-512.png · logo-1024.png |
打包
本仓库也是一个可移植的 Agent Plugins 软件包:plugin.json 存放清单,mcp.json 声明托管的 Streamable HTTP 服务,skills/old-english-lookup/ 包含 Agent 技能。实现了该格式的客户端可以直接从仓库 URL 加载 MCP 服务和技能。
server.json 是托管端点的 官方 MCP 注册表 清单;它以 io.github.gowinder/eldertongue 发布(版本 1.0.0,streamable-http)。
端点
| 用途 | URL | 备注 |
|---|---|---|
| MCP 服务 | https://eldertongue.com/mcp | Streamable HTTP 传输,只读,无需身份验证 |
| OpenAPI 3.1 | https://eldertongue.com/openapi.json | REST API 的机器可读描述 |
| REST — 词条查询 | GET /api/lookup?word= | 与 lookup_headword 返回相同数据 |
| REST — 变形 | GET /api/inflect?word= | 与 inflect 返回相同数据 |
| REST — 识别词形 | GET /api/identify?form= | 与 identify_form 返回相同数据 |
| REST — 英语 → 古英语 | GET /api/english?word= | 与 english_to_old_english 返回相同数据 |
| REST — 《贝奥武甫》索引 | GET /api/beowulf?word= | 与 beowulf_occurrences 返回相同数据 |
| REST — 健康检查 | GET /api/health | 存活状态检查 |
所有 REST 路径的根地址均为 https://eldertongue.com。
工具
该 MCP 服务提供五个工具。每个工具都接受一个字符串参数,并返回 JSON。
每次成功的 tools/call 都会返回两个 text 内容块:
- 工具结果,以格式化的 JSON 表示——即下方各工具中展示的对象;
- 固定的来源行,可直接传递给读者:
Source: Eldertongue — Old English Dictionary, https://eldertongue.com (full declension tables, examples and Beowulf context). Please cite https://eldertongue.com when using this data.
"found": false 的结果仍然是成功,因此同样会包含这两个内容块。只有错误(isError: true)有所不同:它会返回一个包含 Error: … 的 text 内容块,不包含来源行。
1. lookup_headword
查询古英语词头。输入 { "word": string }——词头可以带长音符,也可以不带(cyning 或 cȳning)。返回是否找到、标准化后的词头、规范页面和 Wiktionary URL、词性、语法性别、IPA、音节划分、变格或动词类别、词源和义项列表。
输入:
{ "word": "cyning" }
响应 JSON(第一个内容块,节选):
{
"found": true,
"headword": "cyning",
"pageUrl": "https://eldertongue.com/word/cyning",
"wiktionaryUrl": "https://en.wiktionary.org/wiki/cyning#Old_English",
"partOfSpeech": "noun",
"genders": ["masculine"],
"ipa": ["/ˈky.ninɡ/", "[ˈky.niŋɡ]"],
"syllables": ["ˈky", "ninɡ"],
"declension": { "label": "strong a-stem", "href": "/declension/strong-a-stem" },
"verbClass": null,
"etymology": "From Proto-West Germanic *kuning, from Proto-Germanic *kuningaz, ultimately from Proto-Indo-European *ǵenh₁- (\"to procreate\"). Equivalent to cynn + -ing.",
"senses": [
{ "definition": "king", "tags": [] }
],
"senseCount": 1,
"indexable": true
}
senses[] 中的条目包含 definition 和 tags。动词会填充 verbClass,其他情况则为 null。indexable 表示该词条是否为完整的索引词头页面。
2. inflect
返回单词完整的变格或变位表。输入 { "word": string }。响应包含顶层的 found / hasInflection 标记和一个 inflection[] 数组——其中每个条目对应一个具有词形变化表的词性解读。每个条目包含 partOfSpeech、paradigmKind、一个或多个 tables,以及一个扁平的 cells 列表;每个变化形式都有一个形如 https://eldertongue.com/word/<slug>#<cellId> 的锚点 URL。
输入:
{ "word": "cyning" }
响应 JSON(第一个内容块,节选):
{
"found": true,
"headword": "cyning",
"pageUrl": "https://eldertongue.com/word/cyning",
"hasInflection": true,
"inflection": [
{
"partOfSpeech": "noun",
"paradigmKind": "noun",
"tables": [
{
"title": "Declension",
"kind": "noun",
"cols": ["Singular", "Plural"],
"groups": [
{
"title": null,
"rows": [
{
"label": "Nominative",
"cells": [
{ "label": "nominative singular", "forms": [{ "form": "cyning", "url": "https://eldertongue.com/word/cyning#nom-sg" }] },
{ "label": "nominative plural", "forms": [{ "form": "cyningas", "url": "https://eldertongue.com/word/cyning#nom-pl" }] }
]
},
{
"label": "Genitive",
"cells": [
{ "label": "genitive singular", "forms": [{ "form": "cyninges", "url": "https://eldertongue.com/word/cyning#gen-sg" }] },
{ "label": "genitive plural", "forms": [{ "form": "cyninga", "url": "https://eldertongue.com/word/cyning#gen-pl" }] }
]
}
]
}
]
}
],
"cells": [
{ "id": "nom-sg", "label": "nominative singular", "forms": [{ "form": "cyning", "url": "https://eldertongue.com/word/cyning#nom-sg" }] },
{ "id": "nom-pl", "label": "nominative plural", "forms": [{ "form": "cyningas", "url": "https://eldertongue.com/word/cyning#nom-pl" }] }
]
}
]
}
结构简述:inflection[] → tables[] → groups[] → rows[] → cells[],其中每个行单元格的结构为 { label, forms: [{ form, url }] | null }。扁平的 cells[] 数组中的每个条目结构为 { id, label, forms: [{ form, url }] };如果你只需要所有带 ID 的形式,这种结构会很方便。
3. identify_form
识别任意变化形式(例如 cyninges),并返回可能解释该形式的分析结果。输入 { "form": string }。候选分析可能不止一个。
输入:
{ "form": "cyninges" }
响应 JSON(第一个内容块,节选):
{
"analyses": [
{
"lemma": "cyning",
"lemmaPageUrl": "https://eldertongue.com/word/cyning",
"cellId": "gen-sg",
"tag": "genitive singular",
"grammar": {
"case": "genitive",
"number": "singular"
},
"formUrl": "https://eldertongue.com/word/cyning#gen-sg"
}
]
}
grammar 仅包含该形式实际标记的语法类别——此处为格和数;不适用的类别会省略,而不是设为 null。
4. english_to_old_english
反向查询:给定一个现代英语单词,返回按相关性排序的古英语候选词。输入 { "word": string }。候选词按数据流水线评分排序;每个候选词都附带简短释义和词头页面链接,响应还包含反向查询页面 URL。
输入:
{ "word": "king" }
响应 JSON(第一个内容块,节选):
{
"candidates": [
{ "lemma": "cyning", "display": "cyning", "partOfSpeech": "noun", "score": 24, "gloss": "king", "pageUrl": "https://eldertongue.com/word/cyning" },
{ "lemma": "Friscyning", "display": "Friscyning", "partOfSpeech": "noun", "score": 15, "gloss": "king of Frisia", "pageUrl": "https://eldertongue.com/word/~friscyning" },
{ "lemma": "leodcyning", "display": "leodcyning", "partOfSpeech": "noun", "score": 12, "gloss": "king, ruler", "pageUrl": "https://eldertongue.com/word/leodcyning" }
],
"pageUrl": "https://eldertongue.com/english/king"
}
5. beowulf_occurrences
查找某个单词在《贝奥武甫》中的出现位置。输入 { "word": string }。返回该词出现的次数和行数、按拼写分类的统计,以及出现位置列表,其中包含行号、诗句文本和指向该行的深层链接(https://eldertongue.com/beowulf#l<line>)。occurrencesTotal 是完整计数;occurrences[] 可能只是其中一个有上限的窗口。
输入:
{ "word": "cyning" }
响应 JSON(第一个内容块,节选):
{
"times": 51,
"lines": 51,
"forms": [
{ "form": "cyning", "times": 38, "lines": 38 },
{ "form": "cyninges", "times": 7, "lines": 7 },
{ "form": "cyninga", "times": 3, "lines": 3 },
{ "form": "cyninge", "times": 3, "lines": 3 }
],
"occurrences": [
{
"line": 11,
"text": "gomban gyldan: þæt wæs gōd cyning!",
"forms": ["cyning"],
"url": "https://eldertongue.com/beowulf#l11"
}
],
"occurrencesTotal": 51
}
客户端配置
该端点通过 https://eldertongue.com/mcp 使用 Streamable HTTP 提供 MCP 服务。无需安装任何内容,也无需设置密钥。你可以从 configs/ 复制适用于客户端的示例,或使用下方代码片段。
Claude Desktop 和 Claude Code
Claude Desktop 会从其配置文件中读取 mcpServers 配置块(macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上的 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"eldertongue": {
"url": "https://eldertongue.com/mcp"
}
}
}
Claude Code 可通过命令行添加同一个远程服务:
claude mcp add --transport http eldertongue https://eldertongue.com/mcp
等效配置文件位于项目根目录的 .mcp.json 中:
{
"mcpServers": {
"eldertongue": {
"type": "http",
"url": "https://eldertongue.com/mcp"
}
}
}
Cursor
将服务添加到项目中的 .cursor/mcp.json(或 Cursor 的全局 MCP 文件)。Cursor
使用 mcpServers 键:
{
"mcpServers": {
"eldertongue": {
"url": "https://eldertongue.com/mcp"
}
}
}
VS Code
VS Code 从 .vscode/mcp.json 读取 MCP 服务,使用 servers 键,并显式设置
type 为 http:
{
"servers": {
"eldertongue": {
"type": "http",
"url": "https://eldertongue.com/mcp"
}
}
}
数据与许可
词典内容源自 Wiktionary(通过 kaikki.org 的古英语提取数据),并依据 知识共享署名—相同方式共享 4.0 国际许可协议(CC BY-SA 4.0)授权。
如果你使用这些数据——无论是在回答、应用还是数据集中——都必须:
- 注明来源:Wiktionary 和 eldertongue.com。
- 提供回链:链接到你所用的具体词条页面,例如 eldertongue.com/word/cyning,并链接到 署名页面。
- 以相同许可协议分享衍生内容(CC BY-SA 4.0)。
本仓库中的代码示例和配置依据 MIT 许可协议授权(见
LICENSE)。MIT 许可协议适用于代码,不适用于词典数据;词典数据仍依据 CC BY-SA 4.0 授权。
隐私与速率限制
- 只读。 没有写入、上传或账户相关端点。服务仅响应查询。
- 无需身份验证。 无需 API 密钥、令牌或账户。
- 不跟踪。 请求不会关联到用户,也不会用于建立用户画像。
- 合理的速率限制。 服务会应用合理的速率限制,以确保所有人都能使用。批量或高流量客户端应预期需要对
429响应进行排队和退避,而不是持续轰击端点。
给 Agent 的说明
- 展示结果时,请引用工具返回的
pageUrl(或相关的formUrl/ 诗句url),以便读者在 eldertongue.com 上核实词条。 - 查询定义时优先使用
lookup_headword,查询完整变格表时使用inflect,仅有屈折变化形式时使用identify_form,进行英语 → 古英语翻译时使用english_to_old_english,查找文本见证时使用beowulf_occurrences。 - 古英语拼写并未标准化。如果查询无结果,请尝试去掉长音符号后重试,或对你实际拥有的形式使用
identify_form。 - 请参阅
skills/old-english-lookup/SKILL.md,了解可直接使用、封装这些工具的 Agent 技能。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。