Convert a document once, then get back only the passages that answer a question.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Convert documents once. Give agents only what they need.
mcp-name: io.github.anishmoncivarghese/docsift
A 300-page PDF does not fit in a language model's context window, and pasting it in would be expensive if it did. DocSift converts documents into clean Markdown once, indexes them, and then hands back only the passages that answer a question β with page numbers and section headings, so the answer can be cited.
It runs on your machine. PDFs go through Docling, everything else through MarkItDown, both behind one interface. No cloud APIs, no accounts, no telemetry.
Where the saving comes from: retrieval, not conversion. Cleaning barely reduces tokens on PDFs, because Docling already strips headers and footers with its layout model. What changes the bill is asking a question and getting three relevant chunks back instead of a whole document.
Pick the engine you need β markitdown for Word, Excel, PowerPoint, HTML, CSV
and EPUB; docling for PDFs (a large download: ML layout models); all for both
engines plus the HTTP API and MCP server.
That writes cleaned Markdown, token-budgeted chunks and a JSON summary to
./output/. pip install docsift on its own installs the CLI but no engine, and
conversion will tell you so rather than failing obscurely.
Office means the modern formats: .docx, .xlsx, .pptx. The pre-2007
binaries β .doc, .xls, .ppt β are not supported, and DocSift refuses them
by name rather than failing halfway through. Open one in PowerPoint, Keynote,
LibreOffice or Google Slides and save it as .pptx first.
The shortest path to the point of this tool: let an assistant search your own documents, without pasting them anywhere.
DocSift speaks MCP over stdio β the client starts it as a program on your machine. Anything that can do that is supported:
| Client | Supported | How |
|---|---|---|
| Claude Code | yes | claude mcp add β step 2 |
| Claude Desktop | yes | claude_desktop_config.json |
| VS Code (Copilot agent mode) | yes | .vscode/mcp.json |
| Codex CLI | yes | ~/.codex/config.toml |
| Cursor | yes | JSON config, same shape as VS Code |
| claude.ai in the browser | no | needs a remote server |
| ChatGPT (web or desktop) | no | needs a remote server |
The last two are worth being clear about before you install anything. Their connector features only accept a remote MCP server at a public HTTPS URL, and DocSift has no remote transport β there is no configuration that makes a local one appear in those interfaces.
That is a deliberate position rather than an oversight. Reaching them means running DocSift on a server and uploading your documents to it, which is the opposite of the thing this tool is for. A self-hosted remote transport is a reasonable future addition; sending your files to someone else's machine is not.
An MCP client starts DocSift as a program, so it has to exist outside any virtualenv. Install it as a standalone tool:
or with pipx:
DocSift needs Python 3.11 or newer. If your default is older, the version
flag above is what avoids an unsatisfiable-requirements error. Expect a large
download: docling brings PyTorch and layout models.
On Linux, add --torch-backend auto. The default resolves to the CUDA build
of PyTorch β 5.3 GB installed, roughly 2 GB of it nvidia-* wheels that a
machine without an NVIDIA GPU never loads. auto detects your driver and picks
the right build, which is 1.6 GB on a machine without a GPU and leaves CUDA in
place on one with a GPU:
macOS wheels are CPU-only already, so the flag changes nothing there. It is a uv
feature: with pipx or pip there is no equivalent, because the CPU builds live
on a separate index and no published package can redirect an installer to it. If
you install that way on a CPU-only Linux box, DocSift says so after your first
conversion rather than letting several unused gigabytes pass unmentioned.
Check it landed. Run these one at a time; the second prints the path to the executable, which the next step needs.
Pick the one you use. You only need one of these.
$(which docsift) fills in the path for you, so this works exactly as written:
Then confirm it started β look for docsift ... β Connected:
--scope user makes it available in every project; without it, the server is
registered only for the directory you were in.
That is the whole setup for Claude Code. Skip the other clients below and go to step 3.
Copilot agent mode reads .vscode/mcp.json for one project, or the file behind
the MCP: Open User Configuration command for all of them:
~/.codex/config.toml:
Raise the timeout as shown. Codex allows ten seconds by default and DocSift loads PyTorch on the way up, so the default reports a server that failed to start when it was only still starting.
These read a JSON config file instead. For Claude Desktop on macOS that is
~/Library/Application Support/Claude/claude_desktop_config.json; create it if
it does not exist.
If the file is empty or new, this is the whole contents β replacing the command
with the path which docsift printed in step 1:
If it already has other servers, add docsift beside them rather than replacing
the file β note the comma after the previous entry:
Use the absolute path, not a bare docsift. These clients do not reliably
inherit your shell's PATH, and a wrong or bare path fails with ENOENT: no such file or directory.
Then restart the app β the config is read at startup.
Use the absolute path from which docsift, not a bare docsift. MCP
clients do not reliably inherit your shell's PATH, and this is the most common
reason a local server silently fails to start.
No commands to learn β describe what you want:
search ~/Documents/contract.pdf for the termination clause
what does report.pdf say about Q3 revenue?
The first question about a new file converts it, and on a PDF that is slow β about three minutes. That is startup cost, not page count: Docling downloads its layout and table models from HuggingFace on the very first conversion, then loads PyTorch. A three-page test file takes about as long as a thirty-page report, so picking something small to "try it quickly" does not help.
It happens once. Afterwards the file is recognised by its content and answers come back immediately, even if you move or rename it.
For a long PDF, convert it first and ask afterwards:
That fills the same cache the MCP server reads, so the first question is as fast as the rest. It also sidesteps a real limit β MCP clients apply their own timeouts to a tool call, and a long enough conversion can exceed one and surface as an error even though it would have finished.
Before pointing it at a real PDF, prove the wiring with a file that converts instantly. Make one:
Then ask your assistant, naming the tool:
use the docsift search_document tool on /tmp/docsift-check.md to search for "passages"
Name it explicitly, and watch which tool actually runs. Asked casually, an
assistant will often just open a small file with its own file-reading tool and
answer from that β you get the right answer having never touched DocSift, which
makes a broken setup look like a working one. If your assistant reports reading
a file rather than calling docsift, the check has told you nothing.
The first call will ask your permission to run the tool β approve it, and choose the "don't ask again" option if your client offers one, so later questions are not interrupted mid-thought.
Success looks like a docsift tool call in the transcript, returning that one
sentence. This needs no PDF and no model weights, so a failure here is a setup
problem β the command not on PATH, or the server not registered β and not a
conversion one.
Then try a real PDF of your own, and expect the first question to take a minute. On a document of that size the choice takes care of itself: reading it whole is expensive, which is when searching it becomes the obvious move.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/docsift)<a href="https://allmcps.com/mcp/docsift"><img src="https://allmcps.com/api/badge/docsift?style=directory" alt="Docsift on AllMCPs" /></a>