# DocPull

Syncs public web documentation into verifiable context packages with citations, lockfiles, and drift detection for AI coding agents.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 29
- Author: raintree-technology
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/raintree-technology/docpull
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/docpull

## What it does

DocPull gathers external web documentation, specifications, and code repositories into structured local packages. It tracks sources in `docpull.yaml` and pins resolved snapshots inside `.docpull/context.lock.json`. When you run a sync, the tool recalculates content hashes to detect upstream text changes without relying on third-party cloud services.

Extracted materials live locally in SQLite, NDJSON, or plain Markdown formats alongside origin metadata. Queries run with token budgets and pull exact text passages with citations. The environment requires Python 3.11+. Complex workflows like solving CAPTCHAs, browsing private accounts, or stealth scraping are out of scope.

JavaScript rendering remains disabled unless configured explicitly. Network requests enforce HTTPS and respect `robots.txt` directives while blocking SSRF attempts.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add docpull -- uvx docpull
```
uvx runs the command named after the package; if the README names another one, use uvx --from docpull <command>

### Codex

**Platform CLI**
```bash
codex mcp add docpull -- uvx docpull
```
uvx runs the command named after the package; if the README names another one, use uvx --from docpull <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "docpull": {
            "command": "uvx",
            "args": [
                "docpull"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from docpull <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "docpull": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "docpull"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from docpull <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add docpull uvx docpull
```
uvx runs the command named after the package; if the README names another one, use uvx --from docpull <command>

## When to use it
- track documentation drift across public web pages
- generate locked context files with source citations
- query local documentation archives within a token budget
- export versioned context packages into Cursor or agent setups

## Example prompts
- Search the locked docs archive for retry policies within a 3000 token limit
- Check if any upstream documentation sources have changed since the last sync
- Prepare a context pack from local documentation and validate its citation coverage

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
