mcpField
H
Harvest

Harvest

ローカル
github.com検索15 週間前に更新

Harvest について

Harvestは、Hugging FaceとGitHubから学習データやコードを検索し、スコア付きのパックにまとめるMCPサーバーです。データ収集やソースコードの整理を行うエージェント向けで、サーバー内にLLMを含まずローカルミキサーを使います。

主な機能

  1. 01Hugging FaceとGitHubの並列検索
  2. 0212分野の専門クエリ
  3. 03学習データパックのカバレッジ評価
  4. 04選択元からのコードパック作成
  5. 05ファイルの解決・取得・バンドル
  6. 06GitHubへのバンドル公開

活用シーン

  1. 01モデル学習の目的に合うデータセット探し
  2. 02バランスの取れた学習データパックの作成
  3. 03エージェントのビルド用ソース収集
  4. 04出典情報付きバンドルの取得と公開

MCP 対応

HarvestはMCPツールとして、検索、専門クエリ、構成、パック作成、ファイルの解決と取得、GitHubへの公開を提供します。ローカルのstdioサーバーとして動作し、内部にLLMを含みません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"the-warl0ck-harvest": {
"command": "npx",
"args": [
"-y",
"@the_warl0ck/harvest-mcp"
]
}
}
}
起動コマンドnpx -y @the_warl0ck/harvest-mcp

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

パッケージ
npm@the_warl0ck/harvest-mcp0.1.0

ツール

5

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
topicstringはい自然言語のトピック。例:'image classification' または 'speech recognition'。
gh_tokenstringいいえレート制限を緩和するための任意の GitHub token。指定しない場合は GITHUB_TOKEN 環境変数にフォールバックします。
hf_tokenstringいいえレート制限を緩和するための任意の Hugging Face token。指定しない場合は HF_TOKEN 環境変数にフォールバックします。

詳細

harvest-mcp

平易な英語でトピックを入力 → 12 人の専門家が Hugging Face と GitHub を並行して調査 → 約 30 秒でカバレッジ評価済みのトレーニングパック JSON を出力します。

API キー不要。Bridge 不要。アカウント不要。任意の MCP ホストに接続すれば、すぐに使えます。LLM は内蔵していないため、考える役割はエージェントが担います。

Harvest はトレーニングデータを探すツールです。トレーニングしたい内容を平易な英語で説明すると (「画像分類」「医療の質問応答」など)、12 人のドメイン専門家 — コード、数学、科学、言語、ビジョン、音声、医療、法律、ナレッジ、安全性、感情、システム — がそれぞれ独自に厳選したクエリを使って、Hugging Face のデータセットと GitHub のリポジトリを調査します。ローカルミキサーが調査結果を組み合わせ、バランスが取れた、カバレッジ評価済みのトレーニングライブラリパック (flare-harvest-library v1 JSON)を作成します。これはあらゆるトレーニングパイプラインに渡せます。

インストール

npx github:The-Warl0ck/harvest-mcp

または、Claude Desktop に追加します(claude_desktop_config.json):

{
  "mcpServers": {
    "harvest": {
      "command": "npx",
      "args": ["github:The-Warl0ck/harvest-mcp"]
    }
  }
}

レート制限を引き上げるためのオプショントークンを指定する場合:

{
  "mcpServers": {
    "harvest": {
      "command": "npx",
      "args": ["github:The-Warl0ck/harvest-mcp"],
      "env": {
        "HF_TOKEN": "hf_...",
        "GITHUB_TOKEN": "ghp_..."
      }
    }
  }
}

要件:Node.js ≥ 20。

セッション例

あなた: 小規模なビジョン言語モデル用のトレーニングデータを探してください

harvest.search { "topic": "vision language instruction tuning" } → 約 40 件の結果:LLaVA-NeXT のデータ、the Cauldron、DOCCI、LLaVA のリポジトリなど…さらに 幅広くカバーする 12 人の専門家による総合調査(コード、数学、安全性など)

harvest.compose { "goal": "small vision-language model", "catalog": […] } → { "title": "small vision-language model", "picks": [ { "id": "lmms-lab/LLaVA-NeXT-Data", "expert": "vision", "why": "Anchor Vision on Hugging Face" }, … ], "rationale": "Local mixer staged 22 items across 12/12 experts. No mouth required.", "engine": "local" }

