mcpField
G
Good Earth

Good Earth

リモート
goodearth.tollbooth-dpyc.com地図・旅行0今日更新
リポジトリ公式サイト

Good Earth について

Good Earthは、特定の区画に合わせた季節情報を提供する、栽培者向けの気候分析MCPサーバーです。保存した区画ごとに条件を計算し、全体の値と区画内のばらつきを示します。

主な機能

  1. 01ポリゴンまたは半径指定で区画を保存
  2. 02霜の時期と地温の予測
  3. 03栽培時期と作物の進捗
  4. 04害虫・病害・野生動物のツール
  5. 05地形に基づく区画内の差の推定

活用シーン

  1. 01農場内の畝ごとの霜条件を比較
  2. 02地温が栽培基準に達する時期を推定
  3. 03積算温度をもとに作物の生育を追跡
  4. 04周辺種と季節ごとの害虫リスクを確認

MCP 対応

Good Earthは、ストリーミングHTTP対応のリモートサーバーを通じて、区画・季節・害虫・野生動物・計画のツールをMCPクライアントに提供します。一部のツールは無料で、その他の呼び出しはTollbooth DPYCのマイクロペイメントで利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://goodearth-mcp.fastmcp.app/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

85
パラメーター型必須説明
npubstringはい残高を確認する Nostr 公開鍵(npub1...)。
dpop_tokenstringはい呼び出し元が npub を保持していることを証明するもの:receive_npub_proof からの許可エンベロープ、または npub で署名された kind-27235 Nostr イベントの生 JSON(`u` タグがこのツール名になっているもの)。

詳細

Good Earth

小規模な特産作物農家や花農家向けの地域限定型気候分析サービスです。 Tollbooth DPYC™ Bitcoin Lightning のマイクロペイメントで収益化しています。

Good Brew ストアの姉妹サービスです。

  • 栽培者向け: ウェブアプリは https://goodearth.tollbooth-dpyc.com です
  • AI エージェント向け: MCP サーバーは https://goodearth-mcp.fastmcp.app/mcp (ストリーミング可能な HTTP)です。ウェブアプリが呼び出すツールと同じものを利用します。

AI エージェントを接続する

リモートサーバーの URL を指定できる MCP クライアントなら接続できます。アカウントも API キーも必要ありません。

クライアント方法
Claude.ai / Claude DesktopCustomize → Connectors → Add custom connector → https://goodearth-mcp.fastmcp.app/mcp(OAuth フィールドは空欄のままにしてください)
Claude Codeclaude mcp add --transport http goodearth https://goodearth-mcp.fastmcp.app/mcp を実行するか、プロジェクトの .mcp.json に次を記述します:{"mcpServers": {"goodearth": {"type": "http", "url": "https://goodearth-mcp.fastmcp.app/mcp"}}}
Cursor.cursor/mcp.json:{"mcpServers": {"goodearth": {"url": "https://goodearth-mcp.fastmcp.app/mcp"}}}
VS Code.vscode/mcp.json:{"servers": {"goodearth": {"type": "http", "url": "https://goodearth-mcp.fastmcp.app/mcp"}}}

リポジトリのルートにある server.json は、公式の MCP Registry に io.github.lonniev/goodearth-mcp として登録するためのエントリです。これは DPYC の他のサービスが登録されている名前空間です。.github/workflows/publish-mcp-registry.yml は、すべての v* タグでこれを公開します。GitHub OIDC でログインし、タグからバージョンを取得するため、保持しておくキーはありません。コミット済みの version が pyproject.toml と一致することをテストで確認します。

