Tech Collector MCP

Collects and summarizes technical articles from sources like Qiita, Dev.to, NewsAPI, and Hacker News using the Gemini API.

📰 tech-collector-mcp

Qiita × MCP × Gemini — AI クライアントから呼び出せる “技術記事収集・要約 & Notion 連携” プロトタイプ


✨ What’s this?

tech-collector-mcpMCP (Model Context Protocol) を使い、複数ソース(Qiita/Dev.to/NewsAPI/Hacker News)から技術記事を一括取得し、Gemini API で要約、Notion データベースへ自動同期まで行う CLI ベースの実験プロジェクト です。

AI-Powered Prototyping: ChatGPT や Claude を活用した迅速なプロトタイピングを実施しています。

機能説明
Zero‑ServerJSON‑RPC over STDIO — Web サーバー不要
Multi‑SourceQiita/Dev.to/NewsAPI.org/Hacker News API を横断ラップ
SummarizeURL 要約 (summarizeUrlArticle) & Qiita 特化要約
Aggregate全ソース取得 (fetchAllArticles) & 一括 Notion 同期 (aggregateArticles)
Recommend読了 × 評価 × タグベースの簡易レコメンド (recommendArticles)
Easy IntegrationClaude Desktop などで関数呼び出し感覚で利用可能

Prototyping Phase 🛠️  スキーマ & プロンプトは随時更新中。


🔧 Requirements

  • Node.js 18.x 以上
  • npm または yarn
  • .env.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 は API キー不要です。


📦 Installation / Quick Start

# 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

🛠️ Using with Claude Desktop

settings.json に MCP サーバーを登録:

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

起動後、チャット例:

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

📂 Project Structure

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                      # エントリーポイント

📖 JSON‑RPC Overview

Method説明ParamsReturns
initializeMCP ハンドシェイクcapabilities.tools
tools/list利用可能ツール一覧name, description, inputSchema
tools/callツール実行name, arguments実行結果 (content[])

Main Tools (抜粋)

  • getQiitaRanking — Qiita 人気記事ランキング取得
  • getDevtoArticles — Dev.to のタグ/検索記事取得
  • getNewsApiArticles — NewsAPI.org からテックニュース取得
  • getHackerNewsTopStories — Hacker News トップストーリー取得
  • fetchAllArticles — 全ソースまとめて最新取得
  • summarizeUrlArticle — 任意 URL 記事を Gemini で要約
  • syncArticleToNotion — 記事を Notion に保存
  • aggregateArticles — 全ソース取得 →Notion 一括同期
  • recommendArticles — 読了 × 評価 × タグで簡易推薦

詳細は toolDefinitions.*.js を参照。


🩹 Troubleshooting

エラー/症状解決策
Unsupported content type: jsonMCP クライアントが type:'text' 以外のレスポンスを受信。ツール実装を確認
401 Unauthorized.envNEWSAPI_KEY または NOTION_API_KEY を確認
ツールが呼ばれないdescriptionForModelinputSchema を見直し、クライアント再起動

🗺 Roadmap

  1. Phase 1: Qiita ランキング+要約 (✅)
  2. Phase 2: マルチソース収集 (✅)
  3. Phase 3: Notion 連携 & パーソナライズ推薦 (✅)
  4. Phase 4: Slack 連携
  5. Phase 5: 定期バッチ

Related Servers