MCP LLVM 文档服务器
A. 模型上下文协议(MCP) 提供可搜索访问的LLVM文档的服务器。这使得像Claude Code这样的AI助手能够实时搜索LLVM文档,以回答有关LLVM API、编译器内部机制等方面的问题。
特点/功能
- 全文搜索 通过使用Bleve查阅LLVM文档
- 符合MCP标准/规定 JSON-RPC 2.0 协议
- 智能内容提取 带有HTML解析和代码片段生成功能
- 快速索引 带有并发工作线程池
- 可配置的 LLVM版本和搜索后端
什么是MCP?
模型上下文协议(MCP)是一项开放标准,它使人工智能助手能够安全地访问外部工具和数据源。此服务器实现了MCP,以提供LLVM文档搜索功能,该功能可被任何兼容MCP的客户端(如Claude Code)使用。
安装
先决条件
- Go 1.24.4 或更高版本
- Git
从源代码构建
git clone https://github.com/animalang/mcp-llvm.git
cd mcp-llvm
go build -o mcp-llvm这将创建 mcp-llvm 在当前目录中可执行。
用法
运行服务器
首次运行时,服务器将自动下载并索引LLVM文档:
./mcp-llvm命令行选项
./mcp-llvm [flags]
Flags:
-m, --mode string Search backend mode: "bleve" or "semantic" (default: "bleve")
-l, --llvm-version string LLVM version to index (default: "21.1.2")
-r, --repo-path string Path to store LLVM documentation (default: "~/.mcp-llvm/docs")
-i, --index-path string Path to store search index (default: "~/.mcp-llvm/bleve-index")
-h, --help Display help information示例
# Use LLVM 21.1.2 (default)
./mcp-llvm
# Use a different LLVM version
./mcp-llvm --llvm-version 20.0.0
# Use custom paths
./mcp-llvm --repo-path /path/to/llvm-docs --index-path /path/to/index与Claude代码的集成
要使用此MCP服务器与Claude代码配合:
1. 构建服务器
cd /path/to/mcp-llvm
go build -o mcp-llvm2. 配置Claude代码
编辑您的MCP配置文件:
macOS/Linux: ~/.config/claude-code/mcp.json Windows: %APPDATA%\claude-code\mcp.json
添加以下配置:
{
"mcpServers": {
"llvm-docs": {
"command": "/absolute/path/to/mcp-llvm",
"args": [
"--llvm-version", "21.1.2",
"--mode", "bleve"
]
}
}
}注服务器将自动使用 ~/.mcp-llvm/docs 并且 ~/.mcp-llvm/bleve-index 作为默认路径。您可以覆盖这些路径,使用 --repo-path 并且 --index-path 如有需要。
重要的替换 /absolute/path/to/mcp-llvm 使用您构建的可执行文件的实际绝对路径。
3. 重启Claude代码
保存配置后,重启Claude Code以加载新的MCP服务器。
4. 使用该工具
一旦配置完成,Claude Code将自动获得对(所需资源/功能)的访问权限 llvm_search 工具。你可以提出这样的问题:
- “LLVM的PassManager是如何工作的?”
- “LLVM IR 函数的语法是什么?”
- “解释LLVM的即时编译(JIT)API”
Claude Code 将自动调用 llvm_search 当需要关于LLVM的信息时,使用该工具。
它是如何工作的
建筑学
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Claude Code │ ◄─────► │ MCP Server │ ◄─────► │ LLVM Docs │
│ (Client) │ stdio │ (This tool) │ │ (Bleve Index)│
└─────────────┘ └─────────────┘ └──────────────┘工作流程
- 初始化首次运行时,服务器会从GitHub克隆LLVM文档
- 索引编制HTML文档文件使用Bleve进行索引,以便快速进行全文搜索
- MCP协议服务器通过stdin/stdout使用JSON-RPC 2.0与Claude Code进行通信
- 搜索当克劳德需要LLVM信息时,它会向服务器发送一个搜索查询
- 结果服务器返回带有标题和路径的相关文档片段
MCP 工具公开
llvm_search
查阅LLVM文档。
参数:
query(字符串,必填):搜索查询(例如,“PassManager”,“JIT 编译”)limit(整数,可选):最大结果数量(默认:5,最大:20)
返回值:
- 包含标题、文件路径和内容摘录的文档片段数组
项目结构
mcp-llvm/
├── cmd/
│ └── root.go # CLI command definition
├── internal/
│ ├── mcp/
│ │ └── mcp.go # MCP protocol implementation
│ ├── search/
│ │ ├── search.go # Search interface
│ │ ├── bleve.go # Bleve search backend
│ │ └── semantic.go # Semantic search (stub)
│ └── repository/
│ └── repository.go # Git repo management
├── main.go # Entry point
├── go.mod # Go module definition
└── README.md # This file发展
运行测试
go test ./...添加一个新的搜索后端
- 实施
SearchBackend接口内(或“在接口中”)internal/search/search.go - 将您的后端添加到工厂中
NewSearchBackend() - 使用
--mode标志以选择您的后端
故障排除
索引未构建
如果索引构建失败,请删除索引目录并重试:
rm -rf .llvm-docs/bleve-index
./mcp-llvm克劳德代码找不到工具
- 验证路径中的内容
mcp.json是绝对的(而非相对的) - 检查可执行文件是否具有执行权限:
chmod +x mcp-llvm - 查看Claude Code的日志以获取错误信息
- 通过运行服务器并发送JSON-RPC请求来手动测试服务器
运行缓慢
- 首次运行时会比较慢,因为它正在克隆和索引文档
- 后续的运行速度很快,因为索引已被缓存
- 考虑使用SSD以获得更好的索引性能
许可证
详见LICENSE文件。
贡献
欢迎贡献!请在GitHub上提交问题或拉取请求。