初回接続の手順
  1. 栽培者に Nostr npub を尋ねます。nsec を尋ねてはいけません。
  2. goodearth_request_npub_proof(patron_npub=…) を呼び出して DM を送信します。栽培者は Nostr クライアントから返信します。その後、リクエストで返された nonce を使って goodearth_receive_npub_proof(patron_npub=…, nonce=…) を 1 回だけ 呼び出します。以降、接続には npub が保持されるため、有料の呼び出しでは npub だけを渡します。
  3. goodearth_check_balance を呼び出します。goodearth_purchase_credits(栽培者が支払う Lightning インボイス)と goodearth_check_payment でチャージします。
  4. goodearth_block_list を呼び出します。保存済みの土地、または出発点として使える実例が表示されます。

証明なしで無料で使えるのは、goodearth_service_status と goodearth_oracle_* ツールです。goodearth_check_price では料金を事前に確認できます。コールドスタートで接続するエージェント向けに、サーバー独自の instructions にもこれらの手順がすべて記載されています。

アイデア

農場は一点ではありません。 同じ農地にある畝とくぼ地でも霜が降りる日は異なります。一方、無料の天気計算ツールはどれも、指定した地点の情報しか返しません。

Good Earth が回答するのは、土地についてです。栽培者は goodearth_block_save を使って区画を ブロック として一度保存します。名前とともに、GeoJSON ポリゴンまたは {lat, lon, radius_m} 形式の地点を登録できます。それ以外のすべてのツールでは、ブロックの ID、名前、別名、またはそのブロックだけに一致する名前の一部を指定します。各ツールはブロック内の地形をサンプリングし、集計値に加えて、ブロック内のばらつきも返します。このばらつきこそが、このサービスの価値です。栽培者は、ブロック全体で同じ植え付け日を使えるかどうかを判断できます。

ブロックは重なったり、入れ子になったりしてもかまいません。畑の中のベッドも、それ自体が独立したブロックです。栽培者が育てているもの、注意していること、実際に確認したことは goodearth_block_item_save でブロックごとに記録するため、シーズン関連のツールを使うときにリストを渡す必要はありません。

      YOU (operator, human in the loop)
        │                         │
        │ set & tune prices       │ drive credential intake
        ▼                         ▼
  ┌───────────────┐        ┌──────────────────────────────────────────────┐
  │ Pricing Studio│ prices │        Good Earth — OPERATOR MCP              │
  │    (iOS)      ├───────▶│        FastMCP · deployed on Horizon          │
  └───────────────┘  Neon  │  ┌────────────────────────────────────────┐  │
                           │  │ region · sources · gdd · season        │  │
   Patron (Citizen)        │  │ @runtime.paid_tool(FROZEN_UUID) tools   │  │
   + MCP client  ─────────▶│  ├────────────────────────────────────────┤  │
   (Claude, the SPA) npub  │  │ tollbooth-dpyc SDK (the wheel)          │  │
                    +sats  │  │  ledger · vault (AES-256-GCM) · pricing │  │
                           │  │  ConstraintGate · Secure Courier·audit  │  │
                           │  └────────────────────────────────────────┘  │
                           └───┬─────────┬──────────┬───────────┬─────────┘
                               ▼         ▼          ▼           ▼
                         Neon Postgres  BTCPay▶  Sponsor     Nostr relays
                         (your schema)  Lightning Authority   proofs·courier
                         ledger+pricing invoices  certify +    DMs·audit
                                                  provision        │
                     Open-Meteo archive ◀── domain   │             ▼
                     forecast · elevation   calls    └──▶ DPYC Oracle +
                                                          dpyc-community

ばらつきが実際にどのように生み出されるか

これは製品全体の基盤となる設計上の決定なので、埋もれさせず明確に述べます。

無料のグリッド化された気温データフィードの解像度は、最良でも約 2 km(アーカイブされた高解像度モデルの実行結果)、ERA5 再解析では 9 km です。同じ農場の 2 つのサンプル地点が同じセルに入り、バイト単位で同一の数値を返すことがあります。それを「地域内のばらつき」として報告するのは、データを装った嘘です。一方、地形の解像度は 90 m であり、農場内で変化するのは地形です。

