Skip to main content
Glama
stature

TheNewsAPI MCP Server

by stature

TheNewsAPI MCP Server

Un servidor MCP que expone los endpoints de lectura de TheNewsAPI.com como herramientas, para que un asistente de IA (Claude Code, Claude Desktop o cualquier cliente MCP) pueda consultar artículos de noticias a partir de indicaciones en lenguaje natural.

Esto apunta a TheNewsAPI.com (https://api.thenewsapi.com/v1/) — no al servicio newsapi.org, que no está relacionado.

Paquete npm: @trifecta/thenewsapi-mcp-server (aún no publicado).

Herramientas

Herramienta

Endpoint

Propósito

search_news

GET /v1/news/all

Búsqueda de palabras clave/booleana en todo el archivo de artículos.

get_top_stories

GET /v1/news/top

Principales noticias / tendencias actuales, opcionalmente por locale.

get_headlines

GET /v1/news/headlines

Titulares actuales agrupados por categoría.

get_similar_articles

GET /v1/news/similar/{uuid}

Otras coberturas de la misma historia que un artículo dado.

get_article_by_uuid

GET /v1/news/uuid/{uuid}

Obtener un artículo por su UUID.

list_sources

GET /v1/news/sources

Enumerar los medios indexados y sus source_ids.

Sintaxis de búsqueda booleana (parámetro search)

search_news y get_top_stories aceptan una consulta booleana:

Operador

Significado

Ejemplo

+

el término es obligatorio (AND)

+bitcoin +etf

|

un término u otro (OR)

apple | microsoft

-

excluir término

+tesla -musk

"..."

frase exacta

+"artificial intelligence"

( )

agrupar

(tesla | rivian) +earnings

Las palabras separadas por espacios sin operador se tratan como OR.

Requisitos

  • Node.js 18 o superior (el SDK de MCP y el fetch nativo utilizado para las llamadas HTTP ambos lo requieren). Compruébalo con node --version; actualiza mediante nvm (nvm install 20 && nvm use 20) o nodejs.org.

  • Una cuenta de TheNewsAPI gratuita o de pago.

Cómo obtener un token de API

  1. Regístrate en https://www.thenewsapi.com/register.

  2. Abre tu panel de control: https://www.thenewsapi.com/account/dashboard.

  3. Copia el token de API.

Notas sobre el plan gratuito: el nivel gratuito limita limit a 3 artículos por solicitud y tiene una cuota mensual baja; algunos endpoints/parámetros son solo de pago y devolverán endpoint_access_restricted.

El token lo proporciona cada usuario en tiempo de ejecución mediante la variable de entorno NEWS_API_TOKEN. Nunca se incluye en el paquete ni el servidor lo registra.


Instalación y configuración — paquete publicado (para usuarios finales, una vez en npm)

No se necesita clonar ni compilar. Apunta tu cliente MCP al paquete mediante npx.

Claude Code

claude mcp add thenewsapi \
  --env NEWS_API_TOKEN=your_token_here \
  -- npx -y @trifecta/thenewsapi-mcp-server

Luego ejecuta claude, revisa /mcpthenewsapi debería estar conectado con 6 herramientas.

Claude Desktop

Edita claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "thenewsapi": {
      "command": "npx",
      "args": ["-y", "@trifecta/thenewsapi-mcp-server"],
      "env": { "NEWS_API_TOKEN": "your_token_here" }
    }
  }
}

Reinicia Claude Desktop.

Alternativa de instalación global

npm install -g @trifecta/thenewsapi-mcp-server
# then use command "thenewsapi-mcp-server" instead of "npx -y @trifecta/..."

Configuración de desarrollo local (mientras no esté publicado)

git clone https://github.com/stature/trifecta-thenewsapi-mcp-server.git
cd trifecta-thenewsapi-mcp-server

npm install
cp .env.example .env
# edit .env and set NEWS_API_TOKEN=...

npm run build

.env está en gitignore: guarda el token real ahí, nunca en .env.example.

Comprobación rápida de que arranca:

npm start
# -> "[thenewsapi-mcp] server ready (stdio)" on stderr, then Ctrl-C

Apunta Claude Code a tu compilación local:

claude mcp add thenewsapi \
  --env NEWS_API_TOKEN=your_token_here \
  -- node /absolute/path/to/newsapi-mcp/dist/index.js