harvest.pack { "goal": "small vision-language model", "name": "VLM Mix v1", "catalog": […] } → coverage: { filled: 12, totalExperts: 12, balance: 0.94 } を含む flare-harvest-library v1 JSON と、各アイテムの ingest: { type: "hf-dataset" | "github-repo", ref } ポインター。

後半は、実際にファイルを扱う部分です。パックは最初はポインターであり、pull するとファイルになります。

harvest.resolve { "item": { "id": "openai/gsm8k", "source": "huggingface" } } → 取得対象のプレビュー:Parquet シャード 4 つと README。それぞれに一行の理由が付き、余計なものはありません

harvest.pull { "pack": {…}, "destination": "download" } → すべてのアイテムを解決して取得し、パックの index スタンザを更新して、 VLM Mix v1.harvest.zip を作成します。すべてのファイルと出所情報を示す MANIFEST.json がひとつにまとまります

harvest.push { "bundle": "/path/to/VLM Mix v1.harvest.zip", "owner": "you", "repo": "my-data", "token": "ghp_…", "create_if_missing": true } → 新しいプライベートリポジトリに、ファイルとマニフェストをひとつのコミットとして追加します。コミットメッセージには内容と入手元が記載されます

コードでも同じ流れを使えます。2 つ目のセッションでは、ビルド用パックを作成します。

あなた: いくつかの優れたリポジトリからレート制限のコードを集めて、エージェントが使ってビルドできるようにパッケージ化したいです

harvest.search { "topic": "express rate limiting middleware" } → code 専門家が、必要な部分を含むリポジトリを見つけます

harvest.pack { "goal": "add rate-limiting to my API", "name": "Rate Limit Parts v1", "catalog": […], "purpose": "code" } → flare-harvest-codepack v1 JSON。アイテムの形式は同じですが、トレーニングカバレッジの評価はありません

harvest.pull { "pack": {…}, "destination": "download", "kinds": ["code", "docs"] } → ソースファイルだけを取得します(重みとデータセットはスキップし)、.harvest.zip を作成します

harvest.push { "bundle": "…", "owner": "you", "repo": "rate-limit-parts", "create_if_missing": true } → エージェントがリポジトリを取得し、その部品を使ってビルドします

ツール

ツール機能
harvest.search{topic, hf_token?, gh_token?} — トピック検索と、12 人の専門家によるアトラス全体の一括検索を行い、重複を除去します
harvest.expert{expert, hf_token?, gh_token?} — 1 人の専門家が厳選したクエリを実行します(ID は 12 種類:code、math、science、language、vision、audio、medical、law、knowledge、safety、affect、systems)
harvest.latest{} — トレンド情報:最近更新された HF データセット、注目または最近の GitHub リポジトリ
harvest.compose{goal, catalog} — ローカルのミキサーがバランスの取れたセットを構成し、選択内容とその理由を提示します(ミキサー自体に LLM は不要です)
harvest.pack{goal, catalog, name, purpose?: "training" | "code"} — 構成して JSON にパックします。training(デフォルト)はセットをスコアリングし、flare-harvest-library v1 を出力します。code は flare-harvest-codepack v1 を出力します。これはエージェントが取得して組み立てる部品セットです
harvest.resolve{item, kinds?, hf_token?, gh_token?} — パック内の 1 項目について、取得するファイル、その理由、アクセス制限のある項目に対する needs_token を含む取得リストをプレビューします。kinds(例:["code","docs"])を指定すると、その種類のファイルだけをプレビューします。ダウンロードは行いません
harvest.pull{pack, destination: "local" | "download", kinds?, dir?, confirm_large?, hf_token?, gh_token?} — パック全体を解決し、取得して、インデックスを更新します。"download" を指定すると、.harvest.zip も作成します。kinds(例:["code","docs"])はコードパックのフローで使用し、ソースファイルのみを対象とします。重みやデータセットは含まれません。サイズ超過の取得では、まず needs_confirm が返されます
harvest.push{bundle, pack_name?, owner, repo, token, create_if_missing?, branch?, path?} — 1 回のコミットでバンドルを GitHub にプッシュします(作成時はデフォルトで非公開)

catalog の各項目は { id, source, expert, description? } です。harvest.search が返すオブジェクトをそのまま渡せます。

レート制限

