LOD-MCP
一个令牌优化的模型上下文协议(MCP)服务器,用于 卢森堡在线词典(LOD).
此MCP服务器使Claude能够以最小的令牌使用量查找卢森堡语单词、获取翻译和访问词典数据。
特性
- 代币高效:返回具有短键和可选字段的紧凑数据结构
- 缓存:1小时的TTL缓存减少了API调用并改进了响应时间
- 频率限制:尊重LOD API,请求之间的间隔为100ms
- 多语言:支持德语(de)、法语(fr)、英语(en)、葡萄牙语(pt)和荷兰语(nl)翻译
- 批量操作:在一次通话中查找多个单词/ID(
search_words,get_entries,get_defs)
安装
快速安装(推荐)
git clone https://github.com/Mohammed-Ashour/lod-mcp
cd lod-mcp
./install.sh安装脚本将:
- ✓ 检查Python版本(需要3.10+)
- ✓ 创建虚拟环境
- ✓ 安装依赖项(mcp、请求)
- ✓ 使用正确的路径创建包装器脚本
- ✓ 测试安装
- ✓ 显示Claude桌面配置
手动安装
如果您更喜欢手动设置:
1.先决条件:
安装 uv 从 这里 (推荐)或确保pip可用
2.设置:
git clone https://github.com/Mohammed-Ashour/lod-mcp
cd lod-mcp3.创建虚拟环境:
使用 uv:
uv venv .venv --python=3.13
source .venv/bin/activate
uv pip install mcp requests或者使用标准Python:
python3 -m venv .venv
source .venv/bin/activate
pip install mcp requests4.创建包装脚本:
创建 run-mcp.sh:
#!/bin/bash
export PYTHONUNBUFFERED=1
export PYTHONPATH="/path/to/lod-mcp/.venv/lib/python3.13/site-packages:$PYTHONPATH"
exec /path/to/lod-mcp/.venv/bin/python /path/to/lod-mcp/server/main.py使可执行文件:
chmod +x run-mcp.shClaude桌面配置
添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"lod-mcp": {
"command": "/path/to/lod-mcp/run-mcp.sh"
}
}
}重新启动克劳德桌面 (Cmd+Q然后重新打开)加载MCP服务器。
支持的工具
1. search_word
搜索卢森堡语单词并获取条目ID。
参数:
word(str):要搜索的单词max_results(int,可选):要返回的最大ID数(默认值:5)
退货: List[str] -LOD条目ID(例如。, ["HAUS1", "HAUSEN1"])
例子:
search_word("haus") # Returns: ["HAUS1", "HAUSEN1"]2. search_word_brief
使用最少的预览信息进行搜索。
参数:
word(str):要搜索的单词max_results(int,可选):最大结果(默认值:3)
退货: Dict[str, str] -将ID映射到“单词(POS)”
例子:
search_word_brief("haus") # Returns: {"HAUS1": "Haus (N)", "HAUSEN1": "hausen (V)"}3. autocomplete
获取单词建议。
参数:
prefix(str):要完成的部分单词limit(int,可选):最大建议值(默认值:5)
退货: str -逗号分隔的建议
例子:
autocomplete("ha", limit=3) # Returns: "haus, hausen, hausfrau"4. get_entry
使用可配置字段获取单词详细信息。
参数:
lod_id(str):LOD条目ID(例如“HAUS1”)langs(str,可选):逗号分隔的语言代码(默认:“de,fr,en”)max_examples(int,可选):最大示例数(默认值:2,0跳过)
退货: Dict -包含单词数据的紧凑型词典
例子:
get_entry("HAUS1", langs="en,de", max_examples=1)
# Returns:
# {
# "id": "HAUS1",
# "w": "Haus",
# "pos": "SUBST",
# "ipa": "hæːʊs",
# "tr": {"en": "house building", "de": "Haus Wohngebäude"},
# "ex": ["mir hunn nach vill Aarbecht..."],
# "infl": "Haiser, Haus",
# "audio": true
# }5. get_def
将单语言定义作为最小字符串。
参数:
lod_id(str):LOD条目IDlang(str,可选):语言代码(默认:“en”)
退货: str -定义字符串
例子:
get_def("HAUS1", "en") # Returns: "Haus: house building; house household, family"______________________________________________________________________
批处理操作(多查找工具)
需要查找时使用这些工具 同时使用多个单词或ID。与重复调用单字工具相比,它们减少了API调用和令牌使用。
search_words ⭐ 推荐
同时搜索多个单词。返回一个字典,将每个输入单词映射到其搜索结果。
参数:
words(List\[str\]):要搜索的单词列表max_results(int,可选):每个单词的最大结果数(默认值:3)
退货: Dict[str, Dict[str, str]] - {word: {id: "word (POS)", ...}, ...}
例子:
search_words(["haus", "schoul", "bierg"])
# Returns:
# {
# "haus": {"HAUS1": "Haus (N)", "HAUSEN1": "hausen (V)"},
# "schoul": {"SCHOUL1": "Schoul (N)"},
# "bierg": {"BIERG1": "Bierg (N)"}
# }get_entries ⭐ 推荐
一次获取多个LOD ID的完整条目详细信息。
参数:
lod_ids(List\[str\]):LOD条目ID列表langs(str,可选):逗号分隔的语言代码(默认:“de,fr,en”)max_examples(int,可选):每个条目的最大示例数(默认值:2)
退货: Dict[str, Dict] - {lod_id: entry_data, ...}
例子:
get_entries(["HAUS1", "SCHOUL1"], langs="en", max_examples=1)
# Returns:
# {
# "HAUS1": {"id": "HAUS1", "w": "Haus", "pos": "SUBST", "tr": {"en": "house"}},
# "SCHOUL1": {"id": "SCHOUL1", "w": "Schoul", "pos": "SUBST", "tr": {"en": "school"}}
# }get_defs ⭐ 推荐
一次获取多个LOD ID的最小定义。
参数:
lod_ids(List\[str\]):LOD条目ID列表lang(str,可选):语言代码(默认:“en”)
退货: Dict[str, str] - {lod_id: "word: definition", ...}
例子:
get_defs(["HAUS1", "SCHOUL1"], lang="en")
# Returns:
# {
# "HAUS1": "Haus: house building",
# "SCHOUL1": "Schoul: school; school building"
# }______________________________________________________________________
6. cache_stats
获取缓存性能统计信息。
退货: str -统计数据格式为“命中率/未命中率/比率%(大小项目)”
7. cache_clear
清除API响应缓存。
退货: str 好的
用法示例
💡 AI工具提示: 查找多个单词时,始终使用批处理工具(search_words,get_entries,get_defs)而不是在循环中调用单字工具。它们更快,使用更少的令牌和工具调用。
基本单词查找
- 搜索:
ids = search_word("haus") # ["HAUS1", "HAUSEN1"]- 获取定义:
definition = get_def("HAUS1", "en")
# "Haus: house building; house household..."使用动词
# Search for verb
ids = search_word("goen")
# Get full entry
entry = get_entry("GOEN1", langs="en", max_examples=1)
# Check entry["infl"] for conjugated forms批量查找示例(推荐)
# Search multiple words at once
results = search_words(["haus", "schoul", "bierg"], max_results=2)
# Returns all results in one call
# Get definitions for multiple IDs
ids = ["HAUS1", "SCHOUL1", "BIERG1"]
defs = get_defs(ids, lang="en")
# Get full entries for multiple IDs
entries = get_entries(ids, langs="de,fr", max_examples=1)使用LOD技能(非MCP工具)
如果你的AI工具不支持MCP,你可以直接使用LOD技能。该技能通过对LOD进行HTTP API调用来提供相同的功能。
技能特点
该技能为以下方面提供结构化指导:
- 翻译查询 (de、fr、en、pt、nl)
- 发音 (IPA符号)
- 婚姻 (完整的动词表)
- 例句 带有音频链接
- 批量操作 (高效的多词查找)
- 错误处理 模式
故障排除
安装问题
如果安装脚本失败:
# Check Python version
python3 --version # Should be 3.10+
# Install uv (recommended package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh服务器无法启动
- 检查Python路径
run-mcp.sh匹配你的venv - 确保包装器脚本可执行:
chmod +x run-mcp.sh - 检查克劳德桌面日志:
~/Library/Logs/Claude/mcp*.log(macOS) - 手动测试:
./run-mcp.sh-应输出JSON
导入错误
从项目根目录运行或使用处理 PYTHONPATH.
API错误?
- 检查您在请求之间等待了100毫秒
- 验证单词是否存在于卢森堡语中
- 直接使用curl测试端点
重新安装
重新开始:
./uninstall.sh # Removes venv and wrapper
./install.sh # Reinstalls everythingAPI来源
利用公众 API LOD 由卢森堡文化部提供。
许可证
麻省理工学院
