mcpField
D
dep-rank

dep-rank

ローカル
github.com/j7anバージョン管理11 日前に更新

dep-rank について

dep-rankは、あるプロジェクトに依存するGitHubリポジトリを調べる開発者向けのCLI兼MCPサーバーです。スター数または相対的な信頼度ヒューリスティックで依存先を順位付けし、コードを検索できます。

主な機能

  1. 01スター数または信頼度による依存先の順位付け
  2. 02リポジトリ結果の絞り込みと形式指定
  3. 03依存先リポジトリ全体のコード検索
  4. 04説明とパッケージダウンロード情報の取得
  5. 05SQLiteによる応答キャッシュ

活用シーン

  1. 01ライブラリに依存する人気リポジトリの特定
  2. 02信頼度ヒューリスティックによる依存先の確認
  3. 03依存先リポジトリからコードパターンを検索

MCP 対応

stdio MCPサーバーとして、依存先の順位付けと横断コード検索のツールを提供します。どちらのツールもサーバー環境にGitHubトークンが必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"j7an-dep-rank": {
"command": "uvx",
"args": [
"dep-rank"
],
"env": {
"DEP_RANK_TOKEN": "<DEP_RANK_TOKEN>"
}
}
}
}
起動コマンドuvx dep-rank
設定が必要な環境変数
DEP_RANK_TOKENシークレットGitHub token (required) for dependents scraping, trust metadata, and code search

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidep-rank0.10.0

ツール

2

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
urlstringはい
rowsintegerいいえ
rank_byenumいいえstars | trust
downloadsbooleanいいえ
max_pagesintegerいいえ
min_starsintegerいいえ
trust_checkbooleanいいえ
descriptionsbooleanいいえ
adaptive_stopbooleanいいえ
dependent_typeenumいいえ検索する依存関係の種類。REPOSITORY | PACKAGE

詳細

dep-rank

GitHub の依存元をスター数または信頼度でランキングします。

PyPI License: MIT Python 3.11+

dep-rank は、指定された GitHub プロジェクトに依存する人気の高いリポジトリを見つけます。GitHub の依存元ページをスクレイピングし、GraphQL API で結果を補完します。コマンドラインツールとして、また AI エージェント向けの MCP サーバーとして動作します(MCP サーバーを参照)。

クイックスタート

pip install dep-rank
dep-rank deps https://github.com/django/django

CLI リファレンス

dep-rank deps — 上位の依存元を一覧表示
dep-rank deps https://github.com/django/django
dep-rank deps https://github.com/django/django --rows 20 --min-stars 100
dep-rank deps https://github.com/django/django --descriptions --format json
dep-rank deps https://github.com/django/django --packages
オプションデフォルト説明
--rows10結果の件数
--min-stars5最低スター数のフィルター
--formattable出力形式:table または json
--descriptionsoffGitHub API で説明を取得します(トークンが必要です)
--packagesoffリポジトリではなくパッケージを検索します
--tokenDEP_RANK_TOKENGitHub トークン
--max-pages200スクレイピングする最大ページ数(上限は 1000)
--no-adaptive-stopoff適応的な早期終了を無効にします。枯渇するまで、または --max-pages に達するまでスクレイピングを続けます
--rank-bystarsランキング方式:stars または trust(ヒューリスティック。トークンが必要です)
--trust-checkoff上位結果のうち最大 25 件について、サンプリングしたスター履歴を確認します(--rank-by trust とトークンが必要です)
--downloadsoff各依存元の、レジストリ上で最もダウンロード数の多いパッケージを表示します(ecosyste.ms / deps.dev / npm。表示のみ)

テーブル形式の出力(deps、search、ライブ進捗テーブル)では、OSC 8 ハイパーリンクに対応するターミナル上でリポジトリ名が GitHub ページへのクリック可能なリンクになります。パイプやリダイレクトによる出力はプレーンテキストのままです。