O directamente el JSON de configuración (~/.claude.json, o .mcp.json en un proyecto):

{
  "mcpServers": {
    "thenewsapi": {
      "command": "node",
      "args": ["/absolute/path/to/newsapi-mcp/dist/index.js"],
      "env": { "NEWS_API_TOKEN": "your_token_here" }
    }
  }
}

Despliegue remoto — Streamable HTTP (SecureAI / HatzAI y otros clientes MCP HTTP)

Este paquete incluye dos puntos de entrada:

Punto de entrada

Transporte

Uso con

dist/index.js (npm start)

stdio

Claude Code / Claude Desktop (el cliente lo ejecuta localmente)

dist/http.js (npm run start:http)

Streamable HTTP

SecureAI / HatzAI, o cualquier cliente que acepte una URL de servidor

El servidor HTTP mantiene NEWS_API_TOKEN completamente en el lado del servidor; los clientes remotos se autentican con un secreto compartido separado (MCP_AUTH_TOKEN) y nunca ven el token de TheNewsAPI.

Configuración (variables de entorno)

Variable

Obligatoria

Por defecto

Propósito

NEWS_API_TOKEN

Token de TheNewsAPI (solo en el servidor).

MCP_AUTH_TOKEN

recomendada

(ninguno)

Secreto compartido que los clientes deben enviar. Sin definir = sin autenticación.

MCP_API_KEY_HEADER

no

x-api-key

Cabecera aceptada para autenticación tipo "API Key".

MCP_HTTP_PORT

no

3000

Puerto de escucha (PORT también se tiene en cuenta).

MCP_HTTP_HOST

no

127.0.0.1

Dirección de enlace: mantenla en loopback detrás de un proxy TLS.

MCP_HTTP_PATH

no

/mcp

Ruta en la que se sirve el endpoint de MCP.

MCP_CORS_ORIGIN

no

(ninguno)

Defínelo como un origen o * para emitir cabeceras CORS.

GET /healthz es una sonda de actividad sin autenticación.

Apunta SecureAI / HatzAI a él

En el formulario de conexión personalizado:

Campo

Valor

URL de servidor

https://your-domain.example/mcp (debe ser HTTPS en producción)

Transporte

Streamable HTTP

Método de autenticación

Bearer Token → token = el valor de tu MCP_AUTH_TOKEN

o API Key → clave = el valor de tu MCP_AUTH_TOKEN, enviada como X-API-Key

o None → solo si MCP_AUTH_TOKEN no está definido y la URL no es pública

Pruébalo primero localmente

cp .env.example .env
# set NEWS_API_TOKEN=... and MCP_AUTH_TOKEN=some-long-random-string
npm run dev:http
# -> [thenewsapi-mcp] Streamable HTTP listening on http://127.0.0.1:3000/mcp (auth: required)
# handshake check
curl -sD- http://127.0.0.1:3000/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'authorization: Bearer some-long-random-string' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
# 200 + an `mcp-session-id` response header + the server capabilities

Despliegue en una VM "Always Free" de Oracle Cloud + Caddy