すべて パブリックな Hugging Face API と GitHub API を利用します。認証なしの場合、次の制限があります。

  • Hugging Face: /api/datasets では匿名利用に十分なクォータがあります(一時的にリクエストが集中すると 429 が発生することがあります。結果はプロセス内で 12 分間キャッシュされます)
  • GitHub: 検索は IP ごとに 1 時間あたり 60 リクエストです。12 人の専門家による一括検索が最もリクエスト数の多い呼び出しです

実際に使用する場合は、環境変数または呼び出しごとの hf_token / gh_token 引数で HF_TOKEN / GITHUB_TOKEN(無料アカウントで取得可能)を設定してください。.env.example を参照してください。

パック形式

パックは flare-harvest-library v1 JSON です。詳しくは PACK-FORMAT.md を参照してください。

ポインターと取得済みデータ

新しいパックはデータではなくポインターです。各項目にはデータソースと取り込み方法が記載されますが、ファイルは含まれません。harvest.pull を実行すると、ポインターがファイルに変換され、その結果がパック JSON の追記型 index セクションに記録されます。

{ "index": { "openai/gsm8k": { "local": "/tmp/harvest-pulls/pack/openai__gsm8k",
  "url": "https://huggingface.co/datasets/openai/gsm8k", "kind": "dataset",
  "license": null, "fetched_at": "2026-09-26T…", "files": ["main/train-….parquet", …] } } }

v1 リーダーはこのセクションを安全に無視します。セクションがないパックは、ポインターのみのパックとして読み込まれます。destination: "download" を指定すると、ファイルと MANIFEST.json を含む .harvest.zip も作成されます(マニフェストには、ファイルごとのソース、URL、ライセンス、SHA-256 が含まれます。パックにライセンスの記載がない場合は、推測せず unknown と報告します)。

トークンの扱い

トークンは呼び出しごとに渡し、保存しません。

  • harvest.search / harvest.expert / harvest.latest / harvest.resolve / harvest.pull は hf_token / gh_token(または HF_TOKEN / GITHUB_TOKEN 環境変数)を受け付けます。 レート制限の緩和とアクセス制限のあるデータセットの取得に使用され、 Authorization ヘッダーでのみ送信されます。
  • harvest.push では、呼び出しごとの token(GitHub PAT、または GITHUB_TOKEN 環境変数)を指定します。
  • トークンがディスク、ログ、パックファイル、マニフェストに書き込まれることはありません。 取得再開用の記録ファイル(.harvest-fetch.json)に保存されるのは、パス、バイト数、 ハッシュのみです。

仕組み

  • src/harvest/scan-core.ts — HF/GitHub を並列スキャンし、結果を 12 分間キャッシュします
  • src/experts.ts — 12 人の専門家のアトラス(厳選したクエリ+シード項目)
  • src/harvest/compose-local.ts — ローカルミキサー(「口は不要」):専門家ごとに項目を 1 つ選び、次に HF/GitHub のソースのバランスを取り、その後カバレッジを補うように項目を追加します
  • src/coverage.ts — 12 人の専門家全体にわたるエントロピーベースのカバレッジ/バランス評価
  • src/harvest/compose-mouth.ts — オプトイン機能:ローカルミキサーの代わりに、OpenAI 互換の /v1 エンドポイント(LM Studio など)経由で構成します
  • src/harvest/resolve.ts — 「どのファイルを使うか」を判定する機能:HF Hub/GitHub のツリー一覧をデータ、重み、設定、コード、ドキュメントに分類します(純粋関数+薄い API クライアント)
  • src/harvest/fetch.ts — 実行部分:再開対応のストリーミングダウンロード、サイズ制限、進捗表示、ファイルごとの SHA-256 を提供します。トークンは関数の引数として渡され、保存されることはありません
  • src/harvest/bundle.ts — 取得したディレクトリと出所を記録する MANIFEST.json を .harvest.zip に圧縮します
  • src/harvest/push.ts — Git Data API 経由でバンドルを GitHub にプッシュします。コミットは 1 つで、デフォルトでは非公開です(// TODO(GitLab) の拡張箇所を概略実装済み)
  • src/harvest/index.ts — エージェント側:追加的な index スタンザと resolvePointer/getItemFiles/queryIndex
  • mcp/server.ts — MCP サーバー(stdio、低レベル SDK API、手書きのスキーマ)

ライセンス

Apache-2.0 — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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