ZIM档案搜索阅读服务器

基于Go语言的离线ZIM档案搜索阅读服务,支持全文检索和HTML转Markdown,适用于LLM离线知识库访问

  • by akhenakh
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 akhenakh/zim-mcp

使用说明

MCP ZIM服务器

用Go编写的模型上下文协议(MCP)服务器,允许LLM离线搜索和读取 .zim 档案(如离线维基百科、StackOverflow、DevDocs等)。

它利用 mcp走 对于协议实现,全文Xapian搜索通过 Go ZIM绑定,以及 html到markdown 即时将繁重的HTML文章转换为干净、LLM友好的Markdown。所有输出都封装在结构化JSON中。

特性

  • 全文搜索(search_zim):使用内置的Xapian索引立即搜索ZIM存档。返回排名靠前的匹配项及其标题、路径和相关性得分。
  • 文章阅读与转换(read_article):通过文章的内部路径获取文章,并将其HTML内容无缝转换为干净的Markdown,大大减少了令牌的使用,提高了LLM的理解能力。
  • JSON结构化输出:所有工具响应都包装在结构化的JSON信封中,以实现最大的兼容性和可预测的LLM解析。

先决条件

因为底层ZIM库(libzim)和搜索引擎(xapian)是C++库,此项目需要 cgo 以及适当的系统依赖关系。

1.安装系统依赖项

Ubuntu/Debian:

sudo apt-get install libzim-dev libxapian-dev

macOS(通过Homebrew):

brew install libzim xapian

2.下载ZIM文件

您可以从以下网址下载离线存档 Kiwix图书馆。请确保下载包含搜索索引的文件。

安装和建造

# Build the binary
go install github.com/akhenakh/zim-mcp@latest

用法

使用 -z 标志指定要使用的zim文件。

服务器通过以下方式进行通信 stdio,使其成为与Claude Desktop等MCP客户端直接集成的理想选择。

网络模式(HTTP/SSE)

要将服务器作为微服务运行并将其暴露给网络,请使用-elisten标志。 代码Bash

mcp-zim -z /path/to/your/archive.zim -listen :4545

与Claude Desktop集成

要使此服务器对Claude可用,请将其添加到您的Claude Desktop配置文件中。

将以下内容添加到您的配置中,用系统上的绝对路径替换路径:

{
  "mcpServers": {
    "offline-wikipedia": {
      "command": "/absolute/path/to/mcp-zim",
      "args": [
        "-z",
        "/absolute/path/to/wikipedia_en_all_maxi_2024-01.zim"
      ]
    }
  }
}

重新启动克劳德桌面。这些工具现在将在您的聊天中可用!

可用工具

search_zim

在离线ZIM档案中搜索文章。

  • 输入:
    • query (string,必填):要搜索的关键字或短语。
    • count (number,可选):要返回的结果数。默认为5。
  • 输出:一个包含数组的JSON对象 results (标题、路径、分数)。

read_article

使用精确的Path从ZIM存档中读取一篇文章,并将HTML转换为Markdown。

  • 输入:
    • path (string,必填):文章的确切路径(从 search_zim 工具)。
  • 输出:一个包含以下内容的JSON对象 markdown 文章的内容。