一个使用Lucene.NET进行全文搜索的Model Context Protocol (MCP)服务器,并支持文档分块。
该项目由两个组件组成:
/server - 提供基于Lucene.NET索引搜索功能的MCP服务器/idx - 命令行工具,用于将文档(文本文件、PDF)索引到Lucene.NET中cd idx
dotnet run -- init -i ./lucene-index
dotnet run -- add -d "manual" -t "用户手册" -f "./manual.pdf"
dotnet run -- add -d "policy" -t "隐私政策" -c "我们的隐私政策..."
cd server
dotnet run ./lucene-index
服务器提供了一个Search工具,返回与相关文档片段相关的JSON数据。
要在Claude Desktop或其他MCP客户端中配置服务器,请在您的MCP配置中添加以下内容:
{
"mcpServers": {
"lucene-search": {
"command": "/path/to/mcp-lucene-net/server/bin/Release/net8.0/server",
"args": [
"/path/to/your/lucene-index"
],
"env": {}
}
}
}
请将/path/to/mcp-lucenenet/server/bin/Release/net8.0/server替换为您编译后的服务器二进制文件的实际路径,将/path/to/your/lucene-index替换为您的Lucene索引目录路径。
文档会自动被分割成大约250个单词的片段,每个片段之间有40个单词的重叠部分,以优化搜索相关性和LLM上下文使用。每个片段包括:
id: 唯一的片段标识符(例如,“manual-chunk-001”)title: 描述性标题及部分编号content: 大约250个单词的文本source_document: 原始文档IDchunk_index: 顺序片段编号# 初始化新索引
idx init -i ./lucene-index
# 添加单个文档
idx add -d "doc1" -t "标题" -c "文本内容"
idx add -d "doc2" -t "标题" -f "./document.pdf"
# 批量从JSON添加
idx bulk -i ./lucene-index -j "./documents.json"
[
{
"Id": "doc1",
"Title": "文档标题",
"Content": "文档内容..."
}
]