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.
| Recurso | Descrição |
|---|---|
| Zero‑Server | JSON‑RPC over STDIO — sem necessidade de servidor web |
| Multi‑Source | Acesso transversal a Qiita/Dev.to/NewsAPI.org/Hacker News API |
| Summarize | Resumo de URL (summarizeUrlArticle) & resumo especializado para Qiita |
| Aggregate | Coleta de todas as fontes (fetchAllArticles) & sincronização em lote com Notion (aggregateArticles) |
| Recommend | Recomendação simples baseada em leitura × avaliação × tags (recommendArticles) |
| Easy Integration | Utilizá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
.envconsultando.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étodo | Descrição | Params | Retorno |
initialize | Handshake MCP | — | capabilities.tools |
tools/list | Lista de ferramentas disponíveis | — | name, description, inputSchema |
tools/call | Execução de ferramenta | name, arguments | Resultado da execução (content[]) |
Principais Ferramentas (trecho)
getQiitaRanking— Obter ranking de artigos populares do QiitagetDevtoArticles— Obter artigos do Dev.to por tag/buscagetNewsApiArticles— Obter notícias de tecnologia do NewsAPI.orggetHackerNewsTopStories— Obter principais histórias do Hacker NewsfetchAllArticles— Obter as últimas atualizações de todas as fontes de uma vezsummarizeUrlArticle— Resumir artigo de URL arbitrária com GeminisyncArticleToNotion— Salvar artigo no NotionaggregateArticles— Coletar todas as fontes → sincronização em lote com NotionrecommendArticles— Recomendação simples por leitura × avaliação × tags
Consulte toolDefinitions.*.js para detalhes.
🩹 Solução de Problemas
| Erro/Sintoma | Solução |
| Unsupported content type: json | O cliente MCP recebeu resposta diferente de type:'text'. Verifique a implementação da ferramenta |
| 401 Unauthorized | Verifique NEWSAPI_KEY ou NOTION_API_KEY de .env |
| Ferramenta não é chamada | Revise descriptionForModel/inputSchema e reinicie o cliente |
🗺 Roadmap
- Fase 1: Ranking Qiita + resumo (✅)
- Fase 2: Coleta multi‑fonte (✅)
- Fase 3: Integração com Notion & recomendação personalizada (✅)
- Fase 4: Integração com Slack
- Fase 5: Execução periódica em lote