# Docling MCP

Превращает PDF и другие документы в структурированный JSON прямо в чате агента. Пригодится, когда надо разобрать отчёт или статью для дальнейшей обработки.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 777
- Автор: docling-project
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/docling-project/docling-mcp
- Обновлён: 2026-10-21
- HTML: https://affpapa.org/nevibecode/mcp/docling-mcp

## Что делает

Docling MCP оборачивает библиотеку Docling в набор инструментов, которые клиент вызывает по протоколу MCP. Основная задача — конвертация PDF в структурированный JSON формата DoclingDocument, плюс генерация документов с экспортом в разные форматы. Есть локальный кэш, чтобы не гонять один и тот же файл дважды, и поддержка источников в виде локальных путей или URL.

Работает в трёх режимах. Remote обращается к внешнему Docling Serve по URL и ключу API, local считает всё на машине, hybrid пробует удалённый сервис и падает на локальный, если тот недоступен. Режим задаётся переменной `DOCLING_MCP_CONVERSION_MODE`, по умолчанию стоит `remote` — значит, без `DOCLING_MCP_SERVICE_URL` и `DOCLING_MCP_SERVICE_API_KEY` сервер не заработает. Для локального режима ставьте пакет с extra `local`.

Отдельно стоит флаг `DOCLING_MCP_DO_PICTURE_DESCRIPTION`: он включает модель описания картинок, и на слабом железе конвертация может заметно замедлиться. Если упираетесь в таймаут, увеличивайте `DOCLING_MCP_SERVICE_TIMEOUT` — по умолчанию 300.0 секунд. Клиент тоже умеет обрывать запрос раньше, так что проверьте его настройки.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `DOCLING_MCP_CONVERSION_MODE`, `DOCLING_MCP_SERVICE_URL`, `DOCLING_MCP_SERVICE_API_KEY`, `DOCLING_MCP_SERVICE_TIMEOUT`, `DOCLING_MCP_SERVICE_MAX_RETRIES`, `DOCLING_MCP_FALLBACK_TO_LOCAL`, `DOCLING_MCP_KEEP_IMAGES`, `DOCLING_MCP_IMAGES_SCALE`, `DOCLING_MCP_DO_OCR`, `DOCLING_MCP_DO_TABLE_STRUCTURE` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env DOCLING_MCP_CONVERSION_MODE=<DOCLING_MCP_CONVERSION_MODE> --env DOCLING_MCP_SERVICE_URL=<DOCLING_MCP_SERVICE_URL> --env DOCLING_MCP_SERVICE_API_KEY=<DOCLING_MCP_SERVICE_API_KEY> --env DOCLING_MCP_SERVICE_TIMEOUT=<DOCLING_MCP_SERVICE_TIMEOUT> --env DOCLING_MCP_SERVICE_MAX_RETRIES=<DOCLING_MCP_SERVICE_MAX_RETRIES> --transport stdio docling-mcp -- uvx docling-mcp
```
Вместо <…> подставьте свои значения. Ещё 9 переменных окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from docling-mcp <команда>

### Codex

**Командой платформы**
```bash
codex mcp add docling-mcp --env DOCLING_MCP_CONVERSION_MODE=<DOCLING_MCP_CONVERSION_MODE> --env DOCLING_MCP_SERVICE_URL=<DOCLING_MCP_SERVICE_URL> --env DOCLING_MCP_SERVICE_API_KEY=<DOCLING_MCP_SERVICE_API_KEY> --env DOCLING_MCP_SERVICE_TIMEOUT=<DOCLING_MCP_SERVICE_TIMEOUT> --env DOCLING_MCP_SERVICE_MAX_RETRIES=<DOCLING_MCP_SERVICE_MAX_RETRIES> -- uvx docling-mcp
```
Вместо <…> подставьте свои значения. Ещё 9 переменных окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from docling-mcp <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "docling-mcp": {
            "command": "uvx",
            "args": [
                "docling-mcp"
            ],
            "env": {
                "DOCLING_MCP_CONVERSION_MODE": "<DOCLING_MCP_CONVERSION_MODE>",
                "DOCLING_MCP_SERVICE_URL": "<DOCLING_MCP_SERVICE_URL>",
                "DOCLING_MCP_SERVICE_API_KEY": "<DOCLING_MCP_SERVICE_API_KEY>",
                "DOCLING_MCP_SERVICE_TIMEOUT": "<DOCLING_MCP_SERVICE_TIMEOUT>",
                "DOCLING_MCP_SERVICE_MAX_RETRIES": "<DOCLING_MCP_SERVICE_MAX_RETRIES>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 9 переменных окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from docling-mcp <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "docling-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "docling-mcp"
            ],
            "env": {
                "DOCLING_MCP_CONVERSION_MODE": "<DOCLING_MCP_CONVERSION_MODE>",
                "DOCLING_MCP_SERVICE_URL": "<DOCLING_MCP_SERVICE_URL>",
                "DOCLING_MCP_SERVICE_API_KEY": "<DOCLING_MCP_SERVICE_API_KEY>",
                "DOCLING_MCP_SERVICE_TIMEOUT": "<DOCLING_MCP_SERVICE_TIMEOUT>",
                "DOCLING_MCP_SERVICE_MAX_RETRIES": "<DOCLING_MCP_SERVICE_MAX_RETRIES>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 9 переменных окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from docling-mcp <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e DOCLING_MCP_CONVERSION_MODE=<DOCLING_MCP_CONVERSION_MODE> -e DOCLING_MCP_SERVICE_URL=<DOCLING_MCP_SERVICE_URL> -e DOCLING_MCP_SERVICE_API_KEY=<DOCLING_MCP_SERVICE_API_KEY> -e DOCLING_MCP_SERVICE_TIMEOUT=<DOCLING_MCP_SERVICE_TIMEOUT> -e DOCLING_MCP_SERVICE_MAX_RETRIES=<DOCLING_MCP_SERVICE_MAX_RETRIES> docling-mcp uvx docling-mcp
```
Вместо <…> подставьте свои значения. Ещё 9 переменных окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from docling-mcp <команда>

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
