APITube News MCP
Поиск новостей в реальном времени и в архиве для AI-агентов через Model Context Protocol.
Размещено по адресу https://mcp.apitube.io/ — устанавливать пакет не требуется, локальный процесс держать живым не нужно.
Быстрый старт • Инструменты • Фильтры • Подсказки • Ценообразование • Устранение неполадок • Документация • Поддержка
Более 300 000 источников · 177 стран · 59 языков. Настроение и сущности в каждой статье.
Обзор
Сервер APITube MCP предоставляет помощнику прямой доступ к мировым новостям в виде структурированных данных, а не выдернутый HTML.
Он открывает 2 инструмента:
-
search_news— почти полный набор фильтров News API в одном вызове: ключевые слова, язык, страна, источникдомен и рейтинг качества, диапазоны настроения, именованные сущности, медиа, диапазоны дат, сортировку, фасетирование и подсветку.
-
suggest— разрешает имя вроде "Tesla" до нужных идентификаторов сущности, категории, темы и отрасли, которые требуются для точной фильтрации.
Каждая статья возвращается обогащённой данными конвейера: коэффициенты настроения, извлечённые сущности (люди, организации, локации, бренды, события), IPTC-категории, темы и отрасли.
">``` MCP client → mcp.apitube.io → api.apitube.io (this server) (News API)
JSON-RPC over HTTP, Authorization: Bearer <API_KEY>
| Свойство | Значение |
| --- | --- |
| Endpoint | https://mcp.apitube.io/ |
| Транспорт | Streamable HTTP (POST /), JSON-RPC 2.0 |
| Протокол | 2025-11-25, согласуется с версией клиента (2024-11-05 работает) |
| Сервер | APITube News MCP-Server 1.0.0 |
| Auth | Authorization: Bearer <token>, или X-API-Key: <token> |
| Registry | io.apitube/news (server.json) |
## Быстрый старт
- Получите API-ключ на [apitube.io](https://apitube.io).
- Добавьте сервер в ваш клиент с приведённым ниже блоком — каждый блок также есть готовым файлом в
[configs/](https://github.com/apitube/news-api-mcp/blob/main/configs).
- Перезапустите клиента и задайте ему что-то вроде: *«find positive breaking news about Tesla in English from the last week»*.
Claude Code
claude mcp add --transport http apitube-news https://mcp.apitube.io/
--header "Authorization: Bearer YOUR_API_KEY"
Проверьте его с `/mcp`. Чтобы подключить сервер к проекту, поместите
[configs/claude-code.mcp.json](https://github.com/apitube/news-api-mcp/blob/main/configs/claude-code.mcp.json) в корень репозитория как `.mcp.json`.
CLI
**MCP Servers → Configure**, или `~/.cline/mcp.json` для CLI:
{ "mcpServers": { "apitube-news": { "type": "streamableHttp", "url": "https://mcp.apitube.io/", "headers": { "Authorization": "Bearer YOUR_API_KEY" }, "disabled": false, "autoApprove": [] } } }
`type` должен быть указан явно — без него Cline возвращается к устаревшему SSE-транспорту, который данный сервер не поддерживает. Оба инструмента доступны только для чтения, поэтому `autoApprove: ["search_news", "suggest"]` безопасен если вы хотите не подтверждать каждый вызов.
Курсор
`~/.cursor/mcp.json` (глобально) или `.cursor/mcp.json` (для проекта):
{ "mcpServers": { "apitube-news": { "url": "https://mcp.apitube.io/", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Настройки → MCP должны показать `apitube-news` как подключённый.
Claude Desktop
Claude Desktop запускает только локальные процессы, поэтому удобно связать локальный клиент с удалённым сервером через
[mcp-remote](https://www.npmjs.com/package/mcp-remote). Отредактируйте `claude_desktop_config.json`
(`~/Library/Application Support/Claude/` на macOS, `%APPDATA%\Claude\` на Windows):
{ "mcpServers": { "apitube-news": { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.apitube.io/", "--header", "Authorization: Bearer YOUR_API_KEY" ] } } }
Перезапустите приложение; инструменты появятся под значком с ползунком.
VS Code (GitHub Copilot)
`.vscode/mcp.json`, с вводом ключа вместо хранения его в явном виде:
{ "inputs": [ { "type": "promptString", "id": "apitube-key", "description": "APITube API Key", "password": true } ], "servers": { "apitube-news": { "type": "http", "url": "https://mcp.apitube.io/", "headers": { "Authorization": "Bearer ${input:apitube-key}" } } } }
Откройте Copilot Chat в режиме **Agent** и включите инструменты `apitube-news`.
Windsurf
`~/.codeium/windsurf/mcp_config.json` — обратите внимание на `serverUrl`, а не на `url`:
{ "mcpServers": { "apitube-news": { "serverUrl": "https://mcp.apitube.io/", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Windsurf Settings → Cascade → MCP Servers → обновление.
Любой другой клиент, или обычная curl
Любой клиент, который поддерживает Streamable HTTP, принимает URL напрямую; клиенты, ограниченные на stdio, используют мост `mcp-remote`, как в блоке Claude Desktop. Рукопожатие не требует ключа:
curl -s -X POST https://mcp.apitube.io/
-H "Content-Type: application/json"
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}},"id":1}'
{ "jsonrpc": "2.0", "result": { "protocolVersion": "2024-11-05", "serverInfo": { "name": "APITube News MCP-Server", "version": "1.0.0" }, "capabilities": { "tools": { "listChanged": true }, "prompts": { "listChanged": true } } } }
Реальный поиск добавляет ключ:
curl -s -X POST https://mcp.apitube.io/
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_KEY"
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search_news","arguments":{"title":"Bitcoin","language":{"code":"en"},"per_page":5}},"id":1}'
## Инструменты
| Инструмент | Заголовок | Вид | Что делает |
| --- | --- | --- | --- |
| search_news | Поиск новостей | чтение | Поиск статей по фильтрам News API |
| suggest | Разрешение ID таксономии | чтение | Приводит имя к идентификаторам сущности / категории / темы / отрасли |
### `search_news`
Аргументы — это **вложенные объекты**, а не строки с точками:
{ "language": { "code": "en" } } // ✅ { "language.code": "en" } // ❌ отклонено
Три вещи, которые стоит знать перед первым вызовом:
- **Тело статьи не возвращается по умолчанию.** По умолчанию возвращается список полей:
`id,title,href,published_at,description,source.domain`. Запрашивайте текст явно через
`fl: "title,href,body"`.
- **Одна выдача содержит не более 25 статей.** `per_page` по умолчанию 10 и ограничен до 25; переходите к `page` для прокрутки. Если результат нужно ещё сузить — 25 статей полного текста могут быть объёмными — в ответе появится поле `_mcp_truncated`, которое говорит, сколько статей было опущено.
- **Поиск по заголовку покрывает максимум 31 день.** Без указания дат он охватывает последние 31 день; более широкий диапазон без явной установки приводит к ошибке `400 ER0110`. Разделяйте большие периоды на окна по месяцам. Поиск без фильтра по заголовку ограничений по диапазону не имеет.
Ошибочные аргументы отклоняются с JSON-RPC `-32602` и подсказкой, а не молча игнорируются:
Unknown parameter 'langauge.code'. Did you mean 'language.code'?
`export`, `query` и `prompt` намеренно не доступны.
### `suggest`
Точные фильтры требуют IDs, которые вы не умеете угадать, поэтому их нужно определить заранее:
suggest({ type: "entities", prefix: "Tesla" }) // → [{ id: 474, name: "Tesla Robotaxi", type: "brand", … }, …]
search_news({ entity: { id: "474" }, language: { code: "en" } })
`type` — один из `entities`, `categories`, `topics`, `industries`; `prefix` — имя или его начало. Оба параметра обязательны. Сопоставление ведётся по префиксу, поэтому сначала читайте названия, прежде чем фильтровать по первому совпадению.
## Фильтры
Все ниже приведённое относится к `search_news`. Фильтры содержания, таксономии, языка, автора и источника имеют двойной дубль `ignore.*` для исключения (`ignore.title`, `ignore.entity.id`, `ignore.source.domain`, …); фильтры настроения, медиа и времени — нет. Мультивыбор принимает до 3 значений через запятую.
`has_*` и `is_*` принимают `0` или `1`, а не `true`/`false`.
Содержание и таксономия
| Аргумент | Пример |
| --- | --- |
| title | "Bitcoin" — до 3 ключевых слов через запятую, кавычки для точной фразы |
| category.id | "medtop:04000000" — IPTC таксономия |
| topic.id | "industry.crypto_news" — slug, из suggest |
| industry.id | "411" — числовой, из suggest |
| entity.id | "474" — из suggest |
| person.name · organization.name · location.name | "Elon Musk" · "Tesla,Apple" · "Tokyo" |
| brand.name · event.name · disaster.name · disease.name | "Nike" · "Olympics" · "Earthquake" · "COVID-19" |
| author.id · author.name · has_author | "123" · "Jane Smith" · 1 |
| language.code | "en,de,fr" |
Настроение
| Аргумент | Пример |
| --- | --- |
| sentiment.overall.polarity | "positive" | "negative" | "neutral" |
| sentiment.overall.score.{min,max} | -1.0 … 1.0 |
| sentiment.title.score · sentiment.body.score | тот же диапазон, заголовок или тело только |
| sentiment.mixed · sentiment.consistent | 1 — заголовок и текст расходятся / согласны |
Источники и качество
| Аргумент | Пример |
| --- | --- |
| source.domain · source.id | "cnn.com,bbc.com" · "314" |
| source.country.code | "us,uk,de" |
| source.bias | "left" | "center" | "right" |
| source.rank.opr.{min,max} | OpenPageRank, 0–7 |
| is_premium_source · is_verified_source | OPR ≥ 6 · OPR ≥ 5 |
| is_duplicate · is_paywall | 0 чтобы исключить |
Медиа, форма и время
| Аргумент | Пример |
| --- | --- |
| has_image · has_video · has_hq_images · is_media_rich | 1 |
| media.images.count.{min,max} · media.images.{width,height} · media.videos.count | { "min": 2 } |
| is_breaking · is_long_read · is_short_read | 1 — время чтения ≥ 5 мин |
Вывод: сортировка, пагинация, фасетирование, подсветка
| Аргумент | Пример |
| --- | --- |
| sort.by | published_at, relevance, engagement, quality, controversy, trust, source.rank.opr, sentiment.*.score, media.*, read_time, … |
| sort.order | "asc" | "desc" |
| page · per_page | 1 · 10 (max 25) |
| fl | "id,title,source.name,sentiment.overall.score" — точечная нотация для вложенных полей |
| facet | true, или { "field": "source.id,language.id", "limit": 20, "mincount": 5 } |
| facet.range | { "field": "published_at", "start": "2026-01-01", "end": "2026-12-31", "gap": "1MONTH" } |
| hl | true, или { "fl": "title,body", "fragsize": 300, "tag": { "pre": "", "post": "" } } |
## Подсказки
Команды слеш в клиентов, поддерживающих MCP prompts:
| Prompt | Arguments | Что делает |
| --- | --- | --- |
| monitor_company | company (required), days | Последнее освещение и настроение по одной компании |
| topic_sentiment | topic (required), language | Распределение настроения по теме |
| breaking_news | subject, country | Последние срочные новости, с опцией сужения |
| compare_coverage | subject_a, subject_b (both required) | Объём и настроение по двум темам одновременно |
## Использование
| Вы хотите | Попросить | Инструменты |
| --- | --- | --- |
| Отслеживать бренд на разных языках | упоминания компании с настроением, за последние 7 дней | suggest → search_news |
| Питчать торговую или риск-модель | новости по сущности и отрасли с рейтингами настроения | suggest → search_news |
| "Зафиксировать" агента на живых новостях | последние статьи с fl: "title,href,body" для RAG | search_news |
| Отслеживать развёртывающуюся историю | is_breaking: 1, сортировка по published_at | search_news |
| Измерять долю голоса (share of voice) | две темы по объёму и настроению | compare_coverage |
| Изучать архив | диапазон дат без фильтра по заголовку — без 31-дневного лимита | search_news |
## Ценообразование
Сервер MCP входит в платные планы; бесплатный тариф охватывает только REST API.
| План | Цена | Запросов | MCP-сервер |
| --- | --- | --- | --- |
| Free | $0 | 100/день | — |
| Starter | $29/мес | 10 000/мес | ✅ |
| Basic | $99/мес | 50 000/мес | ✅ |
| Professional | $199/мес | 150 000/мес | ✅ |
Ежегодная оплата даёт скидку 20%. Текущие цифры доступны на [apitube.io/pricing](https://apitube.io/pricing).
Размер страницы ограничен отдельно: через MCP одна выдача содержит максимум 25 статей на любом плане, независимо от большего значения `per_page`, доступного в REST API.
## Устранение неполадок
Блоки аутентификации и транспортные ошибки приходят как JSON-RPC `-32000` с кодом APITube в сообщении и соответствующим HTTP-статусом.
| Код | HTTP | Значение | Исправление |
| --- | --- | --- | --- |
| ER0201 | 401 | У сервер не дошёл API-ключ | Заголовок отсутствует, или клиент удаляет нестандартные заголовки — используйте мост mcp-remote |
| ER0202 | 401 | Ключ недействителен или отозван | Перепишите его на apitube.io |
| ER0230 | 401 | Ключ истёк | Продлите срок действия в настройках ключа |
| ER0601 / ER0602 | 403 | IP или реферер для этого ключа не разрешён | Скорректируйте ограничения ключа |
| ER0603 | 403 | Ключ не имеет доступа к этому инструменту | Предоставьте доступ к search_news / suggest |
| ER0429 | 429 | Более 120 запросов в минуту | Уменьшите скорость — ограничение по ключу |
| ER0900 | 503 | Валидация ключа временно недоступна | Повторите попытку; ключ в порядке, не выдавайте новый |
Другие симптомы
| Симптом | Причина |
| --- | --- |
| Клиент переподключается в цикле | Был открыт GET SSE-поток. Ожидается ответ сервера 405 Allow: POST, так как у сервера нет потока событий; корректные клиенты переходят к POST |
| -32602 с предложением имени | Ошибка ввода аргумента — аргументы вложены как объекты, а не ключи с точками |
| 403 из Python-скрипта | User-Agent по умолчанию для Python-urllib/3.x отклоняется на границе. Отправляйте реальный User-Agent, или используйте requests |
| Поиск не возвращает старую статью | Поиск по заголовку охватывает только 31 день. Добавьте published_at и проходите по месяцам |
| Статьи приходят без текста | Тело статья отключено по умолчанию. Добавьте fl: "title,href,body" |
## Документация
| Ресурс | Ссылка |
| --- | --- |
| Справочник по MCP server | https://docs.apitube.io/platform/news-api/ai/mcp-server |
| Настройка редактора, одноразовые ссылки установки | https://docs.apitube.io/platform/news-api/ai/code-editors |
| Все параметры News API | https://docs.apitube.io/platform/news-api/everything |
| Аутентификация | https://docs.apitube.io/platform/news-api/authentication |
| Машиночитаемая карточка сервера | https://docs.apitube.io/.well-known/mcp/server-card.json |
| Навык агента, SDK, миграционные наборы | https://github.com/apitube |
| Установка этого сервера как агента | llms-install.md |
## Registry
Публикуется в официальном MCP Registry по адресу
[server.json](https://github.com/apitube/news-api-mcp/blob/main/server.json) в этом репозитории:
mcp-name: io.apitube/news
См. больше в каталоге MCP Claude Market: https://www.claudemarket.ai/mcp.
## Поддержка
| Канал | Где |
| --- | --- |
| Ошибки и коррекции | открыть issue |
| Аккаунт и платежи | support@apitube.io |
| Всё остальное | https://apitube.io/contact |
Нашли аргумент, который ведёт себя иначе, чем написано здесь? Откройте issue с вашим запросом и полученным ответом — такие исправления полезнее всего подать.
## Лицензия
MIT — см. [LICENSE](https://github.com/apitube/news-api-mcp/blob/main/LICENSE).