dep-rank search — 依存元のコードを検索
dep-rank search https://github.com/django/django "from django.db import"
dep-rank search https://github.com/django/django "middleware" --max-repos 20
オプションデフォルト説明
--max-repos10検索するリポジトリの最大数
--min-stars50このスター数以上のリポジトリのみを検索します
--tokenDEP_RANK_TOKENGitHub トークン(必須)
--max-pages200スクレイピングする最大ページ数(上限は 1000)

search は常に、範囲を制限した適応なしの top-K スクレイピングを実行します(--no-adaptive-stop は公開されておらず、このコマンドでは適応的な早期終了が常に無効になっています)。

部分的な結果

スクレイピング結果(deps と search の事前処理)には、処理が完了したかどうかが示されます。結果には complete フラグと reason が含まれます。complete: false はスクレイピングが早期に停止したことを意味します。理由は max_pages_reached(--max-pages を増やしてください)、trend_converged(適応型ヒューリスティックにより top-K が安定したと判定されました。枯渇するまで、または --max-pages に達するまでスクレイピングするには --no-adaptive-stop を使用してください)、network_failure、または rate_limited です。この場合、total_count/filtered_count は実際にスクレイピングしたページを対象とする下限値であり、全体の件数ではありません。

dep-rank cache — キャッシュを管理
dep-rank cache stats    # Show cache size
dep-rank cache clear    # Clear all cached data

MCP サーバー

dep-rank mcp は MCP サーバーを stdio 経由で実行し、AI エージェントが dep-rank を直接呼び出せるようにします。オプションの mcp extra が必要です。

pip install "dep-rank[mcp]"

クライアントの設定(このコマンドは stdio サーバーを起動する任意の MCP クライアントで動作します):

{
  "mcpServers": {
    "dep-rank": {
      "command": "uvx",
      "args": ["--with", "dep-rank[mcp]", "dep-rank", "mcp"],
      "env": { "DEP_RANK_TOKEN": "ghp_your_token_here" }
    }
  }
}

DEP_RANK_TOKEN は必須です。トークンがない場合、どちらのツールも失敗します。トークンはサーバーの環境変数からのみ読み込まれ、ツールの引数から読み込まれることはありません。

ツール:

  • get_dependents — リポジトリの依存先を、スター数または信頼度でランキングします(dep-rank deps パイプライン)。パラメーターは CLI に準じます:url、rows、min_stars、dependent_type、descriptions、rank_by、trust_check、downloads、max_pages、adaptive_stop。
  • search_dependents — 上位の依存先全体からコードを検索します(dep-rank search パイプライン):url、query、max_repos、min_stars、max_pages。

