News MCP

Proporciona acceso a artículos de noticias desde una base de datos PostgreSQL y ofrece una herramienta para resumirlos usando la API de OpenAI.

Documentación

Servidor MCP news-mcp

Servidor de noticias MCP

IMPORTANTE

  • No comiences a programar a menos que el usuario te lo pida. Si el usuario hace una pregunta sobre el código, responde la pregunta; no escribas ni modifiques código a menos que se te pida explícitamente.

Componentes

Recursos

El servidor expone artículos de noticias almacenados en una base de datos mediante un URI de recurso:

  • news://{category}/{limit}: Recupera una lista de los artículos más recientes para una categoría determinada.
    • {category}: Filtra artículos por categoría (p. ej., tech, data_science, news). Consulta la descripción de la herramienta para ver la lista completa.
    • {limit} (opcional, valor predeterminado 10): Especifica el número máximo de artículos a devolver.
  • Cada artículo devuelto incluye título, enlace, fecha de publicación y fuente.

Prompts

El servidor actualmente no expone ningún prompt. (La lógica de resumen existe internamente, pero no está disponible mediante un prompt de MCP).

Herramientas

El servidor implementa una herramienta:

  • summarize_news: Recupera artículos de noticias sin procesar de la base de datos, lo que permite al cliente (LLM) resumirlos.
    • Acepta argumentos opcionales category (cadena) y limit (entero, valor predeterminado 20).
    • Devuelve una lista de diccionarios de artículos, cada uno con id, title, link, published, source y content.
    • Categorías disponibles: tech, data_science, llm_tools, cybersecurity, linux, audio_dsp, startups, news, science, research, policy.

Configuración

El servidor depende de una base de datos PostgreSQL configurada mediante la variable de entorno DATABASE_URL (valor predeterminado: postgresql://localhost/mcp_news).

El script news_gatherer.py (diseñado para ejecutarse por separado o de forma programada) llena la base de datos desde varias fuentes RSS.

La lógica de resumen (interna, no expuesta mediante MCP) utiliza la API de OpenAI, configurada mediante la variable de entorno OPENAI_API_KEY.

Otras configuraciones (mediante variables de entorno o valores predeterminados):

  • LOOKBACK_HOURS: Cuánto tiempo hacia atrás busca news_gatherer.py artículos nuevos (valor predeterminado: 6).
  • SUMMARY_WORD_TARGET: Recuento de palabras objetivo para el resumen interno (valor predeterminado: 500).
  • MAX_ARTICLES_PER_SUMMARY: Número máximo de artículos incluidos en un lote de resumen (valor predeterminado: 25).
  • KEYWORD_FILTER: Palabras clave utilizadas por la lógica de resumen interno.

Inicio rápido

Instalación

Claude Desktop

En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json En Windows: %APPDATA%/Claude/claude_desktop_config.json

Configuración de servidores no publicados en desarrollo ``` "mcpServers": { "news-mcp": { "command": "uv", "args": [ "--directory", "~/dev/news-mcp", "run", "news-mcp" ] } } ```
Configuración de servidores publicados ``` "mcpServers": { "news-mcp": { "command": "uvx", "args": [ "news-mcp" ] } } ```

Desarrollo

Compilación y publicación

Para preparar el paquete para su distribución:

  1. Sincroniza las dependencias y actualiza el archivo de bloqueo:
uv sync
  1. Compila las distribuciones del paquete:
uv build

Esto creará distribuciones de código fuente y wheel en el directorio dist/.

  1. Publica en PyPI:
uv publish

Nota: Deberás configurar las credenciales de PyPI mediante variables de entorno o indicadores de comando:

  • Token: --token o UV_PUBLISH_TOKEN
  • O nombre de usuario/contraseña: --username/UV_PUBLISH_USERNAME y --password/UV_PUBLISH_PASSWORD

Depuración

Dado que los servidores MCP se ejecutan sobre stdio, la depuración puede ser un desafío. Para una mejor experiencia de depuración, recomendamos encarecidamente usar el Inspector MCP.

Puedes iniciar el Inspector MCP mediante npm con este comando:

npx @modelcontextprotocol/inspector uv --directory ~/dev/news-mcp run news-mcp 

Al iniciarse, el Inspector mostrará una URL a la que puedes acceder en tu navegador para comenzar a depurar.