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. Используй как хочешь.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/talipovvs/pdf_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server