Tech Collector MCP

Coleta e resume artigos técnicos de fontes como Qiita, Dev.to, NewsAPI e Hacker News usando a API Gemini.

Documentação

📰 tech-collector-mcp

Qiita × MCP × Gemini — Protótipo de “coleta/resumo de artigos técnicos e integração com Notion” que pode ser chamado a partir de clientes de IA


✨ O que é isso?

tech-collector-mcp é um projeto experimental baseado em CLI que usa MCP (Model Context Protocol) para coletar artigos técnicos de múltiplas fontes (Qiita/Dev.to/NewsAPI/Hacker News) de uma só vez, resumi-los com a API Gemini e sincronizar automaticamente com o banco de dados do Notion.

AI-Powered Prototyping: Estamos realizando prototipagem rápida usando ChatGPT e Claude.

RecursoDescrição
Zero‑ServerJSON‑RPC over STDIO — sem necessidade de servidor web
Multi‑SourceAcesso transversal a Qiita/Dev.to/NewsAPI.org/Hacker News API
SummarizeResumo de URL (summarizeUrlArticle) & resumo especializado para Qiita
AggregateColeta de todas as fontes (fetchAllArticles) & sincronização em lote com Notion (aggregateArticles)
RecommendRecomendação simples baseada em leitura × avaliação × tags (recommendArticles)
Easy IntegrationUtilizável com sensação de chamada de função no Claude Desktop, etc.

Fase de Prototipagem 🛠️  Esquemas e prompts estão em constante atualização.


🔧 Requisitos

  • Node.js 18.x ou superior
  • npm ou yarn
  • Crie .env consultando .env.example
# ==== API Keys & Tokens ====
GEMINI_API_KEY=your_gemini_api_key_here     # Google Generative AI
NEWSAPI_KEY=your_newsapi_api_key_here       # NewsAPI.org
QIITA_TOKEN=your_qiita_token_here           # Qiita (optional)

# ==== Pagination Settings ====
PAGE_LIMIT=3        # デフォルト取得件数/サービス
ITEMS_PER_PAGE=10   # ページネーション単位

# ==== Notion Integration ====
NOTION_API_KEY=your_notion_api_key_here     # Notion Integration Token
NOTION_DATABASE_ID=your_database_id_here    # 記事保存用DB ID

Dev.to/Hacker News não exigem chave de API.


📦 Instalação / Início Rápido

# 1) Clone
$ git clone https://github.com/RuumaLilja/tech-collector-mcp.git
$ cd tech-collector-mcp

# 2) Install dependencies
$ npm install   # または yarn install

# 3) Setup environment
$ cp .env.example .env
# .env を編集して各種キーを入力

# 4) Run MCP server (STDIO mode)
$ node src/index.js

🛠️ Uso com Claude Desktop

Registre o servidor MCP em settings.json:

{
  "mcpServers": {
    "tech-collector": {
      "command": "node",
      "args": ["/absolute/path/to/tech-collector-mcp/src/index.js"]
    }
  }
}

Após a inicialização, exemplo de chat:

Dev.toでreactタグの記事を3件取得して
最新テックニュースを取得して
Hacker Newsのトップ技術ネタを5件
https://example.com/article を要約して
取得した記事を Notion に保存して
全ソースを取得して Notion に同期して
全部まとめて最新技術記事を取得して
おすすめ記事(パーソナライズ推薦)を5件教えて```

📂 Estrutura do Projeto

tech-collector-mcp/
├── adapters/
│   └── notionSdkStorage.js       # Notion SDK 実装 (StoragePort)
├── clients/
│   ├── devtoClient.js
│   ├── geminiClient.js
│   ├── hackerNewsClient.js
│   ├── newsApiClient.js
│   └── qiitaClient.js
├── config/
│   ├── constants.js
│   ├── environment.js
│   ├── prompts.js                # プロンプト定義
│   ├── toolDefinitions.dynamic.js# Notionスキーマ連動ツール
│   └── toolDefinitions.static.js # 静的ツール定義
├── ports/
│   └── storage.js                # StoragePort インターフェース
├── services/
│   ├── aggregatorService.js      # 全ソース取得→Notion同期
│   ├── devtoService.js
│   ├── fetchService.js           # 全ソース取得
│   ├── hackerNewsService.js
│   ├── newsApiService.js
│   ├── qiitaRanking.js
│   ├── recommenderService.js     # 読了×評価×タグベース推薦
│   ├── reportService.js          # 同期結果レポート
│   ├── summarizeService.js       # URL要約
│   ├── syncBatchService.js       # Notion並列同期
│   └── syncService.js            # 単一記事同期
├── utils/
│   ├── errors.js
│   ├── fieldMapper.js            # 外部→Notionフィールド変換
│   ├── rpcHelpers.js
│   └── simhash.js                # URL→SimHash (MD5)
└── index.js                      # エントリーポイント

📖 Visão Geral do JSON‑RPC

MétodoDescriçãoParamsRetorno
initializeHandshake MCPcapabilities.tools
tools/listLista de ferramentas disponíveisname, description, inputSchema
tools/callExecução de ferramentaname, argumentsResultado da execução (content[])

Principais Ferramentas (trecho)

  • getQiitaRanking — Obter ranking de artigos populares do Qiita
  • getDevtoArticles — Obter artigos do Dev.to por tag/busca
  • getNewsApiArticles — Obter notícias de tecnologia do NewsAPI.org
  • getHackerNewsTopStories — Obter principais histórias do Hacker News
  • fetchAllArticles — Obter as últimas atualizações de todas as fontes de uma vez
  • summarizeUrlArticle — Resumir artigo de URL arbitrária com Gemini
  • syncArticleToNotion — Salvar artigo no Notion
  • aggregateArticles — Coletar todas as fontes → sincronização em lote com Notion
  • recommendArticles — Recomendação simples por leitura × avaliação × tags

Consulte toolDefinitions.*.js para detalhes.


🩹 Solução de Problemas

Erro/SintomaSolução
Unsupported content type: jsonO cliente MCP recebeu resposta diferente de type:'text'. Verifique a implementação da ferramenta
401 UnauthorizedVerifique NEWSAPI_KEY ou NOTION_API_KEY de .env
Ferramenta não é chamadaRevise descriptionForModelinputSchema e reinicie o cliente

🗺 Roadmap

  1. Fase 1: Ranking Qiita + resumo (✅)
  2. Fase 2: Coleta multi‑fonte (✅)
  3. Fase 3: Integração com Notion & recomendação personalizada (✅)
  4. Fase 4: Integração com Slack
  5. Fase 5: Execução periódica em lote