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-mcp は MCP (Model Context Protocol) を使い、複数ソース(Qiita/Dev.to/NewsAPI/Hacker News)から技術記事を一括取得し、Gemini API で要約、Notion データベースへ自動同期まで行う CLI ベースの実験プロジェクト です。
AI-Powered Prototyping: ChatGPT や Claude を活用した迅速なプロトタイピングを実施しています。
| 機能 | 説明 |
|---|---|
| Zero‑Server | JSON‑RPC over STDIO — Web サーバー不要 |
| Multi‑Source | Qiita/Dev.to/NewsAPI.org/Hacker News API を横断ラップ |
| Summarize | URL 要約 (summarizeUrlArticle) & Qiita 特化要約 |
| Aggregate | 全ソース取得 (fetchAllArticles) & 一括 Notion 同期 (aggregateArticles) |
| Recommend | 読了 × 評価 × タグベースの簡易レコメンド (recommendArticles) |
| Easy Integration | Claude 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 | 説明 | Params | Returns |
initialize | MCP ハンドシェイク | — | 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: json | MCP クライアントが type:'text' 以外のレスポンスを受信。ツール実装を確認 |
| 401 Unauthorized | .env の NEWSAPI_KEY または NOTION_API_KEY を確認 |
| ツールが呼ばれない | descriptionForModel/inputSchema を見直し、クライアント再起動 |
🗺 Roadmap
- Phase 1: Qiita ランキング+要約 (✅)
- Phase 2: マルチソース収集 (✅)
- Phase 3: Notion 連携 & パーソナライズ推薦 (✅)
- Phase 4: Slack 連携
- Phase 5: 定期バッチ
Related Servers
Bright Data
sponsorDiscover, extract, and interact with the web - one interface powering automated access across the public internet.
Browser MCP
A fast, lightweight MCP server that empowers LLMs with browser automation via Puppeteer’s structured accessibility data, featuring optional vision mode for complex visual understanding and flexible, cross-platform configuration.
Docs Fetch MCP Server
Fetch web page content with recursive exploration.
Skrapr
An intelligent web scraping tool using AI and browser automation to extract structured data from websites.
Chrome MCP Server
Control a Chrome browser instance using the Chrome DevTools Protocol (CDP).
MCP Web Scraper
A production-ready web scraping platform with ML-powered automation, browser automation via Playwright, and persistent caching.
MCP YouTube Extract
Extracts information from YouTube videos and channels using the YouTube Data API.
Github to MCP
Convert GitHub repositories to MCP servers automatically. Extract tools from OpenAPI, GraphQL & REST APIs for Claude Desktop, Cursor, Windsurf, Cline & VS Code. AI-powered code generation creates type-safe TypeScript/Python MCP servers. Zero config setup - just paste a repo URL. Built for AI assistants & LLM tool integration.
iReader MCP
Tools for reading and extracting content from the internet.
Redfin MCP Server
Property search, price history, comparable sales, and neighborhood analysis
Intelligence Aeternum (Fluora MCP)
AI training dataset marketplace — 2M+ museum artworks across 7 world-class institutions with on-demand 111-field Golden Codex AI enrichment. x402 USDC micropayments on Base L2. First monetized art/provenance MCP server. Research-backed: dense metadata improves VLM capability by +25.5% (DOI: 10.5281/zenodo.18667735)