search_docsLABSCO SUMMARY
A local PDF index with page-level citations, configured rather than coded.
Search results carry the page number and the surrounding context, which is what makes an answer checkable rather than merely plausible. Because tool names and domain keywords live in the configuration, several instances can run side by side — one per collection — without colliding.
What it is
A server that converts a PDF collection to Markdown, builds a scored inverted index over it, and exposes search, listing and full-content tools against that index.
What you get
- A search tool returning ranked results with the surrounding context and the page each excerpt came from
- A listing tool covering every available document with its metadata and page count
- A content tool that returns a whole document, or one specific page, in full
- Proximity scoring, so multi-word queries rank higher when the terms appear close together
- Domain keywords you configure, given extra weight in ranking for your subject area
- Incremental processing — only new or changed PDFs are reprocessed, detected by content hash
- An index that persists between restarts and loads instantly, with the server accepting connections while it rebuilds
- A management CLI for creating the configuration, adding and removing PDFs, processing them and generating the client config
- Tool names taken from your configuration, so a legal collection and a technical one can expose differently named tools
Requirements
A folder of PDFs and a configuration file naming it, plus the domain keywords you want weighted. Everything runs locally under Python — the server reads only the folders you point it at and makes no outbound calls.
Setup effort
Build from source — git clone https://github.com/lhstorm/mcp_server_knowledge_engine.git
USE CASES
Asking questions of a documentation set nobody has indexed
Drop the PDFs in the folder, process them once, and search from the assistant.
Checking an answer against the source
Take the page number from the search result and read that page in full.
Finding out what is even in the collection
List the documents with their page counts before searching blind.
Keeping the index current as documents arrive
Add the new PDF and reprocess — only the changed files are re-read.
3 tools
Listed in project docs. Your client may show a different list.
list_docsget_document_contentBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation. The three names are defaults from server_config.json and can be renamed per collection, such as search_legal_docs. All three read; documents are added and indexed with the manage_server.py CLI.
Requires
- Python 3.8 or higher
- pip (Python package manager)
- Claude Desktop app (for MCP integration)
INSTALLATION
Connect your client
Server setup
Clone the repository
git clone https://github.com/lhstorm/mcp_server_knowledge_engine.git
cd mcp_server_knowledge_engineCreate virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies
pip install -r requirements.txtInteractive setup
python manage_server.py create-configConvert PDFs to searchable format
python manage_server.py process-pdfsGenerate configuration for Claude Desktop
python generate_mcp_config.py --merge