Skip to main content
Glama
talipovvs

pdf-mcp

by talipovvs

pdf-mcp

MCP-сервер для генерации PDF-отчётов по объектам недвижимости. Работает с LibreChat, Claude Desktop и любым MCP-совместимым клиентом.

Сделан как часть дипломного проекта по автоматизации аналитической отчётности в строительном бизнесе.

Что умеет

  • Отчёт по локации: транспорт, инфраструктура, конкуренты, оценки по блокам

  • Отчёт по рынку: таблицы цен, конкуренты, динамика

  • Итоговый отчёт по проекту: параметры объекта, локация, рынок, входные данные для финансовой модели

  • Поддержка кириллицы через TTF-шрифты Arial

  • Преобразование Markdown в PDF без внешних SDK

Related MCP server: PDF Reader MCP Server

Структура

pdf-mcp/
├── mcp_server.py      MCP-сервер, обрабатывает запросы от агента
├── pdf_generator.py   собирает PDF из Markdown
├── requirements.txt   зависимости
├── fonts/             шрифты Arial для кириллицы
└── README.md

Установка

  1. Клонируй репозиторий:

git clone https://github.com/talipovvs/pdf_mcp.git
cd pdf_mcp
  1. Установи зависимости:

pip install -r requirements.txt
  1. Шрифты Arial уже лежат в папке fonts/. Если хочешь заменить — клади туда свои Arial.ttf, ArialBold.ttf, ArialItalic.ttf и ArialBoldItalic.ttf.

Подключение к LibreChat

В файле librechat.yaml добавь:

mcpServers:
  pdf-reports:
    command: python3
    args:
      - "/путь/до/pdf_mcp/mcp_server.py"
    env:
      REPORTS_DIR: "/путь/до/папки/с/отчётами"
      REPORTS_URL: "http://localhost:8090"
    timeout: 60000

Переменные окружения

Переменная

Что делает

По умолчанию

REPORTS_DIR

Куда сохранять готовые PDF

/agent-data/reports

REPORTS_URL

Базовый URL для скачивания PDF

http://localhost:8090

Инструменты

Сервер регистрирует четыре tools, которые видит агент:

generate_location_report

PDF по анализу локации. В Markdown должно быть:

  • таблица оценок по блокам (транспорт, инфраструктура, конкуренты, район)

  • топ-3 преимуществ и рисков

  • итоговый балл и вывод

generate_market_report

PDF по исследованию рынка. В Markdown должно быть:

  • таблицы цен (мин / медиана / макс / источник)

  • основные конкуренты

  • динамика цен и вывод

generate_summary_report

Итоговый PDF по проекту. В Markdown должно быть:

  • параметры объекта

  • сжатые блоки по локации и рынку

  • макропараметры и входные данные для финансовой модели

get_current_date

Возвращает текущую дату с сервера в формате YYYY-MM-DD. Нужен, чтобы агент не придумывал даты сам — модель не знает текущее время.

Общие параметры (для трёх PDF-инструментов)

Параметр

Тип

Что значит

object_name

string

Название объекта, например «Дом Сидорова»

object_address

string

Адрес или локация

content

string

Содержимое отчёта в формате Markdown

company_name

string

Название компании для шапки отчёта

object_type

string

«жилой» или «коммерческий», влияет на дисклеймер

Как это работает

Агент → mcp_server.py → pdf_generator.py → готовый PDF → URL для скачивания
  1. LibreChat при старте поднимает mcp_server.py и держит его процесс живым

  2. Агент вызывает один из инструментов и шлёт Markdown с содержимым отчёта

  3. mcp_server.py запускает pdf_generator.py через subprocess и передаёт параметры в JSON

  4. pdf_generator.py рендерит Markdown в PDF через fpdf2

  5. Готовый файл сохраняется в REPORTS_DIR, агент получает ссылку и показывает её пользователю

Что понимает в Markdown

Что в Markdown

Как рендерится

## Заголовок

Синяя плашка с белым текстом

### Подзаголовок

Синий текст

- пункт

Маркированный список с буллетом

1. пункт

Нумерованный список

| таблица |

Таблица с чередующимися строками и шапкой

**ключ:** значение

Жирный ключ, обычное значение справа

> цитата

Серый курсив для внутренних пометок

---

Горизонтальная линия

Зависимости

Пакет

Зачем

mcp

реализация MCP-протокола

fpdf2

сборка PDF

markdown

парсинг Markdown

jinja2

зарезервировано для шаблонов

Тест без LibreChat

Можно проверить генерацию PDF напрямую, без MCP:

echo '{"tool":"generate_summary_report","object_name":"Тест","object_address":"Москва","content":"## Заголовок\n- пункт 1","company_name":"Моя Компания"}' | python3 pdf_generator.py

В REPORTS_DIR появится PDF-файл, путь к нему выведется в stdout.

Лицензия

MIT. Используй как хочешь.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A comprehensive Model Context Protocol server for real estate data management that provides tools and resources for property listings, agent management, market analysis, client relationships, and area intelligence.
    64
    AGPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides comprehensive PDF processing capabilities including text extraction, image extraction, table detection, annotation extraction, metadata retrieval, page rendering, and document structure analysis.
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for generating professional PDFs from structured JSON in AI agents like Claude or Cursor, using pure Node.js with embedded fonts and precision text layout.
    6
    54 npm
    MIT