Skip to main content
Glama
CKBrennan

overtone-news-mcp

Overtone News MCP 服务器

一个 MCP 服务器,为任何智能体提供实时新闻以及有效利用新闻的上下文智能——包括语调分布、新兴故事、叙事转变、突发警报和语调随时间变化的图表,由 Overtone 的发布者网络提供支持。

适用于任何兼容 MCP 的客户端:Claude Desktop、Claude Code、Cursor、Windsurf、Codex、Kimi K2 等。


功能展示

自然语言查询 — 用简单的英语提问,获取经过上下文分析的文章:

自然语言新闻演示

全球报道分析 — 比较不同语言和地区的语调:

全球报道语调比较

语调时间序列 — 追踪某个主题的情感报道如何随时间变化:

AI 语调时间序列


为什么需要它

新闻 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"]

认证

在首次调用工具时,服务器会向 Overtone 注册一个免费层级的 API 密钥,并将其缓存到 ~/.overtone/credentials。该缓存与 Overtone News skill(用于 Claude Code)共享,因此同时安装两者不会重复注册。

如需高级密钥(更高的速率和每日限制),请在 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-..." }
}

速率限制:

层级

每分钟

每天

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。仅当 spike_ratio >= 1.5 且具有显著数量时,才会填充 alerts

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 可以是 hour6hday。返回按 bin 分组的语调平均值、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 playoffs") → 总结分布情况。

“关于 FDA 有什么我应该知道的突发新闻吗?”emerging(limit=20) → 过滤与 FDA 相关的概念。

“每 10 分钟追踪一次我们品牌下的愤怒激增情况。” → 循环执行 pulse(query="acme corp", tones=["angry"]);仅在 alerts 非空时展示。

“向我展示过去一周关于特斯拉的情绪趋势。”timeseries(query="Tesla", bin="6h", hours=168) → 渲染为图表。

“给我 5 个关于太空探索的正面报道。”news(query="space exploration", 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 服务器本身没有破坏性工具——它只读取——但你应该像对待任何网络内容一样,将返回的文章文本视为智能体推理中的不可信输入。沙箱化、仅输出渲染以及主机中的工具允许列表是正确的缓解措施。

  • 无 Shell 访问权限。 服务器从不代表用户执行 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


相关

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