注意事項:

  • 結果は不完全な場合があります。件数を合計として扱う前に complete と reason を確認してください。部分的な結果を参照してください。
  • 信頼度スコアは対象プール内での相対的なヒューリスティックであり、品質や不正行為の判定ではありません。信頼度ランキングを参照してください。
  • 呼び出しは一度に1つずつ実行されます。別の呼び出しの実行中に届いた呼び出しは、その完了を待ちます。
  • 実行時間の長い呼び出しでは、GitHub のレート制限による待機を含む進捗状況が報告されます。Claude Code では、2分を超えて実行される MCP 呼び出しはバックグラウンドに移されます。
  • サーバーは、環境変数から HTTP_PROXY、HTTPS_PROXY、NO_PROXY を使用します。SOCKS プロキシ(例:ALL_PROXY=socks5://...)には対応していません。サーバーの環境から削除するまで、ツールの呼び出しはエラーで失敗します。
Docker MCP Toolkit

ghcr.io/j7an/dep-rank イメージは、Docker MCP Toolkit の下で MCP サーバーを実行します。コンテナによる分離(ホストのファイルシステムにはアクセスできず、ゲートウェイの実行時に --block-network を指定すると、ネットワークアクセスは GitHub に制限されます)を利用でき、接続するすべてのエージェントハーネスで1つのプロファイルを共有できます。プロンプトインジェクションのリスクは変わりません。ツールの結果には引き続きサードパーティーのリポジトリに含まれるテキストが含まれ、エージェントはそのテキストを読み取ります。

前提条件:MCP Toolkit を備えた Docker Desktop、およびプロファイルの有効化(Docker Desktop の MCPWorkingSets 機能フラグ、または docker mcp feature enable profiles)。

  1. このサーバー定義を ~/.docker/mcp/catalogs/dep-rank.yaml として保存します。ゲートウェイが読み込むのは、このディレクトリにある file:// 定義のみです。

    name: dep-rank
    title: dep-rank
    type: server
    image: ghcr.io/j7an/dep-rank:latest
    description: Rank a GitHub repo's dependents by stars or trust heuristic, and search their code
    secrets:
      - name: dep-rank.token
        env: DEP_RANK_TOKEN
        example: ghp_your_token_here
    volumes:
      - dep-rank-cache:/cache
    allowHosts:
      - github.com:443
      - api.github.com:443
    

    downloads を指定した get_dependents では、allowHosts に packages.ecosyste.ms:443、api.npmjs.org:443、api.deps.dev:443 も必要です。指定しない場合、ダウンロード統計は利用不可として報告されます。

    再現可能なインストールにするには、image をリリースタグ(ghcr.io/j7an/dep-rank:<version>)または @sha256: ダイジェストに固定してください。gh attestation verify oci://ghcr.io/j7an/dep-rank:<version> --repo j7an/dep-rank でイメージのビルド来歴を検証できます。

  2. プロファイルを作成します。--id dep-rank を指定してください。指定しない場合、ID は dep_rank になり、以下のハーネス設定と一致しません。

    docker mcp profile create --name dep-rank --id dep-rank \
      --server "file://$HOME/.docker/mcp/catalogs/dep-rank.yaml"
    
  3. GitHub トークンを保存します:

    gh auth token | docker mcp secret set dep-rank.token
    

    シークレットがない場合、ゲートウェイは DEP_RANK_TOKEN にリテラル値 <UNKNOWN> を渡すため、「トークンがありません」というメッセージではなく、GitHub エラーで呼び出しが失敗します。

  4. 各ハーネスをゲートウェイに接続します。allowHosts を適用するために必要な --block-network が含まれるよう、エントリーを手動で記述してください:

    {
      "mcpServers": {
        "dep-rank": {
          "command": "docker",
          "args": ["mcp", "gateway", "run", "--profile", "dep-rank", "--block-network"]
        }
      }
    }
    

    docker mcp client connect <client> -p dep-rank も使えますが、書き込まれるエントリーには --block-network が含まれません。自分で追加してください。

注記:

  • ツールを呼び出すたびに、新しいコンテナが起動します。dep-rank-cache ボリュームにより、呼び出しの間もキャッシュが保持されます。
  • ゲートウェイによってプロキシコンテナが残る場合があります。docker rm -f $(docker ps -aq --filter label=docker-mcp-proxy=true) で削除してください。

Python API(暫定)

Python の deps パイプラインでは、dep_rank.core.dependents.get_dependents を使用します。 戻り値は dep_rank.core.models.DependentsResult です。リポジトリまたはパッケージの依存元を選択するには、dep_rank.core.models.DependentType を使用します。この API は 0.x の期間中に変更される可能性があります。

import asyncio

import httpx2

from dep_rank.core.cache import SqliteCache
from dep_rank.core.dependents import get_dependents
from dep_rank.core.models import DependentsResult, DependentType


async def main(cache_dir: str | None = None) -> None:
    cache = SqliteCache(cache_dir) if cache_dir is not None else None
    try:
        if cache is not None:
            await cache.initialize()
        async with httpx2.AsyncClient() as session:
            result: DependentsResult = await get_dependents(
                session,
                "https://github.com/django/django",
                dependent_type=DependentType.REPOSITORY,
                cache=cache,
            )
            for repo in result.repos:
                print(repo.url, repo.stars)
            if not result.complete:
                print("Partial results:", result.reason)
    finally:
        if cache is not None:
            await cache.close()


asyncio.run(main(cache_dir=".dep-rank-cache"))

dep_rank.core.cache.SqliteCache(path) はキャッシュディレクトリを受け取ります。キャッシュは任意です。この例で main() を呼び出すと、キャッシュは使用されません。呼び出し側でセッションを開いて閉じ、キャッシュを初期化して閉じます。get_dependents はどちらも閉じません。デフォルトでは、スター数が 5 以上の依存元を最大 10 件、スター数順で返します。説明または信頼度ランキングを利用するには、token=... として GitHub トークンを明示的に渡してください。ライブラリのエントリーポイントは DEP_RANK_TOKEN を読み取りません。任意のパッケージダウンロード統計を取得するには、downloads=True を渡します。この検索にトークンは不要です。検索の失敗と、一致するパッケージがないリポジトリを区別するには、result.downloads_check.complete と .unavailable を確認してください。

get_dependents は、無効な GitHub リポジトリ URL、"stars" または "trust" 以外の rank_by、トークンなしでの descriptions=True、トークンなしでの rank_by="trust"、または rank_by="trust" 以外での trust_check=True に対して ValueError を送出します。信頼度スコアは対象プール内での相対的なヒューリスティックであり、品質や不正行為を判定するものではありません。

部分的な結果については、result.complete と result.reason を確認してください。不完全な場合、件数は下限値です。result.stale_pages は、期限切れのキャッシュエントリーから提供されたページ数を示します。信頼度スコアの算出に部分的なメタデータが使われた場合、result.trust_metadata_complete は false になります。result.trust_pool_size は、信頼度スコアが相対評価される、同時にスコア付けされた依存元の数です(信頼度ランキングでない場合は 0 です)。これらのフィールドは結果に存在しますが、model_dump() と JSON シリアル化(model_dump_json())からは除外されます。 信頼度メタデータを取得できない場合、結果はスター数順にフォールバックします。信頼度ランキングが適用されたことを確認するには、result.ranked_by == "trust" を確認してください。trust_metadata_complete が示すのは、信頼度ランキングに成功した際に使用されたメタデータのみです。

認証

GitHub のパーソナルアクセストークンを使って、DEP_RANK_TOKEN 環境変数を設定します。

export DEP_RANK_TOKEN=ghp_your_token_here

実用的な用途では、事実上トークンが必要です。認証なしの GitHub HTML スクレイピングは IP あたり約 60 リクエスト/時に制限されるため、認証なしでの実行は、小規模な単発スクレイピングにのみ適しています。上限を引き上げるには、DEP_RANK_TOKEN を設定してください。

トークンなしで利用できる機能:

  • dep-rank deps — コアのスクレイピングとスター数順のランキング

トークンが必要な機能:

  • --descriptions フラグ — GitHub GraphQL API 経由でリポジトリの説明を取得します
  • --rank-by trust — GitHub GraphQL API 経由でエンゲージメント/最新性のメタデータを取得します
  • --trust-check — 信頼度ランキングに、認証済み REST のスター履歴リクエストを追加します
  • dep-rank search — 依存元全体を対象にコードを検索します
  • dep-rank mcp — どちらの MCP ツールも、サーバー環境で DEP_RANK_TOKEN が必要です

public_repo スコープを付与したトークンを、github.com/settings/tokens で作成してください。

仕組み

dep-rank は、次の3段階のパイプラインを使用します。

  1. スクレイピング — GitHub の /network/dependents HTML ページを取得し、GitHub が一覧表示する依存元リポジトリとそのおおよそのスター数を見つけます
  2. 詳細情報の取得(任意)— GraphQL のバッチクエリを1回実行し、上位 N 件の結果について正確なスター数と説明を取得します(REST API を個別に100回呼び出す方法に代わります)
  3. 表示 — 構造化された結果を Rich のテーブルとして返します

--downloads を指定すると、ランキング後に表示される行へパッケージのダウンロード統計情報を追加できます。

GitHub には、依存関係グラフが有効なリポジトリのみが一覧表示されます。2025年6月以降、新しいパブリックリポジトリではグラフがデフォルトで無効になり、長期間アクティビティのないリポジトリでも無効化されるため、実際の依存元リポジトリ数を把握できない場合があります。

レスポンスは、ETag をサポートするローカルの SQLite データベースにキャッシュされます(macOS では ~/Library/Caches/dep-rank、Linux では $XDG_CACHE_HOME/dep-rank または ~/.cache/dep-rank、Windows では %LOCALAPPDATA%\dep-rank\dep-rank\Cache)。認証済みの実行では、期限切れのページをすぐに返し、バックグラウンドで更新します(stale-while-revalidate)。未認証の実行では、期限切れのページをそのまま返し、更新は行いません。この場合、deps は stderr に通知を出力します。最新の結果を取得するには、トークンを設定するか、dep-rank cache clear を実行してください。

パッケージのダウンロード数

dep-rank deps https://github.com/django/django --downloads

--downloads は --repositories と --packages の両方で使用でき、トークンは不要です。表示される依存先ごとに、ecosyste.ms はパッケージ候補と npm 以外のカウントを提供し、deps.dev はアテステーションの証拠を提供します。npm のカウントは npm のダウンロード API(api.npmjs.org、直近30日間)から取得されます。npm 以外のカウントは ecosyste.ms のスナップショットであり、反映が遅れる場合があります。採用された候補のうち、ダウンロード数が最も多いパッケージが表示されます。カウントがスター数や信頼度のランキングに影響することはありません。

パッケージは、次のいずれかのルールを満たす場合に採用されます。

  • deps.dev が、少なくとも1つのアテステーションに verified: true と記された publish または SLSA アテステーションを通じて、パッケージとリポジトリを関連付けている。
  • 名前空間のないパッケージ名が、小文字化し、-、_、. を取り除き、さらに認識された言語の接尾辞を任意で1つ取り除いた後に、リポジトリ名と一致する。
  • 名前空間付きパッケージ(@scope/name、vendor/name、publisher/name)は、同じ正規化を適用したときに名前空間がリポジトリのオーナーと一致する場合に限り採用されます。名前空間より後の名前だけが一致しても不十分です。

removed と記されたパッケージは、アテステーションがあっても採用されません。✓ は、検証済みのアテステーションによってリポジトリとパッケージが関連付けられていることを示しますが、パッケージのビルド方法を証明するものではありません。名前だけで一致した印のないパッケージは未検証です。インストールする前に確認してください。第三者が一致する名前、または未登録のオーナーのスコープやベンダーの名前空間を登録している可能性があります。掲載が続いているマルウェアには、これらの検索結果に構造化されたフラグがありません。また、正規のパッケージが後に侵害される可能性もあります。dep-rank は脆弱性スキャナーではありません。既知の脆弱性を確認するには、pip-audit、npm audit、または OSV などのツールを使用してください。

カウントは水増しされていたり、古い場合があります。また、期間も異なります。/mo は先月、total は全期間を意味し、その他の期間は明示的に表示されます。これらの期間の生のカウントを直接比較することはできません。名前の照合では、正規のパッケージを見落とすこともあります(たとえば、リポジトリとパッケージの名前が異なる場合)。— は採用されたパッケージが見つからなかったことを意味し、unavailable は検索に失敗したことを意味します。検索に失敗しても deps の実行は継続でき、JSON モードの場合も含め、警告が標準エラー出力に表示されます。

サードパーティへのデータ送信: オプトインすると、表示された行のリポジトリ URL が ecosyste.ms と deps.dev に送信されます。表示された npm パッケージ名も api.npmjs.org に送信されます。検索リクエストに呼び出し元の認証情報は含まれません。

JSON には、リポジトリごとの downloads オブジェクト(または null)と、トップレベルの downloads_check が追加されます。このフラグを指定しない場合、これらのフィールドは省略されます。この例は説明用です。選択されるパッケージやカウントは変わる場合があります。

{
  "repos": [{
    "owner": "facebook",
    "name": "react",
    "downloads": {
      "ecosystem": "npm",
      "name": "react-is",
      "downloads": 1524448794,
      "period": "last-month",
      "verified": true
    }
  }],
  "downloads_check": {
    "complete": true,
    "unavailable": []
  }
}

ダウンロード数が null の場合、採用されたパッケージがないことを意味します。ただし、リポジトリの owner/name が downloads_check.unavailable に含まれている場合は、検索に失敗しており、downloads_check.complete は false です。

信頼度ランキング

dep-rank deps --rank-by trust は、生のスター数ではなく、軽量な複合スコアに基づいて依存先のランキングを並べ替えます。スター数は便利ですが、不正に操作される可能性があります。信頼度ランキングでは、スター数にスター数以外のシグナル(フォーク数、イシューとプルリクエストの合計数、アクティビティの新しさ)を組み合わせます。これらの情報は低コストの GitHub GraphQL クエリで取得します(1 リクエストあたり最大 25 リポジトリをまとめて取得するため、対象が多い場合は複数回リクエストします)。

dep-rank deps https://github.com/django/django --rank-by trust --token ghp_...

重要な注意点:

  • スコアは絶対的な品質スコアではなく、候補セット内での相対的なランキング指標です。スクレイピングした候補セット全体でシグナルを最小最大正規化します。
  • 並べ替えの対象はスクレイピングした候補プール(スター数上位 N 件の依存先)のみであり、すべての依存先ではありません。
  • スコアはヒューリスティックであり、偽のスター数を検出しません。 デフォルトではスター履歴を取得せず、オプションの --trust-check でサンプリングします。どちらのモードも GHArchive データや外部の不正行為データセットは取得しません。
  • 信頼度ランキングでは候補プールをより大きくスクレイピングするため、スター数ランキングより対象が広く、時間もかかります。
  • --rank-by trust には GitHub トークンが必要です。信頼度スコアは --format json の出力で各リポジトリの trust フィールドに表示されます。
スコアの計算方法

信頼度モードでは、スター数が最も多い依存先をまとめてスコア付けし、そのランキングの上位 --rows 件を表示します。スコア付けする件数(プール)は min(100, rows × 10) で、--rows 未満にはならず、一致する依存先が少ない場合はそれより少なくなります。デフォルトの --rows 10 では 100 件をスコア付けし、10 件を表示します。--rows 50 では 100 件をスコア付けし、50 件を表示します。--rows が 100 以上の場合、または一致する依存先が --rows 件以下の場合は、スコア付けした依存先をすべて表示します。

4 つのシグナルはそれぞれ(新しさを除き)対数スケーリングされ、プール全体で最小最大正規化されます。プール内の最小値は 0、最大値は 1 に対応し、その間の値は比例して正規化されます。プール内のすべてのリポジトリでシグナルの値が同じ場合(プールが 1 件の場合を含む)、そのシグナルはすべて 0.5 になります。スコアは加重合計に 100 を掛けて算出します。

シグナル重み
スター数35%
フォーク数25%
イシュー数 + プルリクエスト数(全期間)20%
最後のプッシュの新しさ20%
  • 100 は、すべてのシグナルでプール内の最高値であることを意味します。50 は、正規化されたシグナルの加重平均が 0.5 であることを意味します。中央値のランキングではありません。正規化はプールの最小値と最大値の間で線形に行われるため、外れ値が 1 つあると、プールの大半が 50 を大きく下回る場合があります。スコア 50 は、100 の「信頼度の半分」を意味するものではありません。
  • スコアを比較できるのは 1 回の実行内に限られます。対象、--rows、または --min-stars が変わるとプールも変わるため、すべてのスコアが変わります。
  • 表にはプールの上位が表示されるため、スコアは通常、高い値に集中します。デフォルトでは上位 10 分の 1 のみが表示されます。--rows 100 では全範囲を表示します。
  • 表のフッターには、スコア付けした依存先の件数と表示行数が記載されます。JSON には、シグナルごとの 0~1 の値が trust.components に含まれます。
スター履歴チェック
dep-rank deps https://github.com/django/django --rank-by trust --trust-check

この任意のチェックでは、GitHub の認証済み リポジトリのスター履歴 APIを使用して、返された上位最大 25 件のリポジトリについて、直近 30 週間の日ごとのスター数をサンプリングします。期間内のスター数が 200 件以上で、そのうち 15%以上が 1 日に集中している場合、concentrated_starring の注意情報を追加します。信頼スコアやランキングは変更しません。これは偽のスターの証拠ではありません。ローンチや Hacker News での急増も同じパターンに当てはまることがあります。スターに基づくシグナルを使う理由とその限界については、StarScout と以下の研究資料を参照してください。

テーブルのフッターには、チェックしたリポジトリ数と返されたリポジトリ数、集中したパターンの数、insufficient_history(期間内のスター数が 200 件未満)、unavailable(履歴を取得できなかった場合)が表示されます。JSON では、チェックがリクエストされた場合にのみトップレベルに trust_check のステータスが追加されます。例(抜粋):

{
  "trust_check": {
    "complete": true,
    "window_weeks": 30,
    "repos_checked": 1,
    "insufficient_history": [],
    "unavailable": []
  },
  "repos": [{
    "trust": {
      "cautions": [{
        "code": "concentrated_starring",
        "description": "300 of 1,000 stars in the last 30 weeks arrived on 2026-09-01"
      }]
    }
  }]
}

trust_check.complete が示すのは、サンプリング対象のリポジトリでの取得可能性であり、すべての結果やすべての過去のスターの網羅性ではありません。履歴を取得できない場合は false になりますが、ランキングは引き続き利用できます。信頼ランキングを利用できない場合、チェックはスキップされ、ステータスでは返されたリポジトリが取得不可として報告されます。このチェックではアカウントレベルのシグナルは使用しません。GitHub は 2026 年 7 月に、スターしたユーザーの一覧をリポジトリの管理者とコラボレーターに限定しました。このチェックでは、引き続きスター履歴の集計値を根拠とします。

注意シグナル

信頼度順に並べた結果には、デフォルトでは追加リクエストなしで同じメタデータ取得から生成される、情報提供を目的とした注意シグナルが付くことがあります。任意の --trust-check を指定すると、別途リクエストを行ってスター履歴に基づく注意情報を追加します。シグナルは JSON では各リポジトリの trust.cautions(code と description の組み合わせのリスト。空の場合もあります)に表示され、テーブルでは Cautions 列に短いタグとして表示されます。この列は、少なくとも 1 つの結果にシグナルがある場合にのみ表示されます。テーブルの下には、表示された各タグの説明が記載されます。

コードテーブルのタグ表示条件
low_non_star_activitylow-activityスター数が 500 件以上で、フォーク数とイシュー数+プルリクエスト数がどちらもスター数の 1%未満
stale_activitystaleスター数が 500 件以上で、365 日を超えてプッシュがない
archived_or_disabledarchivedリポジトリがアーカイブ済み、または無効
new_with_high_starsyoungスター数が 1,000 件以上で、作成から 180 日以内
concentrated_starringspike--trust-check を指定した場合のみ:サンプリング期間内のスター数が 200 件以上で、そのうち 15%以上が 1 日に集中

しきい値は固定の経験則です。スター数の下限は最小サンプルサイズの代わりとして設定されています。また、人気のリストやドキュメントのリポジトリではイシューが少ないことがよくあるため、低活動シグナルはフォーク数とイシュー/プルリクエスト数の両方が同時に少ない場合にのみ表示します。メタデータが欠落していてもシグナルは生成されません。経過時間に基づくシグナルは、実行時の scraped_at の時刻を基準に判定します。

**注意シグナルは、偽のスターや悪意ある行為の証拠ではありません。**詳しく確認する価値のあるパターンを示すものです。開発が完了したライブラリ、アーカイブ済みのプロジェクト、急速に話題になった新しいツールなど、正当なリポジトリも該当することがあります。信頼スコアは変更しません。

スターは操作可能だという背景には、StarScout(リポジトリ、 プレプリント、 ICSE 2026)の研究があります。 低リソースで利用できる API の根拠については、 GitHub GraphQL のレート制限に関するドキュメントを参照してください。

開発

# Prerequisites: Python 3.11+, uv
uv sync
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run mypy src tests

謝辞

dep-rank は、Andriy Orehov による ghtopdep を全面的に書き直したものです。元のプロジェクトは MIT ライセンスで公開されています。

ライセンス

MIT — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。