そのため Good Earth は、グリッド化されたデータフィードから地域の傾向を読み取り、標高から地域内のばらつきを導き出します。

影響対象理由
気温減率(1000 フィートあたり 3.57 °F)最高気温と最低気温標高が高いほど気温が低い
冷気の流出(上限 6 °F)最低気温のみ霜が発生する、風が弱く晴れた夜には、密度の高い冷気がくぼ地にたまる

すべての応答には、使用した各データフィードの本来の解像度が含まれるため、栽培者にデータが持たない精度を売り込むことはありません。

ツール

以下の各ツールは、特記がない限り保存済みの block を受け取ります。

ツール回答する内容
土地
goodearth_block_save区画(ポリゴンまたはピン)を名前と別名を付けて保存します。1 回の呼び出しで複数の畝を保存できます
goodearth_block_list保存済みの区画とその境界を表示します。まだ何も保存されていない場合は、実例を表示します
goodearth_block_transform区画内の畝の配置案を提示します。データは書き込みません
goodearth_block_item_save、goodearth_block_item_list区画で育てているもの、監視対象、見つかったもの、種として保管しているもの
goodearth_forget_my_groundすべての区画と、そこに記録されたすべての情報を削除します(無料)
季節
goodearth_gdd_season_curve今季これまでの積算温度を過去 10 シーズンと比較します
goodearth_frost_windowこの土地で通常霜が降りる時期と、今週霜が降りそうかどうか
goodearth_soil_temp_projection地温が植え付けの基準温度に達する時期
goodearth_planting_window種まきを始める時期、苗を植え付ける時期、収穫までに間に合う最終日
goodearth_crop_gdd_statusそれぞれの植え付けの進み具合と、霜が降りる前に収穫できるかどうか
goodearth_crop_suitabilityこの土地で収穫まで育つ作物と、収穫までの余裕
goodearth_almanacこの土地の空の記録。平年の状況、実際の状況、これからの見通し
goodearth_drying_window朝露が乾く時刻、これからの晴天日、次の雨
goodearth_sunlight月ごとの区画内の直射日光の時間数と、太陽光パネルの発電量
害虫、病気、野生動物
goodearth_pest_catalog、goodearth_pest_thresholdここでモデル化されている害虫のステージと、積算温度による各ステージの進行状況
goodearth_disease_risk葉面濡れ時間と、それを踏まえた病害モデルの評価
goodearth_nearby_speciesこの土地の近くで記録されたものを、1 ページずつ表示します
goodearth_wildlife_catalog、goodearth_wildlife_calendarこの土地の周辺で記録された動物と、その到来時期
樹木とコンパニオンプランツ
goodearth_tree_suitabilityこの土地で樹木が生育できるか、必要な低温遭遇時間を満たせるかどうか
goodearth_tree_yearこの土地に春が訪れた時期と、樹液の動き
goodearth_companions1 つの植え付けに適したコンパニオンプランツ。引用された科のルール(iNaturalist の分類体系)に基づく相性、または栽培者自身が選んだ花の色、高さ、開花時期に基づくデザイン
計画
goodearth_plan_the_seasonワークフローとして進める、季節計画のための対話(block は不要)
goodearth_review_rosterこの土地の記録に照らして作付けリストを監査します
goodearth_calibration区画独自の現地報告を、モデルの補正値に変換します
goodearth_task_save、goodearth_task_list、goodearth_task_set_done、goodearth_task_delete農場のタスクリスト
カレンダーフィード
goodearth_calendar_dataset区画の日付入り季節データを計算し、カレンダーフィードとして公開できるよう保存します
goodearth_calendar_fetch、goodearth_calendar_list、goodearth_calendar_revokeフィードの読み取り、一覧表示、公開停止を行います(無料)

標準の DPYC ツール(check_balance、purchase_credits、Secure Courier、 Oracle、料金、制約)は register_standard_tools を通じて wheel から提供されます。これらはここでは再実装されていません。

