Как я сделал новостной агрегатор с MCP‑сервером, AI‑чатом и Telegram‑ботом. deepseek.. deepseek. Flask.. deepseek. Flask. JavaScript.. deepseek. Flask. JavaScript. llm.. deepseek. Flask. JavaScript. llm. mcp.. deepseek. Flask. JavaScript. llm. mcp. news aggregator.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python. rss.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python. rss. tool calling.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python. rss. tool calling. Веб-разработка.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python. rss. tool calling. Веб-разработка. искусственный интеллект.. deepseek. Flask. JavaScript. llm. mcp. news aggregator. python. rss. tool calling. Веб-разработка. искусственный интеллект. Проектирование API.

28 февраля 2026 года я стоял у окна на 41-м этаже в JBR в Дубае и смотрел, как системы ПВО ОАЭ перехватывают иранские беспилотники прямо над моей головой. Полез в новости — в Google и Яндексе статья двухчасовой давности, Telegram‑каналы противоречат друг другу. Когда это происходит где‑то далеко, не придаёшь этому значения. Когда ты в центре событий, то хочешь знать оперативную информацию, желательно с push‑уведомлениями.

Начал с Telegram‑канала по Ближнему Востоку — агрегировал RSS мировых агентств. Быстро понял: 200+ статей в день руками не покроешь. Написал парсер. Добавил автоперевод. Потом IT‑источники, потом экономику. Так появился мой продукт — сайт агрегатор новостей с AI и MCP.

Сайт https://aitg.pro/ru

Что это такое?

Мультиязычный новостной агрегатор.

  • 80+ источников: Reuters, Bloomberg, FT, Habr, iXBT, RBC, ТАСС…

  • Структура из 9 категорий и 50 тегов, на актуальные темы

  • Лента хронологическая, отражение темы со всех сторон без цензуры(но с официальных источников).

  • Мультиязычность: статья приходит на EN, автоматически переводится на RU, получает теги и появляется в ленте.

Пример новостей
Пример новостей

API и MCP‑сервер

Это то, чем проект отличается от обычного агрегатора.

Есть REST API с документацией (aitg.pro/apidocs): поиск, фильтрация по тегам/источникам/датам, полнотекстовый поиск с релевантностью.

Поверх работает MCP‑сервер(https://aitg.pro/mcp) — стандарт для подключения AI‑ассистентов к внешним данным.

MCP (Model Context Protocol) — стандарт от Anthropic, который позволяет AI‑ассистентам вроде Claude подключаться к внешним источникам данных. По сути — способ дать LLM доступ к инструментам.

Все инструменты возвращают типизированные данные через Pydantic‑модели (ArticleSummary, ArticleDetail, TagNode, SearchResult). Это важно для AI‑агентов: структурированный вывод вместо сырого JSON уменьшает ошибки парсинга и экономит токены.

MCP‑сервер можно вызывать и из браузера, и из Claude Desktop.

Например, подключаешь MCP к Claude, пишешь «Собери дайджест по AI за 3 дня» — получаешь структурированный отчёт. Агент сам находит тег, запрашивает статьи, читает полные тексты, формирует выжимку.

Claude->Settings->Connectors->Add custom connector и указываем ссылку https://aitg.pro/mcp/mcp

Claude→Settings→Connectors→Add custom connector и указываем ссылку https://aitg.pro/mcp/mcp

AI‑ассистент

AI‑чат, который ищет и анализирует новости в реальном времени.

Под капотом — DeepSeek, так как он в 15–30 раз дешевле при сопоставимом качестве для поиска и суммаризации. Для бесплатного продукта принципиально.

Нюанс архитектуры: агент не хардкодит инструменты, а динамически подгружает их из MCP каждые 5 минут. Добавил новый инструмент — агент на сайте подхватит автоматически.

Диалог с агентом https://aitg.pro/ru/

Диалог с агентом https://aitg.pro/ru/

Архитектура

Как я сделал новостной агрегатор с MCP‑сервером, AI‑чатом и Telegram‑ботом - 5

FeedManager — отдельный сервис, который парсит RSS и пишет в MySQL.
Flask только читает. Парсер может зависнуть, упасть при дёрганом RSS‑источнике — фронтенд этого не замечает.

Проставление тегов реализовано в auto_tagger.py он читает из MySQL свежие статьи и пишет обратно теги. Поэтому на схеме двунаправленная стрелка — это не ошибка, а честное отражение того, что процесс и читает, и пишет в одну базу.

Реализован MCP‑сервер для AI‑агента и внешних потребителей.

Телеграмм бот живёт своей жизнью и по запросам пользователей отправляет новости.

Мультиязычность

Я собираю мировые новости, планирую сделать сайт международным и добавить 30 языков.
Переводы хранятся прямо в записи статьи как JSON‑колонка(это быстрее join):

{
  "en": {"title": "...", "summary": "...", "content": "..."},
  "ru": {"title": "...", "summary": "...", "content": "..."}
}

Автоматическое проставление тегов 600 ключевых слов вместо нейросети

Для меня важно разметить все статьи по крупным тегам и далее по дочерним тегам:

Система основных и дочерних тегов

Система основных и дочерних тегов

Для экономии, вместо AI, применил keyword matching, потому что на таком объеме новостей LLM будет кушать много токенов и работать медленнее, а keyword matching стоит 0 денег, <1 мс на статью, точность: ~85%.

TAG_RULES = {
    "ai": [
        "artificial intelligence", " ai ", "neural network",
        "deep learning", "искусственный интеллект", "нейросет",
    ],
    "cybersecurity": [
        "cybersecurity", "ransomware", "vulnerability",
        "кибербезопасность", "уязвимость", "хакер",
    ],
    # 47 тегов, ~600 ключевых слов (EN + RU)
}

Ссылки

Автор: garbuzenko

Источник

Rambler's Top100