News MCP

Fornece acesso a artigos de notícias de um banco de dados PostgreSQL e oferece uma ferramenta para resumi-los usando a API da OpenAI.

Documentação

news-mcp MCP server

servidor de notícias mcp

IMPORTANTE

  • Não comece a codificar a menos que o usuário peça. Se o usuário estiver fazendo uma pergunta sobre o código, responda à pergunta - não escreva ou modifique código a menos que seja explicitamente solicitado.

Componentes

Recursos

O servidor expõe artigos de notícias armazenados em um banco de dados por meio de um URI de recurso:

  • news://{category}/{limit}: Recupera uma lista dos artigos mais recentes para uma determinada categoria.
    • {category}: Filtra artigos por categoria (por exemplo, tech, data_science, news). Consulte a descrição da ferramenta para a lista completa.
    • {limit} (opcional, padrão 10): Especifica o número máximo de artigos a retornar.
  • Cada artigo retornado inclui título, link, data de publicação e fonte.

Prompts

O servidor atualmente não expõe nenhum prompt. (A lógica de sumarização existe internamente, mas não está disponível por meio de um prompt MCP).

Ferramentas

O servidor implementa uma ferramenta:

  • summarize_news: Recupera artigos de notícias brutos do banco de dados, permitindo que o cliente (LLM) os resuma.
    • Aceita argumentos opcionais category (string) e limit (inteiro, padrão 20).
    • Retorna uma lista de dicionários de artigos, cada um contendo id, title, link, published, source e content.
    • Categorias disponíveis: tech, data_science, llm_tools, cybersecurity, linux, audio_dsp, startups, news, science, research, policy.

Configuração

O servidor depende de um banco de dados PostgreSQL configurado por meio da variável de ambiente DATABASE_URL (padrão: postgresql://localhost/mcp_news).

O script news_gatherer.py (destinado a ser executado separadamente/agendado) popula o banco de dados a partir de vários feeds RSS.

A lógica de sumarização (interna, não exposta via MCP) usa a API da OpenAI, configurada por meio da variável de ambiente OPENAI_API_KEY.

Outras configurações (por meio de variáveis de ambiente ou padrões):

  • LOOKBACK_HOURS: Até onde news_gatherer.py procura novos artigos retroativamente (padrão: 6).
  • SUMMARY_WORD_TARGET: Contagem de palavras alvo para sumarização interna (padrão: 500).
  • MAX_ARTICLES_PER_SUMMARY: Número máximo de artigos incluídos em um lote de resumo (padrão: 25).
  • KEYWORD_FILTER: Palavras-chave usadas pela lógica de sumarização interna.

Início Rápido

Instalação

Claude Desktop

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

Development/Unpublished Servers Configuration ``` "mcpServers": { "news-mcp": { "command": "uv", "args": [ "--directory", "~/dev/news-mcp", "run", "news-mcp" ] } } ```
Published Servers Configuration ``` "mcpServers": { "news-mcp": { "command": "uvx", "args": [ "news-mcp" ] } } ```

Desenvolvimento

Compilação e Publicação

Para preparar o pacote para distribuição:

  1. Sincronize as dependências e atualize o lockfile:
uv sync
  1. Compile as distribuições do pacote:
uv build

Isso criará distribuições de origem e wheel no diretório dist/.

  1. Publique no PyPI:
uv publish

Nota: Você precisará definir as credenciais do PyPI por meio de variáveis de ambiente ou flags de comando:

  • Token: --token ou UV_PUBLISH_TOKEN
  • Ou nome de usuário/senha: --username/UV_PUBLISH_USERNAME e --password/UV_PUBLISH_PASSWORD

Depuração

Como os servidores MCP são executados via stdio, a depuração pode ser desafiadora. Para a melhor experiência de depuração, recomendamos fortemente o uso do MCP Inspector.

Você pode iniciar o MCP Inspector por meio de npm com este comando:

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

Ao iniciar, o Inspector exibirá uma URL que você pode acessar no seu navegador para começar a depurar.