El host recomendado: una VM gratuita y siempre activa con Caddy que termina TLS (certificados automáticos de Let's Encrypt) y hace de proxy inverso hacia el proceso de Node gestionado por systemd.

Las plantillas de configuración están en deploy/:

  • deploy/Caddyfile/etc/caddy/Caddyfile

  • deploy/thenewsapi-mcp.service/etc/systemd/system/

  • deploy/env.production.example/opt/thenewsapi-mcp/.env

Guía paso a paso completa (creación de la VM, ambos cortafuegos de Oracle, DNS, TLS, verificación): deploy/README.md. Resumen:

  1. Crea una instancia VM.Standard.A1.Flex (Ampere) de Ubuntu 22.04; reserva su IP pública.

  2. Abre TCP 80 + 443 en ambas: la lista de seguridad de la VCN y el iptables de la instancia.

  3. Instala Node 20 (NodeSource) y Caddy (apt).

  4. Apunta un registro A de un dominio a la VM.

  5. Clona en /opt/thenewsapi-mcp, ejecuta npm ci && npm run build, crea .env (con un valor openssl rand -hex 32 para MCP_AUTH_TOKEN), chmod 600.

  6. Instala la unidad de systemd: systemctl enable --now thenewsapi-mcp.

  7. Instala el Caddyfile (sustituye por tu dominio), systemctl restart caddy.

  8. Verifica https://your-domain/mcp con el handshake curl anterior y luego añádelo a SecureAI.

¿No tienes dominio? El Apéndice A de deploy/README.md cubre un hostname gratuito de DuckDNS.

Nota sobre escalado: las sesiones se mantienen en memoria en un solo proceso — perfecto para una única VM siempre activa. Varias instancias necesitarían enrutamiento de sesiones persistentes (sticky sessions).

Ejemplos de indicaciones

  • "Busca en las noticias artículos sobre la Ley de IA de la UE de las últimas dos semanas, solo en inglés."

  • "¿Cuáles son las principales noticias de negocios en EE. UU. en este momento?"

  • "Dame un resumen de noticias — titulares de tecnología, negocios y ciencia."

  • "Encuentra cobertura de +\"interest rate\" +\"Federal Reserve\" -crypto ordenada por relevancia."

  • "Obtén todo de nytimes.com y bbc.com sobre la misión de retorno de muestras de Marte."

  • "Aquí tienes un UUID de artículo abc-123 — encuentra otros medios que cubran la misma historia."

  • "Enumera las fuentes de noticias a las que puedes acceder en la categoría tech."

  • "Obtén el artículo completo con UUID abc-123."

Manejo de errores

Los códigos de error documentados de TheNewsAPI se devuelven al asistente con orientación y un indicador de si se puede reintentar:

Código

Reintentable

Significado

malformed_parameters

no

Nombre/formato de parámetro incorrecto: corrígelo y reintenta.

invalid_api_token

no

NEWS_API_TOKEN ausente o no válido.

usage_limit_reached

no

Cuota mensual agotada.

endpoint_access_restricted

no

No disponible en el plan actual.

resource_not_found

no

El UUID / recurso no existe.

rate_limit_reached

Límite de peticiones por segundo: espera y reintenta.

server_error

Error transitorio del servidor upstream.

maintenance_mode

API temporalmente caída.

Estructura del proyecto

src/
  index.ts              stdio entrypoint (Claude Code / Desktop)
  http.ts               Streamable HTTP entrypoint (SecureAI / remote clients) + auth
  server.ts             shared McpServer factory used by both entrypoints
  client.ts             API client wrapper: base URL, auth, query building, error mapping
  errors.ts             NewsApiError + documented error-code translation
  schemas.ts            Shared zod schema fragments (filters, pagination, search help)
  tools/
    shared.ts           safeHandler wrapper + JSON result formatter
    search-news.ts
    get-top-stories.ts
    get-headlines.ts
    get-similar-articles.ts
    get-article-by-uuid.ts
    list-sources.ts

La salida compilada va a dist/. Solo se incluyen dist/, README.md y LICENSE en el paquete publicado (consulta files en package.json).

Scripts

Script

Acción

npm run build

Compila TypeScript a dist/.

npm run watch

Recompila al cambiar.

npm run typecheck

Comprueba tipos sin emitir.

npm run clean

Elimina dist/.

npm start

Ejecuta el servidor stdio compilado.

npm run start:http

Ejecuta el servidor Streamable HTTP compilado.

npm run dev

Compila y luego ejecuta (stdio).

npm run dev:http

Compila y luego ejecuta (HTTP).

prepublishOnly

Ejecuta automáticamente clean + build antes de npm publish.

Publicación

npm run typecheck
npm publish            # scoped package; publishConfig.access is already "public"

Antes de la primera publicación: asegúrate de ser miembro de la organización npm @trifecta. Repo: https://github.com/stature/trifecta-thenewsapi-mcp-server.

Versionado: comienza en 0.1.0 (pre-1.0 — la superficie de herramientas puede cambiar aún). Sigue semver a partir de entonces.

Fuera de alcance (en esta fase)

Sin base de datos, caché, webhooks ni integraciones posteriores — solo los endpoints de lectura como herramientas MCP.

Licencia

MIT — consulta LICENSE.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • NewsData.io MCP — wraps the NewsData.io global news API (newsdata.io)

  • Mediastack MCP — wraps Mediastack API (api.mediastack.com/v1)

  • Currents MCP — wraps the Currents API (currentsapi.services)

View all MCP Connectors

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/stature/trifecta-thenewsapi-mcp-server'

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