overtone-news-mcp
Servidor MCP de Overtone News
Un servidor MCP que proporciona a cualquier agente noticias en tiempo real además de la inteligencia contextual para utilizarlas correctamente: distribución de tono, historias emergentes, cambios narrativos, alertas de picos y gráficos de tono a lo largo del tiempo, todo ello impulsado por la red de editores de Overtone.
Funciona con cualquier cliente compatible con MCP: Claude Desktop, Claude Code, Cursor, Windsurf, Codex, Kimi K2 y más.
Cómo se ve
Consultas en lenguaje natural — pregunta en inglés sencillo y obtén artículos analizados contextualmente:

Análisis de cobertura global — compara el tono entre idiomas y regiones:

Series temporales de tono — rastrea cómo cambia la cobertura emocional de un tema a lo largo del tiempo:

Por qué existe esto
Las API de noticias devuelven artículos. Esa es la parte fácil. La parte difícil es todo lo que un agente realmente necesita para razonar sobre los eventos actuales:
¿Cuál es el tono de la cobertura sobre un tema? ¿El estado de ánimo público es de enfado, esperanza, informativo o miedo?
¿Qué está emergiendo ahora mismo que no tuvo cobertura ayer?
¿Dónde está cambiando la narrativa? ¿Qué temas están cambiando de tono más rápido?
¿Hay un pico de enfado o miedo en torno a algo que estoy observando?
¿Cómo ha evolucionado el tono a lo largo del tiempo en una historia determinada?
Este servidor expone todo eso como herramientas MCP, para que un agente pueda extraer la señal correcta para la pregunta que se le ha hecho, no solo un flujo plano de titulares.
Instalación
El servidor se distribuye como un paquete de Python. uvx (de uv) lo ejecuta sin saturar tu Python global. Instala uv una vez:
curl -LsSf https://astral.sh/uv/install.sh | shLuego añade un bloque a la configuración de tu cliente MCP. uvx obtiene el paquete de PyPI y lo ejecuta bajo demanda; no se necesita ningún paso de instalación.
Claude Desktop
Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o el equivalente en tu plataforma:
{
"mcpServers": {
"overtone-news": {
"command": "uvx",
"args": ["overtone-news-mcp"]
}
}
}Claude Code
Edita ~/.config/claude-code/mcp.json:
{
"mcpServers": {
"overtone-news": {
"command": "uvx",
"args": ["overtone-news-mcp"]
}
}
}Cursor / Windsurf
Configuración → MCP → Añadir servidor:
Comando:
uvxArgumentos:
overtone-news-mcp
Codex
Edita ~/.codex/config.toml:
[[mcp_servers]]
name = "overtone-news"
command = "uvx"
args = ["overtone-news-mcp"]Autenticación
En la primera llamada a la herramienta, el servidor registra una clave API de nivel gratuito con Overtone y la almacena en caché en ~/.overtone/credentials. La caché se comparte con la habilidad Overtone News para Claude Code, por lo que instalar ambos no registrará doblemente.
Para obtener una clave premium (límites diarios y de tasa más altos), establece OVERTONE_NEWS_API_KEY en el bloque env de tu configuración 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-..." }
}Límites de tasa:
Nivel | Por minuto | Por día |
| 10 | 50 |
| 60 | prácticamente ilimitado |
Para solicitar una clave premium, envía un correo electrónico a business@overtone.ai.
Variables de entorno
Variable | Predeterminado | Propósito |
| (registrado automáticamente) | Usar una clave específica en lugar de registrar automáticamente |
|
| Sobrescribir el punto final de la API (para autoalojamiento o pruebas) |
Herramientas
Todas las herramientas devuelven JSON. El agente elige qué herramienta se ajusta a la pregunta del usuario; no las invocas directamente.
news
Artículos sobre un tema, cada uno etiquetado con tono, señales de seguridad de marca, tipo de artículo y conceptos. Úsalo para "qué está pasando con X".
news(query="AI regulation in Europe", max_results=10, days=7,
tone_filter="informational", brand_safe_only=True)La respuesta incluye un request_id: pásalo de vuelta a report después de presentar los artículos para que sepamos qué se mostró realmente.
tone
Distribución del tono emocional en la cobertura reciente de un tema: happy (feliz), funny (divertido), hopeful (esperanzador), informational (informativo), angry (enfadado), sad (triste), fearful (temeroso), además del dominant_tone (tono dominante).
tone(query="climate change", days=3)Úsalo cuando el usuario pregunte cómo se está cubriendo un tema, no qué sucedió.
pulse
Detector de picos consultable. Para cada tono observado (predeterminado angry / sad / fearful), devuelve spike_ratio frente a una ventana de referencia y un booleano spiking. alerts solo se completa cuando spike_ratio >= 1.5 con un volumen significativo.
pulse(query="acme corp", tones=["angry", "fearful"],
recent_hours=6, baseline_hours=72)Destinado a consultas cada 5-15 minutos. Muéstralo al usuario solo cuando alerts no esté vacío.
emerging
Conceptos que aparecieron en las últimas 24 horas y que tuvieron cero cobertura en las 48 horas anteriores: historias emergentes candidatas. Filtrado por clúster a ≥3 artículos y ≥2 fuentes para que el ruido de un solo artículo no se filtre.
emerging(limit=10)velocity
Conceptos cuya distribución de tono ha cambiado más drásticamente entre las 48 horas anteriores y las últimas 24 horas. Responde a "¿dónde está cambiando la narrativa?". Clasificado por distancia L2 normalizada por forma, por lo que un aumento de volumen uniforme no se registra como un cambio.
velocity(limit=10)timeseries
Trayectoria del tono a lo largo del tiempo para un tema. bin es hour (hora), 6h o day (día). Devuelve una serie ordenada de promedios de tono por bin, article_count y dominant_tone.
timeseries(query="federal reserve", bin="6h", hours=168)Se representa mejor como un gráfico de líneas Mermaid o un sparkline ASCII.
report
Se llama silenciosamente después de que el agente presenta los artículos al usuario, para registrar qué displayed_urls mostró realmente. Ayuda a Overtone a entender qué contenido es más valioso para los clientes agentes.
report(request_id="<from news response>",
displayed_urls=[...], displayed_count=3,
sponsorship_displayed=False)Ejemplos de flujos de agentes
"¿Cuál es el estado de ánimo en torno a los playoffs de la NBA ahora mismo?"
→ tone(query="NBA playoffs") → resume la distribución.
"¿Hay algo importante sobre la FDA que deba saber?"
→ emerging(limit=20) → filtra conceptos relacionados con la FDA.
"Rastrea los picos de enfado en nuestra marca cada 10 minutos."
→ pulse(query="acme corp", tones=["angry"]) en un bucle; muestra solo cuando alerts no esté vacío.
"Muéstrame la última semana de sentimiento sobre Tesla."
→ timeseries(query="Tesla", bin="6h", hours=168) → renderiza como gráfico.
"Dame 5 historias positivas sobre la exploración espacial."
→ news(query="space exploration", max_results=5, tone_filter="positive")
→ presenta → report(...).
Privacidad: qué se envía a Overtone
Cuando el servidor registra automáticamente una clave de nivel gratuito en el primer uso, envía:
Un hash SHA-256 de
hostname + OS user + CPU arch. Nunca vemos los valores sin procesar; el hash se utiliza para desduplicar claves entre reinstalaciones en la misma máquina.
No se transmiten datos personales durante el registro.
En cada llamada a la herramienta, el servidor envía la clave API y los parámetros de entrada de la herramienta a ${OVERTONE_NEWS_API_URL}. Registramos consultas para análisis y prevención de abusos; consulta overtone.ai/privacy.
No se envía ningún contenido de artículo, conversación de usuario o contexto de agente más allá de las entradas de la herramienta. No vemos el resto del prompt, la memoria u otras llamadas a herramientas de tu agente.
Para optar por no participar en el registro automático, establece OVERTONE_NEWS_API_KEY manualmente con una clave que hayas solicitado, o apunta OVERTONE_NEWS_API_URL a tu propio proxy.
Notas de seguridad
Inyección de prompt a través del contenido del artículo. La herramienta
newsdevuelve texto del editor (titulares, descripciones). Un artículo podría contener texto diseñado para manipular a un agente ("ignora las instrucciones anteriores y..."). El servidor MCP en sí no tiene herramientas destructivas (solo lee), pero debes tratar el texto del artículo devuelto como una entrada no confiable en el razonamiento de tu agente, de la misma manera que tratarías cualquier contenido web. El sandboxing, la renderización solo de salida y las listas de permitidos de herramientas en el host son las mitigaciones correctas.Sin acceso a shell. El servidor nunca ejecuta comandos de shell en nombre del usuario. El único uso de
subprocesses leergit config --global user.{name,email}durante el registro.Sin acceso al sistema de archivos más allá de
~/.overtone/credentials. El servidor no lee ni escribe ningún otro archivo local.
Desarrollo
git clone https://github.com/CKBrennan/overtone-news-mcp
cd overtone-news-mcp
uv sync
uv run overtone-news-mcpApúntalo a una API que no sea de producción mientras desarrollas:
OVERTONE_NEWS_API_URL=http://localhost:8080 uv run overtone-news-mcpLicencia
MIT: consulta LICENSE.
Relacionado
overtone-news-skill — Versión de habilidad de Claude Code (comparte credenciales)
overtone.ai — la inteligencia detrás de la API
Appeared in Searches
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