はじめに
Claude Code、MCP、AIエージェント向けスキル、その周辺ツールの増え方が、ここ最近かなり速くなっています。
便利そうなリポジトリを見つけたくても、毎回GitHubで検索して、Stars数を確認して、READMEを読んで、Claude Codeで使えそうか判断する、という流れを繰り返すのは正直しんどいです。
そこで、次のような仕組みを作りました。
- GitHub Search APIでClaude Code / MCP関連リポジトリを毎日収集
- 7日前のデータと比較して、Stars増加数で急上昇ランキング化
- READMEを取得してキャッシュ
- Claude APIで短い日本語解説を生成
- Qiita記事を毎日自動更新
- Teamsには毎週月曜日にTop10だけ配信
完成したQiita記事はこちらです。
GitHubリポジトリはこちらです。
作ったもの
作ったのは、Claude Code向けMCP・関連ツールの急上昇ランキングを自動生成する仕組みです。
ランキングの基準は、単純な総Stars数ではありません。直近7日間でどれだけStarsが増えたか を見ています。
こうすることで、昔から有名なリポジトリだけでなく、最近急に注目され始めたリポジトリを見つけやすくしています。
なぜ総Stars数ではなく、7日間のStars増加数にしたのか
総Stars数ランキングだけを見ると、昔から有名なリポジトリが上位に残り続けます。
総Stars数も大事ですが、Claude CodeやMCP周辺は変化が速いので、今見たいのは「今伸びているもの」です。
そのため、今回は次の指標にしました。
最新日のStars数 - 7日前のStars数 = 7日間のStars増加数
この指標だと、こういうリポジトリを拾いやすくなります。
- 最近話題になり始めたMCP関連ツール
- Claude Code向けスキル集
- AIエージェント開発支援ツール
- Cursor / Codex / Claude Code など複数ツールに対応した周辺ツール
- READMEやTopicsからClaude Code関連と判断できるリポジトリ
全体構成
全体の流れは次のとおりです。
GitHub Search API
↓
Claude Code / MCP関連リポジトリを収集
↓
CSV / Markdownとして保存
↓
7日前のCSVと比較
↓
7日間Stars増加数で急上昇ランキングを作成
↓
READMEを取得してキャッシュ
↓
Claude APIで日本語解説を生成
↓
Qiita APIで記事を更新
↓
毎週月曜日にTeamsへTop10を配信
実行はすべてGitHub Actionsに任せています。
ディレクトリ構成
主なファイル構成です。
.
├── .github
│ └── workflows
│ └── update-mcp-repos.yml
├── scripts
│ ├── update_mcp_repos.py
│ ├── update_qiita.py
│ ├── update_qiita_trending.py
│ └── post_to_teams.py
└── output
├── mcp_repositories_latest.csv
├── mcp_repositories_latest.md
├── mcp_repositories_YYYY-MM-DD.csv
├── mcp_repositories_YYYY-MM-DD.md
├── readmes
├── claude_inputs
└── claude_explanations
ポイントは、最新ファイルだけでなく日付付きCSVも残していることです。
output/mcp_repositories_2026-06-14.csv
output/mcp_repositories_2026-06-07.csv
日付付きで残しておくと、7日前との差分を計算できます。
ステップ1:GitHub Search APIで候補リポジトリを収集する
まず、GitHub Search APIで、Claude CodeやMCPに関連しそうなリポジトリを収集します。
ここで、検索対象をMCPだけに絞りすぎないようにしています。
Claude Code周辺で使えるツールには、MCPサーバー以外にもこういうものが多いからです。
- AIエージェント向けスキル
- Claude Code向け設定ファイル
- コンテキスト圧縮ツール
- ナレッジグラフ化ツール
- コード調査支援ツール
- 複数AIコーディングエージェント対応ツール
なので、収集対象は「MCP関連リポジトリ + Claude Code周辺で活用候補になりそうな関連ツール」としています。
ステップ2:保存件数と表示件数を分ける
今回の仕組みでは、保存件数と表示件数を分けています。
DISPLAY_RESULTS: "100"
SAVE_RESULTS: "500"
表示用は100件で十分ですが、急上昇ランキングを作るには、過去データとの比較対象を多めに持っておく必要があります。
そこで、CSVには500件保存し、Qiita記事には必要な件数だけ表示します。
この分け方にしておくと、あとから急上昇ランキングや別指標のランキングも作りやすくなります。
ステップ3:7日前のCSVと比較する
急上昇ランキングでは、最新CSVと7日前CSVを比較します。
最新CSV: output/mcp_repositories_2026-06-14.csv
比較元CSV: output/mcp_repositories_2026-06-07.csv
比較する主な値はこちらです。
Stars増加数
Forks増加数
順位変動
並び順はこうしています。
1. 7日間のStars増加数
2. 7日間のForks増加数
3. 現在のStars数
この順序にすると、直近で注目度が上がっているリポジトリが上位に出やすくなります。
ステップ4:READMEを初回だけ取得してキャッシュする
ランキングだけならCSV比較で足りますが、それだと読者には「何のリポジトリなのか」が伝わりにくいです。
そこで、GitHub APIからREADMEを取得し、Claude APIに渡して日本語解説を作るようにしました。
ただ、毎回READMEを取り直すのは無駄が多いです。READMEは初回だけ取得して、次のパスに保存します。
output/readmes/owner__repo.md
output/readmes/owner__repo.json
次回以降は、キャッシュ済みのREADMEを再利用します。
ステップ5:Claude APIに渡す入力JSONを作る
READMEをそのままClaude APIに渡すのではなく、ランキング情報とREADMEをまとめたJSONを作ります。
保存先はこちらです。
output/claude_inputs/trending_readme_context_YYYY-MM-DD.json
JSONには、こんな情報を入れています。
リポジトリ名
GitHub URL
説明文
Topics
Stars数
7日間のStars増加数
Forks数
7日間のForks増加数
README本文
READMEキャッシュパス
こうしておくと、あとからClaude APIに渡した入力データを確認しやすくなります。
ステップ6:Claude APIで日本語解説を生成する
Claude APIでは、READMEをもとに短い日本語解説を生成します。
Qiita記事に差し込む短文が目的なので、モデルはHaikuを使っています。
ANTHROPIC_MODEL: "claude-haiku-4-5-20251001"
プロンプトには、次のルールを入れています。
日本語で1段落のみ
80〜140文字程度
Markdownの見出しや箇条書きは不要
READMEで確認できない内容は断定しない
Claude Code対応やMCP対応はREADMEから読み取れる場合のみ断定する
不明な場合は「〜に使えそう」「〜の確認に役立ちそう」と表現する
ここで一番気をつけたのは、READMEに書かれていないことを盛らない ことです。
ランキング記事なので、見栄えより信頼性を優先しました。
ステップ7:Claude APIの結果もキャッシュする
Claude APIは便利ですが、毎回TOP30すべてを投げるとコストも時間も増えます。
そこで、生成した日本語解説もキャッシュします。
保存先はこちらです。
output/claude_explanations/owner__repo.md
output/claude_explanations/owner__repo.json
キャッシュ判定には、次の3つを使っています。
モデル名
プロンプトバージョン
README本文のSHA256
README本文やプロンプトが変わらない限り、再生成しません。これで、2回目以降のActions実行では、既存リポジトリのClaude API呼び出しをスキップできます。
ステップ8:キャッシュヒット時はsleepしない
Claude APIを連続で呼び出すと、レート制限に当たる可能性があります。
そこで、APIを呼んだ後だけ待機時間を入れています。
CLAUDE_API_SLEEP_SECONDS: "25.0"
ただ、キャッシュヒット時までsleepするのは無駄です。なので、こういう挙動にしています。
キャッシュヒット
→ Claude APIを呼ばない
→ sleepしない
Claude APIを実行
→ sleepする
これで、初回は時間がかかりますが、キャッシュが増えるほど実行時間は短くなります。
ステップ9:Qiita記事をAPIで更新する
Qiita記事は手動投稿ではなく、Qiita APIで更新します。
通常ランキングと急上昇ランキングで、記事IDを分けています。
QIITA_ITEM_ID
QIITA_TRENDING_ITEM_ID
GitHub Actionsでは、これらをSecretsに登録して使います。
QIITA_TOKEN: ${{ secrets.QIITA_TOKEN }}
QIITA_ITEM_ID: ${{ secrets.QIITA_ITEM_ID }}
QIITA_TRENDING_ITEM_ID: ${{ secrets.QIITA_TRENDING_ITEM_ID }}
公開記事として更新したいときは、次を false にします。
QIITA_PRIVATE: "false"
QIITA_TRENDING_PRIVATE: "false"
ここが true だと、Qiita記事は非公開のまま更新されます。
ステップ10:Teamsには毎週月曜日にTop10だけ配信する
Qiita記事は毎日自動更新します。ただ、Teamsに毎日投稿すると多すぎます。
そこで、Teams投稿は毎週月曜日だけにしました。投稿内容も、Qiita記事全文ではなくTop10だけです。
Claude Code向けMCP・関連ツール急上昇ランキング Top10
Teams投稿では、11位以降はQiita記事で確認してもらう形にしています。
11位以降はQiita記事で確認できます。
Adaptive Cardには、次のボタンを付けています。
Qiita記事で全文を見る
GitHubリポジトリを開く
この形なら、Teamsでは短く共有しつつ、詳しく見たい人だけQiita記事へ誘導できます。
GitHub Actionsの全体イメージ
workflowの流れはこうです。
1. GitHub Search APIでランキングデータを取得
2. CSV / Markdownを生成
3. 生成ファイルをcommit
4. Qiita通常ランキング記事を更新
5. Qiita急上昇ランキング記事を更新
6. Claude APIで日本語解説を生成
7. README / Claude入力JSON / 解説キャッシュをcommit
8. 月曜日だけTeamsにTop10を投稿
必要なSecretsはこちらです。
QIITA_TOKEN
QIITA_ITEM_ID
QIITA_TRENDING_ITEM_ID
ANTHROPIC_API_KEY
TEAMS_WEBHOOK_URL
この仕組みでよかったこと
実際に作ってみて、よかった点はこちらです。
- Claude Code周辺の新しいツールを追いやすくなった
- 総Stars数では見えにくい急上昇リポジトリを拾える
- READMEを毎回読まなくても、Claude APIの短い日本語解説で概要を把握できる
- Qiita記事が毎日更新されるので、社内共有しやすい
- TeamsにはTop10だけ流すため、通知が重くなりにくい
- READMEとClaude解説をキャッシュすることで、API利用量と実行時間を抑えられる
注意点
このランキングは、GitHub Search APIの検索結果をもとにした自動集計です。
以下の点には注意してください。
- Stars増加数が大きいことは、品質の保証ではない
- Claude Code対応やMCP対応は、READMEや公式情報で最終確認が必要
- GitHub Topicsや説明文の付け方によって、検索結果に偏りが出る可能性がある
- Claude APIの解説はREADMEに基づく要約であり、導入判断そのものではない
- 実際に使う前に、ライセンス、Issues、最終更新日、セキュリティ面を確認したほうがよい
まとめ
Claude CodeやMCP周辺のツールは増えるスピードが速く、手動で追い続けるのはかなり大変です。
そこで今回は、GitHub Actions、GitHub Search API、Qiita API、Claude API、Teams通知を組み合わせて、急上昇ランキングを自動生成する仕組みを作りました。
特に効いたのは、次の3点です。
総Stars数ではなく、7日間のStars増加数を見る
READMEとClaude解説をキャッシュして、コストと時間を抑える
Qiitaは毎日更新、Teamsは週1配信に分ける
この仕組みで、Claude Code周辺の新しいツールを、手間をかけずに継続的に追えるようになりました。