データソース

すべて公開データです。すべて無料で、キーが必要なのは EIA フィードだけです。任意の eia_api_key を運営者が Secure Courier で受け取り、Sun ページでその地域の 1 kWh の販売価格を 表示できます。

ソース役割ネイティブ解像度
Open-Meteo のアーカイブ済みモデル実行観測された日ごとの最高/最低気温、進行中のシーズン約 2 km
Open-Meteo アーカイブ(ERA5)日ごとの記録の代替データ、日照用の時間ごとの放射量約 9 km
Daymet v4(NASA ORNL)平年値用の北米の長期的な日ごとの履歴1 km
Open-Meteo 予報7 日間の延長予報モデルにより約 2〜11 km
Open-Meteo 標高(SRTM)地形のダウンスケーリング約 90 m
Copernicus GLO-30 DEM、Meta/WRI の樹冠高、CGLS の土地被覆日照用の地形、樹木、日陰30 m、1 m、100 m
iNaturalist、GBIF、USA National Phenology Network近隣で記録された種、Companions 用の科と属、フェノロジー—
EIA の小売電力料金、DOE の太陽光発電コスト基準、Nominatim州ごとの 1 kWh の販売価格と 1 kW のコスト—

地域全体のシーズン情報の取得に必要な上流リクエストは、サンプル数にかかわらず3 回です。サンプル地点をアーカイブ独自のグリッドに対応させるため、個別のセルは一度だけ取得されます。また、10 シーズン分の平年値の範囲は、10 回に分けて呼び出すのではなく、1 回の範囲指定リクエストで取得し、ローカルで切り分けます。

導入ロードマップ

  1. Nostr キーペア — 1 つ生成します(nak key generate)。サーバーに必要な環境変数は 1 つだけです(TOLLBOOTH_NOSTR_OPERATOR_NSEC)。
  2. Sponsor Authority — 登録すると、Neon データベースがプロビジョニングされます。
  3. Secure Courier — goodearth_request_credential_channel を使って、btcpay_host、btcpay_api_key、 btcpay_store_id(および任意で eia_api_key)を受け渡します。環境変数やコードには決して保存しないでください。
  4. Pricing Studio で価格を設定 — 新しいツールには初期価格が設定されていないため、価格未設定のツールは誰も呼び出せません。
  5. Horizon にデプロイ — fastmcp.json はすでに設定済みです。

Pricing Studio (iOS)を入手してください。 Neon の料金モデルをリアルタイムで読み書きするため、価格をコードに保存する必要はありません。価格の急騰、ハッピーアワー、ロイヤルティ割引、無料トライアルは、固定料金のペイウォールでは決して実現できない仕組みです。

SPA

frontend/ には Good Earth アプリが含まれています(taxsort-mcp のパターンで、1 つのリポジトリに React アプリを含めています)。サインインと Nostr プロフィールパネルには、フリート共通の @tollbooth-dpyc/web パッケージを使用しています。アカウントはありません。栽培者は npub です。

栽培者の区画、その区画に記録された内容、タスク、公開カレンダーフィードは、npub に紐付けて運営者の Neon データベースに保存されます。区画の名前、別名、境界は SDK のボルト暗号化方式で暗号化されます。区画に記録された項目(作物名、種、圃場レポート)は、並べ替えや検索ができるよう、暗号化せずに保存されます。goodearth_forget_my_ground を実行すると、それらすべてが削除されます。栽培者の残高と購入履歴は、パトロンに紐付けたまま保持されます。

開発

uv venv --python python3.12          # coincurve has no 3.14 wheel
uv pip install -e ".[dev]"
ruff check .
pytest -v
python -m goodearth_mcp.server       # runs the validate_operator_tools guard

cd frontend && npm install && npm run build

ライセンス

Apache-2.0

コメント

MCP は初めてですか?

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

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