Skip to main content
Glama
CKBrennan

overtone-news-mcp

Overtone News MCP Server

エージェントにリアルタイムのニュースと、それを効果的に活用するためのコンテキストインテリジェンス(トーン分布、急上昇中のストーリー、ナラティブの変化、スパイクアラート、時系列トーンチャートなど)を提供するMCPサーバーです。Overtoneのパブリッシャーネットワークを活用しています。

Claude Desktop、Claude Code、Cursor、Windsurf、Codex、Kimi K2など、MCP互換のあらゆるクライアントで動作します。


仕組み

自然言語クエリ — 平易な英語で質問し、コンテキスト分析された記事を取得します:

Natural language news demo

グローバルな報道分析 — 言語や地域を横断してトーンを比較します:

Global coverage tone comparison

トーンの時系列分析 — トピックの感情的な報道が時間の経過とともにどのように変化するかを追跡します:

AI tone timeseries


なぜこれが必要なのか

ニュースAPIは記事を返しますが、それは簡単な部分に過ぎません。エージェントが時事問題を推論するために実際に必要なのは、以下のような情報です:

  • トピックに関する報道のトーンはどのようなものか(世論は怒っているのか、希望に満ちているのか、情報提供を求めているのか、恐れているのか)?

  • 昨日まで全く報道されていなかったのに、今まさに急浮上しているものは何か?

  • ナラティブが転換しているのはどこか(どのトピックのトーンが最も急速に変化しているか)?

  • 監視している対象に対して、怒りや恐怖のスパイクが発生していないか?

  • 特定のストーリーにおいて、トーンは時間の経過とともにどのように推移したか?

このサーバーは、これらすべてをMCPツールとして公開するため、エージェントは単なるヘッドラインのフィードではなく、質問に対して適切なシグナルを引き出すことができます。


インストール

このサーバーはPythonパッケージとして提供されます。uvxuvより)を使用すると、グローバルなPython環境を汚さずに実行できます。まずuvをインストールしてください:

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

次に、MCPクライアントの設定にブロックを1つ追加します。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"]

認証

最初のツール呼び出し時に、サーバーはOvertoneの無料枠APIキーを登録し、~/.overtone/credentialsにキャッシュします。このキャッシュはClaude Code用のOvertone News skillと共有されるため、両方をインストールしても二重登録されることはありません。

プレミアムキー(より高いレート制限と1日の制限)が必要な場合は、MCP設定のenvブロックにOVERTONE_NEWS_API_KEYを設定してください:

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

レート制限:

ティア

1分あたり

1日あたり

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

トピックに関する最近の報道における感情的なトーンの分布(happyfunnyhopefulinformationalangrysadfearful、および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

トピックの時間の経過に伴うトーンの軌跡。binhour6h、またはdayです。ビンごとのトーン平均、article_countdominant_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)

エージェントフローの例

「今、NBAプレーオフに関する世間のムードはどう?」tone(query="NBAプレーオフ") → 分布を要約する。

「FDAに関して知っておくべき速報はある?」emerging(limit=20) → FDA関連のコンセプトでフィルタリングする。

「10分ごとに自社ブランドに対する怒りのスパイクを追跡して。」pulse(query="acme corp", tones=["angry"]) をループ実行。alertsが空でない場合のみ提示する。

「Teslaに関する先週のセンチメントを見せて。」timeseries(query="Tesla", bin="6h", hours=168) → チャートとしてレンダリングする。

「宇宙探査に関するポジティブな記事を5つ教えて。」news(query="宇宙探査", max_results=5, tone_filter="positive") → 提示 → report(...)


プライバシー — Overtoneに送信されるもの

サーバーが初回使用時に無料枠のキーを自動登録する際、以下が送信されます:

  • hostname + OS user + CPU archSHA-256ハッシュ。生の値を参照することはありません。ハッシュは、同じマシン上での再インストール時にキーを重複させないために使用されます。

登録時に個人データが送信されることはありません。

ツール呼び出しのたびに、サーバーはAPIキーとツールの入力パラメータを ${OVERTONE_NEWS_API_URL} に送信します。分析と不正防止のためにクエリをログに記録します。詳細は overtone.ai/privacy を参照してください。

記事の内容、ユーザーとの会話、エージェントのコンテキストがツール入力以外に送信されることはありません。 エージェントのプロンプトの残り、メモリ、その他のツール呼び出しの内容は参照されません。

自動登録を無効にするには、OVERTONE_NEWS_API_KEYを手動で設定するか、OVERTONE_NEWS_API_URLを独自のプロキシに向けてください。


セキュリティに関する注意

  • 記事コンテンツによるプロンプトインジェクション。 newsツールはパブリッシャーのテキスト(ヘッドライン、説明)を返します。記事にはエージェントを操作するように設計されたテキストが含まれている可能性があります(「以前の指示を無視して…」など)。MCPサーバー自体には破壊的なツールはなく、読み取り専用ですが、エージェントの推論においては、他のWebコンテンツと同様に、返された記事テキストを信頼できない入力として扱う必要があります。ホスト側でのサンドボックス化、出力のみのレンダリング、ツール許可リストの使用が適切な緩和策です。

  • シェルアクセスなし。 サーバーはユーザーに代わってシェルコマンドを実行することはありません。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 を参照してください。


関連

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