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ónDescripción
Zero‑ServerJSON‑RPC over STDIO — no requiere servidor web
Multi‑SourceEnvoltura transversal de Qiita/Dev.to/NewsAPI.org/Hacker News API
SummarizeResumen de URL (summarizeUrlArticle) y resumen especializado para Qiita
AggregateObtención de todas las fuentes (fetchAllArticles) y sincronización masiva con Notion (aggregateArticles)
RecommendRecomendación simple basada en leído × valoración × etiquetas (recommendArticles)
Easy IntegrationUtilizable 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 .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 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étodoDescripciónParamsReturns
initializeProtocolo de enlace MCP—capabilities.tools
tools/listLista de herramientas disponibles—name, description, inputSchema
tools/callEjecución de herramientaname, argumentsResultado de ejecución (content[])

Herramientas principales (extracto)

  • getQiitaRanking — Obtener ranking de artículos populares de Qiita
  • getDevtoArticles — Obtener artículos por etiqueta/búsqueda de Dev.to
  • getNewsApiArticles — Obtener noticias tecnológicas de NewsAPI.org
  • getHackerNewsTopStories — Obtener historias principales de Hacker News
  • fetchAllArticles — Obtener lo más reciente de todas las fuentes a la vez
  • summarizeUrlArticle — Resumir artículos de cualquier URL con Gemini
  • syncArticleToNotion — Guardar artículos en Notion
  • aggregateArticles — Obtener todas las fuentes → sincronización masiva con Notion
  • recommendArticles — Recomendación simple por leído × valoración × etiquetas

Consulta toolDefinitions.*.js para más detalles.


🩹 Solución de problemas

Error/SíntomaSolución
Unsupported content type: jsonEl cliente MCP recibió una respuesta distinta de type:'text'. Verifica la implementación de la herramienta
401 UnauthorizedVerifica NEWSAPI_KEY o NOTION_API_KEY de .env
La herramienta no se invocaRevisa descriptionForModel/inputSchema y reinicia el cliente

🗺 Hoja de ruta

  1. Fase 1: Ranking de Qiita + resumen (✅)
  2. Fase 2: Recopilación de múltiples fuentes (✅)
  3. Fase 3: Integración con Notion y recomendaciones personalizadas (✅)
  4. Fase 4: Integración con Slack
  5. Fase 5: Procesamiento periódico por lotes