szmcp:一个 ZIM HTML 转 Markdown 转换器,以及又一个 ZIM MCP 服务器
摘要
szmcp 是一个基于 Rust 的 MCP 服务器,让本地 LLM 能离线访问 Wikipedia ZIM 存档。它包含一个自研的 HTML 转 Markdown 转换器,可剔除冗余样板内容以节省上下文窗口,能将 49GB 的 Wikipedia ZIM 压缩至 19GB,同时保留全文搜索功能。
大家好,我想分享一个我为自己随性编写的小项目,或许你们也会觉得有用。正如这里的很多人常常建议的那样,我想让我的小型本地 LLM 能够获取信息,以提升它们的世界知识。但我不想让我的 LLM 自由地搜索和浏览网页,以保持我的查询隐私和离线可用,因此我想给它们一个离线知识库。来自 Kiwix 的 Wikipedia ZIM 文件是不错的起点。目前已有多个面向 ZIM 文件的 MCP 服务器,但我因为各种原因并不喜欢找到的现有方案。最知名的是 openzim-mcp,它在高级工具模式下可以工作,但工具过于复杂且占用大量上下文;而它的简单单工具模式在实际使用中效果也不太好。我用 Rust 编写了我自己的 ZIM 文件 MCP 服务器,暴露了一套简洁的工具集,让小型本地 LLM 真正易于使用,同时提供人们通常需要的全部功能。它主要为 mwoffliner 生成的 Kiwix MediaWiki ZIM 存档(如 Wikipedia、Wikivoyage 等)设计,但也可用于许多非维基 ZIM 文件。我还为 MediaWiki 页面编写了自己的 HTML 转 Markdown 转换器,能生成干净、格式良好的 Markdown,包括维基信息框、LaTeX 公式、表格等特殊内容。它还会剔除维基页面中的参考文献和样板章节,以保持生成的 Markdown 干净且节省上下文。你可以把这个 MCP 服务器接入 llama.cpp 的 Web UI,从而显著提升你的小型本地 LLM 的世界知识。我发现一个效果不错的系统提示词如下:You are a helpful assistant. When answering factual queries, search through Wikipedia using the provided ZIM access to ground your answers. If the articles or sections you read don't have relevant details, you can search more, but don't keep searching forever; you need to answer reasonably quickly.(你是一个乐于助人的助手。在回答事实性查询时,请使用提供的 ZIM 访问权限在 Wikipedia 中搜索,以确保你的回答有据可查。如果你阅读的文章或章节没有相关细节,可以继续搜索,但不要无止境地搜下去;你需要在合理的时间内给出回答。)我用各种不同规模的模型进行了测试。Gemma 4 12B(或更大)、IBM Granite 4.2 8B(或更大)以及 Ling 3.0 Flash 都取得了不错的效果(在我的 128 GB Mac 上 Ling 3.0 Flash 效果最好,同时仍能保持可用的速度)。Qwen 3.6 35B-A3B 可用,但往往过度思考并产生幻觉;Qwen 3.8 27B 在我的 Mac 上速度太慢,无法用于此目的。我也尝试了更小的模型,MiniCPM5 2B、LFM 2.5 2.6B 和 IBM Granite 4.2 3B 在较简单的查询上给出了可用的结果。Gemma 4 E4B 在这方面表现不佳。我还为这个工具内置了一个子命令,用于将整个 ZIM 文件从 HTML 转换为 Markdown 以节省磁盘空间(并避免每次工具调用时都要转换)。它能将 49 GB 的 Kiwix nopic 全英文 Wikipedia ZIM 文件转换为 19 GB 的 Markdown ZIM 文件,同时保留所有文章内容(参考文献除外)并维持全文搜索功能。同样地,它能将 17 GB 的 top-1M nopic enwiki Kiwix ZIM 文件转换为 6 GB。如果你指定仅索引文章导语用于全文搜索(因为全文搜索的 Xapian 索引占文件大小的很大一部分),生成的 ZIM 文件可以进一步缩小。该转换器使用 Rust 编写,多线程且效率相当不错,因此你可以在一台普通的现代计算机上用几个小时转换完整英文 Wikipedia Kiwix 文件中的数百万篇文章。GitHub 链接:https://github.com/sultanqasim/szmcp
相似文章
XWiki 的 MCP Server
XWiki 推出了一个开源、可自托管的 MCP Server 扩展,将其 wiki 平台与 Claude Code、GitHub Copilot、OpenCode 和 Codex 等 AI 代理连接起来,支持查询、页面创建/编辑以及结构化数据访问,同时让用户继续掌控数据。
面向 LLM 的 Markdown 浏览器
作者介绍了 TextWeb,这是一个开源工具,它将网页渲染为 Markdown 格式供 LLM 处理,而非使用昂贵的大视觉模型,该工具支持命令行界面 (CLI) 和 MCP 服务器。
介绍 MDN MCP 服务器
Mozilla 宣布了 MDN MCP 服务器,该服务器使用模型上下文协议,为 AI 编码工具提供最新的 MDN 文档和浏览器兼容性数据,从而在开发工作流中提供更准确的 Web 平台信息。
构建了一个用于多渠道内容发布的MCP服务器——设计上具有幂等性,并在进行任何API调用前对Reddit进行预检
一个新的多渠道内容发布MCP服务器确保了幂等操作,并包含Reddit预检,使得跨8个平台的可靠智能体驱动发布成为可能。
无状态MCP重新引起了我的兴趣(并启发了mcp-explorer和datasette-mcp)
Simon Willison讨论了简化协议实现的无状态MCP(MCP 2.0)规范,并介绍了他的新工具mcp-explorer和datasette-mcp,这些工具利用该规范构建。