Skip to main content
Glama
CKBrennan

overtone-news-mcp

MCP-сервер Overtone News

MCP-сервер, который предоставляет любому агенту новости в реальном времени, а также контекстную аналитику для их эффективного использования — распределение тональности, новые темы, сдвиги в повествовании, оповещения о всплесках и графики изменения тональности во времени, работающий на базе издательской сети Overtone.

Работает с любым MCP-совместимым клиентом: Claude Desktop, Claude Code, Cursor, Windsurf, Codex, Kimi K2 и другими.


Как это выглядит

Запросы на естественном языке — спрашивайте на обычном английском, получайте контекстно-анализированные статьи:

Демонстрация новостей на естественном языке

Анализ глобального охвата — сравнивайте тональность по языкам и регионам:

Сравнение тональности глобального охвата

Временные ряды тональности — отслеживайте, как эмоциональный окрас темы меняется с течением времени:

Временные ряды тональности ИИ


Зачем это нужно

Новостные API возвращают статьи. Это простая часть. Сложная часть — это всё то, что на самом деле нужно агенту для анализа текущих событий:

  • Какова тональность освещения темы — общественное настроение гневное, обнадеживающее, информативное, пугающее?

  • Что появляется прямо сейчас, чего вчера вообще не было в новостях?

  • Где происходит поворот в повествовании — какие темы меняют тональность быстрее всего?

  • Есть ли всплеск гнева или страха вокруг того, за чем я слежу?

  • Как менялась тональность с течением времени по конкретной истории?

Этот сервер предоставляет всё это в виде инструментов MCP, чтобы агент мог извлечь нужный сигнал для ответа на заданный вопрос, а не просто получить плоскую ленту заголовков.


Установка

Сервер поставляется как пакет Python. uvx (из uv) запускает его, не загромождая ваш глобальный Python. Установите uv один раз:

curl -LsSf https://astral.sh/uv/install.sh | sh

Затем добавьте один блок в конфигурацию вашего MCP-клиента. uvx загружает пакет из PyPI и запускает его по требованию — этап установки не требуется.

Claude Desktop

Отредактируйте ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или эквивалентный файл на вашей платформе:

{
  "mcpServers": {
    "overtone-news": {
      "command": "uvx",
      "args": ["overtone-news-mcp"]
    }
  }
}

Claude Code

Отредактируйте ~/.config/claude-code/mcp.json:

{
  "mcpServers": {
    "overtone-news": {
      "command": "uvx",
      "args": ["overtone-news-mcp"]
    }
  }
}

Cursor / Windsurf

Настройки → MCP → Добавить сервер:

  • Команда: uvx

  • Аргументы: overtone-news-mcp

Codex

Отредактируйте ~/.codex/config.toml:

[[mcp_servers]]
name = "overtone-news"
command = "uvx"
args = ["overtone-news-mcp"]

Авторизация

При первом вызове инструмента сервер регистрирует бесплатный API-ключ в Overtone и кэширует его в ~/.overtone/credentials. Кэш является общим с навыком Overtone News для Claude Code, поэтому установка обоих не приведет к двойной регистрации.

Для получения премиум-ключа (более высокие лимиты по количеству запросов и дневные лимиты) установите OVERTONE_NEWS_API_KEY в блоке env вашей конфигурации MCP:

"overtone-news": {
  "command": "uvx",
  "args": ["--from", "git+https://github.com/CKBrennan/overtone-news-mcp", "overtone-news-mcp"],
  "env": { "OVERTONE_NEWS_API_KEY": "ot-prod-..." }
}

Лимиты:

Уровень

В минуту

В день

auto (бесплатный, авто-выдача)

10

50

manual (премиум)

60

практически неограничен

Чтобы запросить премиум-ключ, напишите на business@overtone.ai.


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

Переменная

По умолчанию

Назначение

OVERTONE_NEWS_API_KEY

(авто-регистрация)

Использовать конкретный ключ вместо авто-регистрации

OVERTONE_NEWS_API_URL

https://agentic-skills.overtone.ai

Переопределить API-эндпоинт (для собственного хостинга или тестирования)


Инструменты

Все инструменты возвращают JSON. Агент сам выбирает, какой инструмент подходит для вопроса пользователя — вы не вызываете их напрямую.

news

Статьи по теме, каждая помечена тональностью, сигналами безопасности бренда, типом статьи и концепциями. Используйте для запросов типа "что происходит с X".

news(query="AI regulation in Europe", max_results=10, days=7,
     tone_filter="informational", brand_safe_only=True)

Ответ включает request_id — передайте его обратно в report после представления статей, чтобы мы знали, что именно было показано.

tone

Распределение эмоциональной тональности в недавнем освещении темы — happy (счастливый), funny (забавный), hopeful (обнадеживающий), informational (информативный), angry (гневный), sad (грустный), fearful (пугающий), плюс dominant_tone (доминирующая тональность).

tone(query="climate change", days=3)

Используйте, когда пользователь спрашивает, как освещается тема, а не что произошло.

pulse

