szmcp: ZIM HTML-to-Markdown 변환기 및 또 다른 ZIM MCP 서버
요약
본 글은 로컬 LLM이 오프라인 지식 기반(ZIM 파일)에 접근할 수 있도록 Rust로 직접 구축한 MCP 서버와 HTML-to-Markdown 변환기를 소개합니다. 이 시스템은 Wikipedia 같은 Kiwix 아카이브를 활용하여, LLM에게 효율적이고 구조화된 세상 지식을 제공하는 것을 목표로 합니다.
핵심 포인트
- Rust 기반의 MCP 서버가 단순하고 사용하기 쉬운 도구 세트를 제공합니다.
- HTML-to-Markdown 변환기는 위키 인포박스, LaTeX 등을 포함하여 깔끔한 Markdown을 생성합니다.
- ZIM 파일 크기를 줄이고 컨텍스트 효율성을 높이는 하위 명령어가 추가되었습니다.
- Gemma 4 12B 등 다양한 로컬 LLM과 테스트하여 좋은 성능을 확인했습니다.
안녕하세요 여러분, 제가 저 자신을 위해 '바이브 코딩(vibe-coded)'한 작은 프로젝트를 공유하고 싶습니다. 여기 많은 분들이 제안하듯이, 저는 제 소규모 로컬 LLM이 세상 지식을 향상할 수 있도록 정보에 접근하게 해주고 싶었습니다. 제 쿼리를 비공개로 유지하고 오프라인으로 기능하도록 하기 위해, LLM에게 웹을 자유롭게 검색하거나 브라우징하는 것을 허용하고 싶지 않았기 때문에, 저는 그들에게 오프라인 지식 기반을 제공하고자 했습니다. Wikipedia의 Kiwix ZIM 파일은 좋은 출발점이었습니다. ZIM 파일을 위한 여러 MCP(Microservice Communication Protocol) 서버가 존재하지만, 저는 다양한 이유로 기존에 찾았던 것들이 마음에 들지 않았습니다. 가장 주목할 만한 것은 openzim-mcp인데, 이는 고급 도구 모드에서는 작동하지만 너무 복잡하게 컨텍스트를 부풀리는(context-bloating) 도구를 가지고 있고, 간단한 단일 도구 모드는 실제 사용에서 그다지 잘 작동하지 않습니다. 저는 Rust로 ZIM 파일용 MCP 서버를 직접 구축하여, 소규모 로컬 LLM이 실제로 사용하기 쉬운 단순한 도구 세트를 노출하는 동시에, 일반적으로 필요한 모든 기능을 제공합니다. 이는 주로 mwoffliner가 생성한 Kiwix MediaWiki ZIM 아카이브(예: Wikipedia, WIkivoyage 등)를 위해 설계되었지만, 많은 비-위키 ZIM 파일과도 사용할 수 있습니다. 또한 저는 MediaWiki 페이지용 자체 HTML-to-Markdown 변환기도 작성했는데, 이는 위키 인포박스, LaTeX 공식, 표 등 특별한 콘텐츠를 포함하여 깨끗하고 잘 포맷된 Markdown을 생성합니다. 또한 결과로 나오는 markdown이 깔끔하고 컨텍스트 효율적이도록 위키 페이지에서 참고문헌과 서론/결론 같은 일반적인 부분을 제거합니다. 이 MCP 서버를 llama.cpp의 Web UI에 연결하여 소규모 로컬 LLM에게 훨씬 더 나은 세상 지식을 제공할 수 있습니다. 제가 잘 작동한다고 찾은 시스템 프롬프트는 다음과 같습니다: 당신은 도움이 되는 비서입니다. 사실적 질문에 답변할 때는 제공된 ZIM 접근을 사용하여 Wikipedia를 검색하여 답변의 근거를 마련하세요. 읽은 기사나 섹션에 관련 세부 정보가 없으면 더 많이 검색할 수 있지만, 영원히 검색만 하지는 말고 합리적으로 빠르게 답변해야 합니다. 저는 다양한 크기의 여러 LLM으로 이를 테스트했습니다.
저는 Gemma 4 12B(또는 그 이상), IBM Granite 4.2 8B(또는 그 이상), 그리고 Ling 3.0 Flash를 사용했을 때 좋은 결과를 얻었습니다 (제 128GB Mac에서 여전히 사용할 수 있는 속도를 유지하면서 최고의 결과를 보여주었습니다). 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으로 변환하는 하위 명령어를 이 도구 내에 구축했습니다. 이 명령어는 49GB 크기의 Kiwix nopic 전체 영어 위키피디아 ZIM 파일을 모든 기사 내용(참고문헌 제외)을 유지하고 전문 검색 기능을 유지하면서 19GB의 Markdown ZIM 파일로 변환합니다. 마찬가지로, 17GB의 top-1M nopic enwiki Kiwix ZIM 파일을 6GB로 변환합니다. 전체 텍스트 검색을 위해 기사 소개 부분만 인덱싱하도록 옵션을 지정하면 결과 ZIM 파일을 더 작게 만들 수 있습니다 (전체 텍스트 검색 Xapian 인덱스가 파일 크기의 큰 부분을 차지하기 때문입니다). 이 변환기는 멀티스레드 방식으로 작성되었고 Rust를 사용하여 상당히 효율적으로 구현되어 있어, 일반적인 최신 컴퓨터에서 전체 영어 위키피디아 Kiwix 파일에 있는 수백만 개의 기사를 몇 시간 만에 변환할 수 있습니다. GitHub 링크: https://github.com/sultanqasim/szmcp /u/Federal-Effective879가 r/LocalLLaMA에 제출했습니다 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기