LKML MCP服务器
一个模型上下文协议(MCP)服务器,用于通过lore.Kernel.org访问Linux内核邮件列表线程。该服务器提供工具,可以从任何内核邮件列表存档(lkml、Linux riscv、netdev等)中获取完整的电子邮件线程和原始消息内容。
工具
- lkml_get_thread:按消息ID获取完整线程,返回线程中所有具有结构化元数据(主题、发件人、日期、消息ID、回复、正文内容)的消息。默认情况下,过滤掉自动机器人消息
- lkml_get_raw:获取原始RFC822格式的单个消息,这对于获取原始MIME正文、标头或内联差异非常有用
- lkml_get_user_series:按用户电子邮件地址查找最新补丁系列和消息。返回一个补丁系列列表,其中封面字母和补丁分组在一起,还有独立的消息
- lkml_search_patches:按关键字、子系统、作者或其他条件搜索补丁。返回匹配的补丁系列和单个补丁
- 跨邮件列表支持:适用于lore.kernel.org上的任何邮件列表,无需硬编码列表名称(lkml、linux riscv、netdev、devicetree等)
用法示例
获取完整线程
lkml_get_thread with message_id: "20251111105634.1684751-1-lzampier@redhat.com"获取原始消息内容
lkml_get_raw with message_id: "20251111105634.1684751-1-lzampier@redhat.com"注意:消息ID可以带有或不带有尖括号(例如。, ` 或 message-id`).
工具参考
lkml_get_thread
- 参数:
- message_id (string)-要获取的消息ID(例如,'20251111105634.1684751-1-lzampier@redhat.com').可以配备或不配备尖括号。
- 退货:线程中的所有消息,每条消息都有以下字段:
- subject:电子邮件主题行 - from:发件人信息 - date:消息时间戳 - message-id:唯一消息标识符 - in-reply-to:父消息ID(如适用) - body:消息内容
线程上下文保留:该工具以两种方式维护完整的对话上下文:
- 结构:保存
in-reply-to字段将每个回复链接到其父消息,从而能够重建讨论树并跟踪对话分支。
- 引用上下文:保留完整的消息正文,包括引用的文本(以开头的行
>)来自以前的消息。这允许您通过在用户的内联响应上方保留引号来准确查看用户的评论内容。
螺纹结构示例:
Message A (initial patch)
├─ Message B (in-reply-to: A) - reviewer comment
│ └─ Message C (in-reply-to: B) - author response
└─ Message D (in-reply-to: A) - different reviewer commentC回复中保留引用上下文的示例:
> + ret = kvm_read_guest(vcpu->kvm, gpa, &data, sizeof(data));
> + if (ret + return ret;
This looks correct, but you should also handle the case where ret == 0
since kvm_read_guest() can return 0 for a partial read.lkml_get_raw
- 参数:
- message_id (string)-要获取的消息ID(例如,'20251111105634.1684751-1-lzampier@redhat.com').可以配备或不配备尖括号。
- 退货:原始RFC822格式的消息,包括所有标头和MIME内容
运作原理
服务器使用具有自动邮件列表检测功能的稳定消息ID URL从lore.kernel.org获取数据:
- 线程数据:
https://lore.kernel.org/r/{message-id}/t.mbox.gz(压缩mbox格式)
- 使用 /r/ 自动检测正确邮件列表的(重定向)端点 - 适用于任何列表:lkml、linux riscv、netdev、devicetree以及lore.kernel.org上托管的所有其他列表
- 原始消息:
https://lore.kernel.org/r/{message-id}/raw(RFC822格式)
这 /r/ 端点重定向到 /all/ 它提供跨列表消息访问,而不需要硬编码的邮件列表名称。
消息被解析以提取相关字段,并以结构化格式呈现,以便于LLM工具使用。
按平台安装
克劳德代码(CLI)
添加到克劳德代码MCP配置:
claude mcp add -s user lkml uvx -- --from "git+https://github.com/zampierilucas/lkml-mcp" lkml-mcp或手动编辑 ~/.claude.json:
{
"mcpServers": {
"lkml": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/zampierilucas/lkml-mcp",
"lkml-mcp"
]
}
}
}克劳德桌面
作为桌面扩展安装:
- 下载
lkml.mcpb从该存储库或构建它:mcpb pack . lkml.mcpb - 打开克劳德桌面→ 设置→ 扩展
- 拖放
lkml.mcpb进入“扩展”窗口 - 点击“启用”以激活扩展
光标IDE
- 打开光标设置(⌘+,在Mac上,Ctrl+,在Windows/Linux上)
- 导航至 工具和MCP → 添加自定义MCP
- 添加服务器配置:
{
"lkml": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/zampierilucas/lkml-mcp",
"lkml-mcp"
]
}
}本地安装(所有平台)
克隆并在本地安装:
git clone https://github.com/zampierilucas/lkml-mcp.git
cd lkml-mcp
pip install -e .然后在MCP客户端中配置:
{
"mcpServers": {
"lkml": {
"command": "python",
"args": ["-m", "lkml_mcp.server"]
}
}
}配置
BASE_URL
默认情况下,服务器连接到 https://lore.kernel.org。您可以通过设置将其配置为使用其他公共收件箱存档 LKML_BASE_URL 环境变量。
克劳德代码(CLI):
{
"mcpServers": {
"lkml": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/zampierilucas/lkml-mcp",
"lkml-mcp"
],
"env": {
"LKML_BASE_URL": "https://custom-lore-instance.org"
}
}
}
}本地安装:
export LKML_BASE_URL="https://custom-lore-instance.org"
python -m lkml_mcp.server多实例设置
您可以配置多个MCP服务器实例,以同时访问不同的公共收件箱存档。这对于访问Linux内核邮件列表(lore.kernel.org)和其他项目(如收件箱.sourceware.org上的GCC、Glibc)都很有用。
克劳德代码(CLI)-多个服务器:
{
"mcpServers": {
"lkml": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/zampierilucas/lkml-mcp",
"lkml-mcp"
]
},
"sourceware": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/zampierilucas/lkml-mcp",
"lkml-mcp"
],
"env": {
"LKML_BASE_URL": "https://inbox.sourceware.org"
}
}
}
}使用此设置:
- 使用
lkmlLinux内核邮件列表服务器(无需收件箱参数) - 使用
sourcewareGCC、Glibc、GDB、binutils列表的服务器(需要收件箱参数)
实例类型
服务器会自动检测公共收件箱实例类型:
通用重定向实例(如lore.kernel.org):
- 支持
/r/重定向端点 inbox参数是可选的- 自动路由到正确的邮件列表
每个收件箱实例(如Inbox.sourceware.org):
- 要求明确的收件箱名称
inbox参数为 必需的 对于所有操作- 常用收件箱名称:
- gcc -GCC一般性讨论 - gcc-patches -GCC补丁 - libc-alpha -Glibc开发 - gdb-patches -GDB补丁 - binutils -Binutils讨论
先决条件
- Python 3.8+
- uvx -Python包运行器(安装
pip install uv) - 互联网接入
https://lore.kernel.org(或您配置的BASE_URL)
发展
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/
isort src/
# Type checking
mypy src/