Представьте: вы задаете своему локальному Llama 4 (или последнему Qwen) вопрос: "Какие позиции Berkshire Hathaway изменились за прошлый квартал?" А он молчит. Потому что его обучали на данных 2024 года, и он понятия не имеет, что Уоррен в январе 2026 нарезал портфель. Знакомо?
Выход — дать LLM доступ к реальным данным. Не через платные API, которые требуют карту и лимиты, а через self-hosted MCP-сервер, который сам ходит в SEC EDGAR, парсит 13F и вытаскивает инсайдерские сделки. И да — это open source и бесплатно.
Если вы еще не знакомы с MCP — прочитайте статью "MCP протокол: как работает USB-порт для ИИ". Дальше будет понятнее.
Что за зверь и зачем он нужен
MCP-сервер для финансовых данных — это прослойка между вашей локальной нейросетью и государственными базами SEC. Он реализует протокол MCP (Model Context Protocol), так что любой LLM, поддерживающий этот протокол (а их уже десятки), может вызвать его функции как обычные инструменты.
Сервер умеет:
- Ходить в SEC EDGAR и вытаскивать последние 10-K, 10-Q, 8-K.
- Парсить 13F filings — те самые квартальные отчеты хедж-фондов. Кто купил, кто продал, какие объемы.
- Собирать инсайдерские сделки (Form 4) — покупки/продажи топ-менеджеров.
- Кэшировать результаты (SEC любит банить за частые запросы).
Все данные — публичные, без единого API-ключа. Только ваш IP и терпение SEC серверов.
Альтернативы: почему не взять готовое
Рынок финансовых API — это зоопарк. Alpha Vantage, Polygon, Intrinio, Tiingo — от $50 до $200 в месяц за приличный тариф. Да, у них есть SDK для Python, но встроить их в LLM — еще тот геморрой. Нужно писать функции, обрабатывать ошибки, следить за лимитами. MCP-сервер делает это за вас и выставляет единый интерфейс.
Альтернатива из мира MCP — FIBO-сервер для AI-агентов, но он про онтологии, а не про сырые данные. Наш вариант — для тех, кому нужны именно filings и сделки, а не абстракции.
| Критерий | Self-hosted MCP | Платные API | Парсинг вручную |
|---|---|---|---|
| Цена | Бесплатно (только железо) | $50-500/мес | Время разработчика |
| Приватность | Полная (все локально) | Данные уходят провайдеру | Зависит от реализации |
| Интеграция с LLM | По MCP — один config файл | Нужно писать функции | С нуля |
| Данные | SEC, 13F, инсайды — из первых рук | Часто очищенные, но с задержкой | Сырые XML — боль |
Как это работает вживую
Допустим, вы подняли сервер на своем NAS или VPS. Подключили его к llama-server Web UI или через MCP Hangar — единую панель управления. Дальше диалог:
// Конфигурация MCP сервера в клиенте (например, Continue.dev или Claude Desktop)
{
"mcpServers": {
"sec-filings": {
"command": "python",
"args": ["-m", "sec_mcp_server"],
"env": {
"SEC_CACHE_DIR": "./cache"
}
}
}
}
Теперь LLM видит инструменты: get_latest_13f(ticker), get_insider_trades(ticker, days), search_sec_filing(company, form_type). И может их вызвать.
1 Поднимаем сервер через Docker
docker run -d \
--name sec-mcp \
-p 8080:8080 \
-v ./sec-cache:/app/cache \
ghcr.io/your-org/sec-mcp-server:latest
Образ весит ~150 МБ, в основе — Python 3.12 с aiohttp и lxml. Если хотите собрать сами — исходники на GitHub, лицензия MIT.
2 Проверяем, что работает
Для теста можно вызвать инструмент напрямую через MCP-клиент. Я использую MCP Chat Studio — это Postman для MCP. Открываю, выбираю сервер, пишу:
{
"method": "tools/call",
"params": {
"name": "get_latest_13f",
"arguments": {
"ticker": "BRK.B"
}
}
}
Ответ приходит через 2-3 секунды — сервер сходит на SEC, распарсит XML и вернет JSON с holdings. LLM (даже маленькая локальная модель с 120x сжатием) обработает и выдаст анализ.
Когда реальность бьет по рукам
Не все так радужно. SEC иногда меняет структуру XML — и парсер ломается. Инсайдерские сделки приходят с задержкой до 2 дней (по закону Form 4 подается в течение 2 рабочих дней). 13F — только квартальные данные, никакого real-time.
Но для аналитики, бэктестов и AI-агентов, которые пишут обзоры — этого хватает за глаза. К тому же кэш спасает: если 10 инвесторов спрашивают про один и тот же отчет, сервер отдает из хранилища.
Важный нюанс: если ваш LLM генерирует слишком много параллельных запросов, SEC может временно заблокировать IP. Решение — поставить rate limiter внутри MCP-сервера или использовать mcp-context-proxy, который сам режет лишние вызовы.
Кому это реально нужно
- Квантам и дата-сайентистам, которые строят AI-агентов для анализа рынка. Вместо того чтобы писать парсеры, вы получаете API по MCP.
- Retail-инвесторам, которые хотят генерировать отчеты по своим портфелям на основе последних 13F. LLM + MCP = аналитик за 0 рублей.
- Разработчикам AI-инструментов, которые ищут способ автоматизировать аналитику без дашбордов.
- Параноикам конфиденциальности, которые не хотят светить свои инвестиционные идеи в облачных API.
Кстати, если вы уже используете MCP для автоматизации (читали статью про выброс Ansible и Jenkins), то финансовый сервер может стать вашим следующим модулем в пайплайне.
А что с качеством данных
SEC — не биржа. В XBRL (формат отчетности) иногда ошибки: пропущенные цифры, опечатки. Сервер старается валидировать, но 100% гарантии нет. Для инвестиционных решений все равно нужна дополнительная проверка. LLM — не финансовый советник.
Но для скрининга идей, генерации гипотез или просто для того, чтобы быть в курсе, кто из больших дядек вышел из акций TSLA — это бесценно.
Мой личный совет: поставьте такой сервер сегодня, прикрутите к локальному LLM и задайте ему вопрос про последний отчет любого хедж-фонда. После первого же ответа вы поймете, почему MCP — это USB-порт для ИИ, а финансовые данные — идеальный кейс.
Хотите больше примеров использования MCP? Посмотрите как индексировать код в граф знаний с MCP — подход похож, только вместо SEC у вас репозиторий кода.