AI Footprint について
AI Footprintは、プロンプト、一定期間の利用、トークン数に基づくセッションのエネルギー・水使用量を推定するホスト型MCPサーバーとJSON APIです。AIの環境負荷を調べる人やエージェント向けで、計算は決定論的であり、前提と方法も示します。
主な機能
- 01プロンプトや期間ごとの負荷を推定
- 02トークン数からセッション負荷を推定
- 03水使用量を身近な量と比較
- 04方法・出典・前提を提示
- 05読み取り専用MCPツールとJSONエンドポイント
活用シーン
- 01毎日のプロンプトの水・エネルギー使用量を推定
- 02トークン数からエージェントのセッションを評価
- 03推定値を日常の水使用量と比較
- 04公開推定値の違いの根拠を確認
MCP 対応
Streamable HTTP対応のホスト型MCPエンドポイントで、負荷・セッションの推定、水使用量の比較、方法の説明を行う4つの読み取り専用ツールを提供します。同じ機能はGET形式のJSON APIからも利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://footprint.pharmatools.ai/mcpclaude mcp add --transport http nickjlamb-ai-footprint https://footprint.pharmatools.ai/mcp{"mcpServers":{"nickjlamb-ai-footprint":{"type":"http","url":"https://footprint.pharmatools.ai/mcp"}}}Cursor で開く{"servers":{"nickjlamb-ai-footprint":{"type":"http","url":"https://footprint.pharmatools.ai/mcp"}}}VS Code で開く{"mcpServers":{"nickjlamb-ai-footprint":{"type":"http","url":"https://footprint.pharmatools.ai/mcp"}}}{"mcpServers":{"nickjlamb-ai-footprint":{"serverUrl":"https://footprint.pharmatools.ai/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| days | integer | いいえ | |
| usage | enum | いいえ | simple | mixed | intensive |
| boundary | enum | いいえ | onsite | comprehensive |
| queries_per_day | number | はい |
詳細
クイックスタート · ツール · 例 · アーキテクチャ · 方法論 · ロードマップ · コントリビューション
AI Footprint は、AI の利用による水とエネルギーの消費量を推定する MCP サーバーおよび JSON API です。チャットのプロンプト、1 年間の利用量、またはトークン数から算出するエージェントのセッション全体を推定できます。PharmaTools.AI AI Water & Energy Calculator の計算エンジンを、エージェントが呼び出せるツールとして提供します。
AI のプロンプトごとの水消費量として公表されている推定値は、0.3 mL から 50 mL まで幅があります。この差の大部分は、測定時期、計算範囲、対象となるワークロードの種類、データセンターの所有者によって説明できます。そのため、このサーバーの回答にはすべて、使用する境界、前提条件、方法論のバージョンを明記しています。数値をただ繰り返すのではなく、検証できます。
- 決定論的です。 どのツールもモデルを使用しません。公開済みでバージョン管理された方法論に基づく算術計算のため、同じ入力には同じ回答を返します。
- セットアップ不要です。 ホストされた読み取り専用エンドポイントです。API キー、インストール、アカウントは不要です。
- 情報源に準拠しています。 テストスイートによって、サーバーの出力と計算ツールのページの出力が常に一致することを確認しています。
クイックスタート
60 秒以内で、あらゆる MCP クライアントから利用できます。 ホストされたエンドポイントを追加してください。
https://footprint.pharmatools.ai/mcp
Claude Code
claude mcp add --transport http ai-footprint https://footprint.pharmatools.ai/mcp
Claude Desktop および claude.ai:「設定」→「コネクター」→ 「カスタムコネクターを追加」 の順に選択し、URL を貼り付けます。
Cursor(~/.cursor/mcp.json)
{
"mcpServers": {
"ai-footprint": { "url": "https://footprint.pharmatools.ai/mcp" }
}
}
その他の場合: ストリーミング可能な HTTP 経由のリモート MCP サーバーに対応するクライアントであれば利用できます。上記の URL を指定してください。
続けて、次のように尋ねてください。
ChatGPT のプロンプトを 1 日 30 回使うと、1 年の勤務期間で水をどれくらい消費しますか?
estimate_ai_footprint(queries_per_day=30, days=250)
→ 2.6 kWh and 10.5 L over 250 days (comprehensive boundary)
per prompt: 0.34 Wh, 1.39 mL · about 25.5 hrs of TV or 170 phone charges
methodology 2026-10 · source: pharmatools.ai/water-consumption-calculator
MCP を使わない場合: 同じツールを GET エンドポイントとして利用できます。
curl "https://footprint.pharmatools.ai/api/footprint?queries_per_day=30&days=250"
ツール
| ツール | 質問例 | 返される内容 |
|---|---|---|
estimate_ai_footprint | 「1年間、1日30回プロンプトを送信」 | プロンプトごと、1日あたり、合計のエネルギーと水の使用量を、日常的なものに置き換えた例や前提条件とともに示します。使用量の段階は simple(約0.34 Wh)、mixed(約1 Wh)、intensive(約3 Wh)です。境界は onsite または comprehensive です。 |
estimate_session_footprint | 「入力20万、キャッシュ済み300万、出力4万トークン」 | エージェントまたはコーディングセッションの中心推定値と0.3~3倍の範囲に加え、一般的なチャットのプロンプト何回分に相当するかを示します。 |
compare_water_use | 「500 mLは多いですか?」 | 小さじ、ボトル、シャワー時間に換算して示します。また、より広い境界を使用していることに注意したうえで、ライフサイクル項目(A4用紙、アーモンド、お茶、ハンバーガー)とも比較します。 |
get_methodology | 「推定値にこれほど差があるのはなぜですか?」 | プロンプトあたりの数値、両方の境界、出典、制約、引用用の一文、および公開されている推定値が約100倍異なる4つの理由を示します。 |
4つすべてに読み取り専用、冪等、閉世界の注釈が付いているため、クライアントは安全に呼び出せると判断できます。詳細はexamples/をご覧ください。Python MCP クライアント、依存関係のない JavaScript クライアント、すべてのエンドポイント用の curl、および完全な応答例が含まれています。
アーキテクチャ
flowchart LR
A["MCP clients<br/>Claude · Cursor · agents"] -->|/mcp| R
B["Scripts and browsers"] -->|/api/*| R
C["Calculator page<br/>pharmatools.ai"] -->|/tighten · /read-claim| R
subgraph app["One ASGI app · server/main.py"]
R{{"Path router<br/>CORS · rate limits"}}
R -->|"open CORS · 120/min"| M["MCP tools<br/>FastMCP, streamable HTTP"]
R -->|"open CORS · 120/min"| J["JSON API<br/>FastAPI GET routes"]
R -->|"pharmatools.ai only · daily caps"| T["Prompt tightener"]
M --> F[("footprint.py<br/>constants · sources · arithmetic")]
J --> F
end
T --> H["Claude Haiku"]
- 信頼できる情報源は1つです。
server/footprint.pyにすべての定数、出典、計算処理があります。MCP ツールと JSON API は薄いラッパーなので、相互に食い違うことはありません。また、テストで、どちらも計算ページの数値と一致することを確認しています。 - 1つのアプリに2種類のセキュリティポリシーがあります。 フットプリント関連のルートは公開された算術処理であり、CORS はすべて許可し、クライアントごとに毎分120リクエストを受け付けます。
/tightenは API クレジットを消費するため、計算ページからのリクエストのみを受け付け、IP ごとおよび全体の日次上限を設けています。小さな ASGI ラッパーが、パスに応じて適切なポリシーを適用します。 - ステートレスです。 データベースもセッションもありません。MCP サーバーはステートレスな JSON 応答モードで動作するため、どのインスタンスでもあらゆるリクエストに応答できます。レート制限はメモリ内に保存されるため、単一インスタンスでの運用を前提としています(ロードマップを参照)。
- デフォルトでプライバシーを保護します。 ログにはツール名またはエンドポイント名のみが記録されます。入力、プロンプト、IP アドレスは記録されません。
方法論
まずエネルギーを算出し、そこから水使用量を導きます。
| 数値 | 根拠 | |
|---|---|---|
| エネルギー、シンプルなテキストプロンプト | ~0.34 Wh | OpenAI のクエリごとの数値です。Google は Gemini のテキストプロンプトの中央値として 0.24 Wh を報告しています(2025 年) |
| エネルギー、画像または長い推論 | ~3 Wh 以上 | MIT Technology Review による分析(2025 年) |
水、onsite 境界 | ~1.0 mL/Wh | Google の開示から推定される、データセンターの冷却のみの数値です。公開されているプロバイダーの数値のうち、最も高いものを使用しています。 |
水、comprehensive 境界 | ~4.1 mL/Wh | 発電時に消費される ~3.1 mL/Wh を追加しています(米国の電力網の平均値、Li et al.)。 |
| 標準的なテキストプロンプト | ~0.34 mL(onsite)、~1.4 mL(comprehensive) | 広く引用されている 2023 年の推定値は、現在は存在しないハードウェアを対象としています。 |
セッションの推定値は、フロンティアモデルで入力約 1,000 トークン+出力約 400 トークンを標準的なプロンプト 1 回(0.34 Wh)に相当するよう調整しています。出力トークンのコストは入力の約 5 倍、キャッシュ読み取りは約 0.1 倍としています。これらは測定値ではなく仮定であるため、ツールはその旨を明示して範囲を返します。
制限事項。 プロバイダーの数値は査読を受けておらず、プロンプトの中央値を示し、トレーニングを除外しています。発電時の水使用量には米国の電力網の平均値を使用しています。結果は目安となる推定値です。
出典。 Google(2025 年) · OpenAI のクエリごとの数値 · Li et al., Making AI Less Thirsty · MIT Technology Review(2025 年) · Water Footprint Network
詳細な説明は計算ツールのページをご覧ください。方法論を変更した場合は、METHODOLOGY_VERSION を更新し、変更内容を変更履歴に記録します。より適切な出典をご存じですか?方法論に関する issue を作成してください。
JSON API
同じ 4 つのツールを、CORS を開放した GET エンドポイントとして利用できます。GET /api で一覧を確認できます。
| エンドポイント | パラメーター |
|---|---|
/api/footprint | queries_per_day(必須)、usage=simple|mixed|intensive、boundary=onsite|comprehensive、days |
/api/session | input_tokens、output_tokens(必須)、cached_input_tokens、model_class=small|frontier|reasoning、boundary |
/api/compare | water_ml(必須) |
/api/methodology | なし |
無効な入力には、許可される値を示すメッセージとともに 400 を返します。レスポンスは 1 時間キャッシュできます。クライアントごとの上限は 1 分あたり 120 リクエストです。
セルフホスティング
git clone https://github.com/nickjlamb/ai-footprint && cd ai-footprint/server
pip install -r requirements.txt
MOCK=1 uvicorn main:app --port 8000
# MCP at http://localhost:8000/mcp · JSON API at http://localhost:8000/api
MOCK=1 にすると、tightener は定型の書き換えを返すため、Anthropic キーは不要です。フットプリントツールは、どちらの場合もキーを使用しません。付属の Procfile は Railway、Render、Heroku などのプラットフォームでそのまま実行できます。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
ANTHROPIC_API_KEY | なし | MOCK=1 を設定しない場合、/tighten に必須です |
MOCK | 未設定 | 1 にすると、tightener は定型のレスポンスを返します |
MODEL | claude-haiku-4-5 | tightener 用のモデル |
ALLOWED_ORIGINS | https://www.pharmatools.ai,https://pharmatools.ai | /tighten の CORS 許可リスト |
PER_IP_PER_MIN / PER_IP_PER_DAY | 4 / 25 | クライアントごとの tightener の制限 |
GLOBAL_PER_DAY | 1500 | 全クライアントを対象とする tightener の 1 日あたりの上限 |
MAX_INPUT_CHARS | 1500 | tightener の入力上限 |
PUBLIC_PER_IP_PER_MIN | 120 | /mcp と /api/* の制限 |
DOCS_URL | https://www.pharmatools.ai/mcp#footprint | / のリダイレクト先 |
PROXY_ENTRIES | 1 | ホスティングプロキシが X-Forwarded-For の右側に追加するエントリー数(Railway:1)。レート制限では、その直前のエントリーを使用します。それより左にある値は無視されます |
POST /tighten は、計算機ページにある「最初のプロンプトを唯一のプロンプトに」というツールを動かします。下書きのプロンプトを Claude Haiku に送り、事実を捏造する代わりに [placeholders] で不足部分を補い、初回で使える回答が得られるように書き直します。ページには、書き直しによって使った水の量と、これによって減らせるはずの追加質問で使う水の量も表示されます。フットプリント計算ツールとは異なり、モデルを呼び出すため、厳しく制限されています。CORS は pharmatools.ai のみ、入力上限は 1,500 文字、IP ごとおよび日ごとの上限、ツール出力の強制、プロンプトのログ記録なしという設定です。ページへの埋め込みコードは web/prompt-tightener-embed.html にあります。
POST /read-claim は、同じページにある見出しチェッカーを動かします。よく知られた主張や単純な数値は、ページ側でブラウザー内で読み取ります。それができず、訪問者が希望した場合に限り、その主張をこのエンドポイントに送信します。モデルは主張の内容(量、単位、何あたりの量か)を抽出するだけで、ページでは固定ルールに基づいて説明します。/tighten と同じ保護策が適用されます。
開発
cd server
pip install -r requirements.txt -r requirements-dev.txt
MOCK=1 python -m pytest -q # tests, including parity with the calculator page
ruff check .. # lint
CI では Python 3.10 から 3.13 で lint とテストを実行し、その後サーバーを起動して、MCP クライアントのサンプルを使ったエンドツーエンドのテストを行います。v* タグをプッシュすると、変更履歴から取得したリリースノートとともに GitHub リリースが公開されます。
server/
footprint.py constants, methodology and arithmetic (single source of truth)
mcp_tools.py the four MCP tools
main.py ASGI app: /mcp, /api/*, /tighten, /read-claim, CORS and rate limits
test_footprint.py parity, validation and HTTP tests
examples/ MCP client, JS and curl examples, captured outputs
web/ calculator-page embed for the tightener
server.json MCP Registry entry
プライバシー
ホスト型サーバーは、質問の内容を一切記録しません。ログに含まれるのは呼び出されたツールまたはエンドポイントの名前だけで、入力、プロンプト、IP アドレスは記録されません。クライアントの IP アドレスは、レート制限の適用に必要な間だけメモリ上に保持されます。ログへの記録やディスクへの書き込みは一切行われず、サーバーの再起動時に破棄されます。データベースもアカウントもありません。サーバーは Railway 上で稼働し、他者と情報を共有することはありません。ポリシー全文:pharmatools.ai/privacy-policy。お問い合わせ:[email protected]。
コントリビューション
特に、より優れた情報源の提案を歓迎します。まずは CONTRIBUTING.md をお読みください。数値を変更する際は、サーバーと計算機ページの内容を一致させるため、簡単な方法論の確認手順に従います。セキュリティ上の問題は、公開の Issue ではなく SECURITY.md に従って報告してください。
計算機をサイトに埋め込む
1 行で設定でき、アカウントもキーも不要です。WordPress、Webflow、Squarespace、Ghost など、script タグを使えるあらゆるサイトで動作します。
<script src="https://footprint.pharmatools.ai/widget.js" data-theme="auto" data-prompts="25" data-mix="text" async></script>
オプション:data-theme(light、dark、auto)、data-accent(0d7377 のような 16 進数の色)、data-prompts(1~200)、data-mix(text、mixed、intensive)、data-basis(comprehensive、onsite)。スクリプトを使用できない場合は、iframe を直接使ってください。
<iframe src="https://footprint.pharmatools.ai/widget?theme=auto&prompts=25" title="AI water and energy calculator" width="100%" height="560" style="border:0;max-width:640px" loading="lazy"></iframe>
ウィジェットは API と同じ数値と方法論のバージョンを使用し、すべての計算を訪問者のブラウザー内で実行し、Cookie を設定しません。計算機ページには、ライブプレビュー付きのビルダーがあります。
引用
Lamb, N. (2026). AI 利用の水とエネルギーのフットプリントを推定するエネルギー優先の方法(方法論 2026-10)[プレプリント]. Zenodo. https://doi.org/10.5281/zenodo.23417340
GitHub の このリポジトリを引用 ボタンから、CITATION.cff に記載されたソフトウェアの引用情報を取得できます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。