Tech Collector MCP
Recopila y resume artículos técnicos de fuentes como Qiita, Dev.to, NewsAPI y Hacker News utilizando la API de Gemini.
Documentación
📰 tech-collector-mcp
Qiita × MCP × Gemini — Prototipo de “recopilación y resumen de artículos técnicos e integración con Notion” invocable desde clientes de IA
✨ ¿Qué es esto?
tech-collector-mcp es un proyecto experimental basado en CLI que utiliza MCP (Model Context Protocol) para obtener artículos técnicos de múltiples fuentes (Qiita/Dev.to/NewsAPI/Hacker News) de una sola vez, resumirlos con Gemini API y sincronizarlos automáticamente con una base de datos de Notion.
AI-Powered Prototyping: Se está llevando a cabo un prototipado rápido utilizando ChatGPT o Claude.
| Función | Descripción |
|---|---|
| Zero‑Server | JSON‑RPC over STDIO — no requiere servidor web |
| Multi‑Source | Envoltura transversal de Qiita/Dev.to/NewsAPI.org/Hacker News API |
| Summarize | Resumen de URL (summarizeUrlArticle) y resumen especializado para Qiita |
| Aggregate | Obtención de todas las fuentes (fetchAllArticles) y sincronización masiva con Notion (aggregateArticles) |
| Recommend | Recomendación simple basada en leído × valoración × etiquetas (recommendArticles) |
| Easy Integration | Utilizable con sensación de llamada a función en Claude Desktop, etc. |
Prototyping Phase 🛠️ El esquema y las indicaciones se actualizan periódicamente.
🔧 Requisitos
- Node.js 18.x o superior
- npm o yarn
- Crea
.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 no requieren clave de API.
📦 Instalación / Inicio 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 con Claude Desktop
Registra el servidor MCP en settings.json:
{
"mcpServers": {
"tech-collector": {
"command": "node",
"args": ["/absolute/path/to/tech-collector-mcp/src/index.js"]
}
}
}
Después de iniciar, ejemplo de chat:
Dev.toでreactタグの記事を3件取得して
最新テックニュースを取得して
Hacker Newsのトップ技術ネタを5件
https://example.com/article を要約して
取得した記事を Notion に保存して
全ソースを取得して Notion に同期して
全部まとめて最新技術記事を取得して
おすすめ記事(パーソナライズ推薦)を5件教えて```
📂 Estructura del proyecto
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 # エントリーポイント
📖 Resumen de JSON‑RPC
| Método | Descripción | Params | Returns |
initialize | Protocolo de enlace MCP | — | capabilities.tools |
tools/list | Lista de herramientas disponibles | — | name, description, inputSchema |
tools/call | Ejecución de herramienta | name, arguments | Resultado de ejecución (content[]) |
Herramientas principales (extracto)
getQiitaRanking— Obtener ranking de artículos populares de QiitagetDevtoArticles— Obtener artículos por etiqueta/búsqueda de Dev.togetNewsApiArticles— Obtener noticias tecnológicas de NewsAPI.orggetHackerNewsTopStories— Obtener historias principales de Hacker NewsfetchAllArticles— Obtener lo más reciente de todas las fuentes a la vezsummarizeUrlArticle— Resumir artículos de cualquier URL con GeminisyncArticleToNotion— Guardar artículos en NotionaggregateArticles— Obtener todas las fuentes → sincronización masiva con NotionrecommendArticles— Recomendación simple por leído × valoración × etiquetas
Consulta toolDefinitions.*.js para más detalles.
🩹 Solución de problemas
| Error/Síntoma | Solución |
| Unsupported content type: json | El cliente MCP recibió una respuesta distinta de type:'text'. Verifica la implementación de la herramienta |
| 401 Unauthorized | Verifica NEWSAPI_KEY o NOTION_API_KEY de .env |
| La herramienta no se invoca | Revisa descriptionForModel/inputSchema y reinicia el cliente |
🗺 Hoja de ruta
- Fase 1: Ranking de Qiita + resumen (✅)
- Fase 2: Recopilación de múltiples fuentes (✅)
- Fase 3: Integración con Notion y recomendaciones personalizadas (✅)
- Fase 4: Integración con Slack
- Fase 5: Procesamiento periódico por lotes