Детектор всплесков. Для каждой отслеживаемой тональности (по умолчанию angry / sad / fearful) возвращает spike_ratio относительно базового окна и логическое значение spiking. alerts заполняется только тогда, когда spike_ratio >= 1.5 при значимом объеме.

pulse(query="acme corp", tones=["angry", "fearful"],
      recent_hours=6, baseline_hours=72)

Предназначен для опроса каждые 5–15 минут. Показывайте пользователю только тогда, когда alerts не пуст.

emerging

Концепции, появившиеся за последние 24 часа, которые не упоминались в предыдущие 48 часов — кандидаты в новые истории. Отфильтровано по кластерам (≥3 статьи и ≥2 источника), чтобы шум от одиночных статей не просачивался.

emerging(limit=10)

velocity

Концепции, распределение тональности которых наиболее резко изменилось между предыдущими 48 часами и последними 24 часами. Отвечает на вопрос "где происходит поворот в повествовании?". Ранжировано по L2-расстоянию, нормализованному по форме, поэтому равномерный рост объема не регистрируется как сдвиг.

velocity(limit=10)

timeseries

Траектория тональности во времени для темы. bin может быть hour (час), 6h (6 часов) или day (день). Возвращает упорядоченный ряд средних значений тональности по бинам, article_count и dominant_tone.

timeseries(query="federal reserve", bin="6h", hours=168)

Лучше всего отображать в виде линейного графика Mermaid или спарклайна ASCII.

report

Вызывается молча после того, как агент представил статьи пользователю, чтобы залогировать, какие displayed_urls он действительно показал. Помогает Overtone понять, какой контент наиболее ценен для агентских клиентов.

report(request_id="<from news response>",
       displayed_urls=[...], displayed_count=3,
       sponsorship_displayed=False)

Примеры сценариев агента

"Какое настроение вокруг плей-офф НБА прямо сейчас?"tone(query="NBA playoffs") → резюмировать распределение.

"Есть ли что-то важное по FDA, о чем мне стоит знать?"emerging(limit=20) → отфильтровать концепции, связанные с FDA.

"Отслеживай всплески гнева по нашему бренду каждые 10 минут."pulse(query="acme corp", tones=["angry"]) в цикле; показывать только когда alerts не пуст.

"Покажи мне настроения по Tesla за последнюю неделю."timeseries(query="Tesla", bin="6h", hours=168) → отобразить как график.

"Дай мне 5 позитивных историй об освоении космоса."news(query="space exploration", max_results=5, tone_filter="positive") → представить → report(...).


Конфиденциальность — что отправляется в Overtone

Когда сервер автоматически регистрирует ключ бесплатного уровня при первом использовании, он отправляет:

  • SHA-256 хэш от имя хоста + пользователь ОС + архитектура процессора. Мы никогда не видим исходные значения; хэш используется для дедупликации ключей при переустановке на одной и той же машине.

При регистрации личные данные не передаются.

При каждом вызове инструмента сервер отправляет API-ключ и входные параметры инструмента на ${OVERTONE_NEWS_API_URL}. Мы логируем запросы для аналитики и предотвращения злоупотреблений; см. overtone.ai/privacy.

Никакое содержимое статей, разговоры пользователей или контекст агента никогда не отправляются за пределы входных данных инструмента. Мы не видим остальную часть промпта вашего агента, его память или другие вызовы инструментов.

Чтобы отказаться от авто-регистрации, установите OVERTONE_NEWS_API_KEY вручную на ключ, который вы запросили, или укажите OVERTONE_NEWS_API_URL на свой собственный прокси.


Заметки по безопасности

  • Промпт-инъекции через содержимое статей. Инструмент news возвращает текст издателя (заголовки, описания). Статья может содержать текст, предназначенный для манипуляции агентом ("игнорируй предыдущие инструкции и…"). Сам MCP-сервер не имеет деструктивных инструментов — он только читает — но вы должны относиться к возвращенному тексту статьи как к недоверенному вводу в рассуждениях вашего агента, так же, как вы относились бы к любому веб-контенту. Песочницы, рендеринг только вывода и списки разрешенных инструментов в хосте являются правильными мерами защиты.

  • Нет доступа к оболочке (shell). Сервер никогда не выполняет команды оболочки от имени пользователя. Единственное использование subprocess — это чтение git config --global user.{name,email} во время регистрации.

  • Нет доступа к файловой системе, кроме ~/.overtone/credentials. Сервер не читает и не записывает никакие другие локальные файлы.


Разработка

git clone https://github.com/CKBrennan/overtone-news-mcp
cd overtone-news-mcp
uv sync
uv run overtone-news-mcp

Укажите на непроизводственный API во время разработки:

OVERTONE_NEWS_API_URL=http://localhost:8080 uv run overtone-news-mcp

Лицензия

MIT — см. LICENSE.


Связанные проекты

  • overtone-news-skill — версия навыка для Claude Code (использует общие учетные данные)

  • overtone.ai — интеллект, стоящий за API

  • MCP Badge

Install Server
A
license - permissive license
A
quality
C
maintenance

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/CKBrennan/overtone-news-mcp'

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