FOCUS MCP Server
FOCUS MCP サーバー
AI アシスタントに、クラウドの実際のコストを尋ねましょう。この MCP(Model Context Protocol)サーバーは、Claude や他の MCP クライアントを FOCUS の請求データに接続し、次のような質問を 手書きの SQL ではなく 1 行のプロンプトに変えます。
「今月、リージョン別で最もコストが高いサービスは?」
「コミットメント割引の利用トレンドを見せて。」
「異常な支出パターンがあるアカウントは?」
「BilledCost と EffectiveCost の違いを説明して。」
内部では DuckDB が Parquet エクスポートを直接クエリします。 ローカルディスク、S3、GCS のどこにあっても構いません。データウェアハウスを 構築する必要はありません。サーバーには、公式の FOCUS ユースケースカタログから 厳選された 254 のクエリが、仕様バージョンごとに別々のコレクションとして バンドルされています(v1.0 は 36、v1.1 は 41、v1.2 は 53、v1.3 は 58、v1.4 は 66)。 各クエリには出典ページが記載されています。
FOCUS とは?
FOCUS(FinOps Open Cost & Usage Specification)は、 クラウド請求データのオープン標準です。AWS、Microsoft、Google Cloud は これをネイティブにエクスポートするため、1 つのスキーマと 1 セットのクエリが 複数のプロバイダーで機能します。
Related MCP server: AWS FinOps MCP Server
クイックスタート
1. FOCUS データを取得する
各プロバイダーには公式のエクスポートパスがあります:
AWS: AWS 向け FOCUS セットアップガイド(Data Exports → FOCUS 1.0 または 1.2)
Microsoft Azure: Microsoft 向け FOCUS セットアップガイド
Google Cloud: Google Cloud 向け FOCUS セットアップガイド、または下記の GCS + BigQuery を参照
その他のプロバイダー: すべての FOCUS セットアップガイド
サーバーは Hive パーティショニングで Parquet を読み取ります:
/path/to/your/focus/data/
├── billing_period=2025-05/
│ ├── file1.parquet
│ └── file2.parquet
├── billing_period=2025-06/
│ └── ...2. サーバーを実行する
最も簡単な方法はコンテナを必要としません。uvx が公開パッケージを取得して
1 ステップで実行します:
claude mcp add focus -e FOCUS_DATA_LOCATION=/path/to/your/focus/data -- uvx focus-mcpClaude Desktop の場合は、claude_desktop_config.json にこれを追加します:
{
"mcpServers": {
"focus": {
"command": "uvx",
"args": ["focus-mcp"],
"env": {
"FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
"FOCUS_VERSION": "1.0"
}
}
}
}Application Default Credentials で GCS を読み取るには gcs エクストラが必要です。
uvx は名前を指定するとインストールします:
claude mcp add focus -e FOCUS_DATA_LOCATION=gs://your-bucket/focus \
-- uvx --from 'focus-mcp[gcs]' focus-mcpDocker も引き続き利用可能で、固定された検証済みイメージが必要な場合に適しています。
イメージはリリースのたびに Docker Hub と GitHub Container Registry に公開されます:
docker pull glassity/focus-mcp:latest # Docker Hub
docker pull ghcr.io/glassity/focus-mcp:latest # GHCRClaude Code の場合は、1 つのコマンドで:
claude mcp add focus -- docker run -i --rm \
-v /path/to/your/focus/data:/data:ro \
-e FOCUS_DATA_LOCATION=/data \
glassity/focus-mcp:latestClaude Desktop の場合は、claude_desktop_config.json にこれを追加します:
{
"mcpServers": {
"focus": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/your/focus/data:/data:ro",
"-e", "FOCUS_DATA_LOCATION=/data",
"-e", "FOCUS_VERSION=1.0",
"glassity/focus-mcp:latest"
]
}
}
}S3 または GCS データの場合は、ボリュームマウントを外して FOCUS_DATA_LOCATION を
バケットに向けます。認証情報のオプションについては データの場所 を参照してください。
3. 質問する
クライアントを起動して試してみましょう:
Show me what FOCUS data is loaded.アシスタントは get_data_info を呼び出し、行数、日付範囲、プロバイダーを報告します。
そこから、平易な言葉で質問します:
Run the service costs by region analysis for the last 3 months.
Show me the top 10 most expensive services across all accounts.
Find unused capacity reservations I can optimize.
Compare costs across providers and regions.
What columns are available in FOCUS v1.4?ツール
8 つのツールを 2 つのグループに分けています。
データとクエリ:
ツール | 機能 |
| 読み込まれたデータを検査:行数、日付範囲、プロバイダー |
| FOCUS バージョンに対応する定義済み分析クエリを閲覧 |
| 1 つのクエリの詳細:SQL、パラメータ、仕様への引用 |
| 定義済みクエリまたはカスタム SQL をデータに対して実行 |
スキーマと仕様:
ツール | 機能 |
| 型と必須レベルを含むすべての FOCUS 列 |
| 1 つの列の完全な定義 |
| FOCUS のフォーマット標準と規約 |
| 1 つの属性の完全な要件 |
スキーマツールは FOCUS 仕様自体から回答するため、アシスタントは列の意味を 説明するだけでなく、クエリを実行することもできます。
クエリライブラリ
すべてのクエリは公式の FOCUS ユースケースカタログ から抽出され、 ソースページへの引用が付いています:
FOCUS v1.0: 36 クエリ
FOCUS v1.1: 41 クエリ
FOCUS v1.2: 53 クエリ
FOCUS v1.3: 58 クエリ
FOCUS v1.4: 66 クエリ
対象範囲には、コスト配分、コミットメント割引の追跡、異常検知、
予算照合、プロバイダー比較が含まれます。FOCUS_VERSION でアクティブな
セットを選択します。プロバイダーがエクスポートするものに合わせてください。
仕様はエクスポートよりも先行しています(AWS Data Exports は現在 FOCUS 1.0 と
1.2 を提供)ので、1.3 と 1.4 のコレクションはプロバイダーが提供する日に
備えて準備されています。
データの場所
ローカルファイル
export FOCUS_DATA_LOCATION="/path/to/your/focus/data"AWS Data Export のダウンロードコピー(aws s3 sync、マウントされたボリューム)は、
コピーされたときのマニフェストを通じて読み込まれます。バケット自体とまったく
同じ方法です。下記を参照してください。
Amazon S3
export FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports"
export AWS_REGION="us-west-2" # defaults to us-east-1場所をエクスポートのルート、つまり data/ と metadata/ の両方を含む
プレフィックスに向けます。AWS Data Exports は、最新の配信のすべてのファイルを
metadata/ の下の請求期間ごとのマニフェストにリストします。サーバーは
マニフェストがある場合、それらのファイルを読み込みます。プレフィックスに
残された置き換えられたチャンクや再配信された期間は無視され、二重カウント
されません。マニフェストがない場所(BigQuery エクスポート、Parquet ファイルの
ディレクトリ)は、その下のすべての Parquet ファイルをグロブして読み取ります。
get_data_info はどちらが使用されたかを報告し、ファイルリストは数分ごとに
更新されるため、新しい配信のために再起動する必要はありません。
認証は標準の AWS 認証チェーンを使用します。順に、IAM ロール(EC2/ECS/Lambda で
自動)、AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY 環境変数、AWS_PROFILE、
次に ~/.aws/credentials です。
export AWS_PROFILE="billing-reader" # use a specific profile一部のバケットはキーを先頭のスラッシュ付きで保存します。リストが失敗する場合は、
バケット名の後に二重スラッシュを試してください:s3://your-bucket//focus/path。
Docker で実行する場合は、認証情報を -e 変数として渡すか、プロファイルを
読み取り専用でマウントします:
docker run -i --rm \
-v "$HOME/.aws:/home/mcp/.aws:ro" \
-e FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports" \
-e AWS_REGION="us-west-2" \
-e AWS_PROFILE="billing-reader" \
glassity/focus-mcp:latestGoogle Cloud(GCS + BigQuery FOCUS エクスポート)
Google Cloud は請求を FOCUS 形式でネイティブにエクスポートします: Billing → Billing export → FOCUS usage cost(プレビュー)は FOCUS テーブルを BigQuery に書き込みます。それを GCS バケットの Parquet にエクスポートします:
EXPORT DATA OPTIONS (
uri = 'gs://your-bucket/focus-export/*.parquet',
format = 'PARQUET',
overwrite = true
) AS
SELECT * FROM `your-project.your_focus_dataset.your_focus_table`;そのステートメントを BigQuery のスケジュール済みクエリとしてスケジュールし、 バケットを最新に保ちます。これにより、FOCUS エクスポートの 2 年間の TTL を超えて データもアーカイブされます。次に:
export FOCUS_DATA_LOCATION="gs://your-bucket/focus-export"認証は次の順序で試行されます:
HMAC キー:
GCS_HMAC_KEY_IDとGCS_HMAC_SECRETを設定します(gcloud storage hmac create <service-account-email>で作成)。このパスは DuckDB のネイティブ GCS サポートを S3 相互運用 API 経由で使用し、追加の 依存関係は必要ありません。Application Default Credentials:Docker イメージに含まれています。ソース チェックアウトからは、
uv sync --extra gcsでエクストラをインストールします。 その後、通常どおり認証します:gcloud auth application-default login、GOOGLE_APPLICATION_CREDENTIALSによるサービスアカウント JSON、 または GCE/GKE でのワークロード ID。認証情報なし:パブリックバケットのみ。
2 つの方法があるのは、DuckDB の組み込み GCS サポートが HMAC のみを話すためです。
ADC はオプションの gcsfs 依存関係から来ます。認証情報はサーバープロセス内でのみ
読み取られ、MCP クライアントに公開されることはありません。
設定
変数 | デフォルト | 説明 |
|
| Parquet の場所:ローカルパス、 |
|
| FOCUS 仕様バージョン: |
|
| S3 アクセスのリージョン |
| (未設定) | S3 認証用の AWS プロファイル |
| (未設定) | ロールまたはプロファイルを使用しない場合の静的 AWS 認証情報 |
| (未設定) | GCS 用の HMAC 認証情報 |
| (未設定) | ADC 経由の GCS 用サービスアカウント JSON |
開発
git clone https://github.com/glassity/focus-mcp.git
cd focus-mcp
uv sync # install, including dev tools
uv sync --extra gcs # + GCS ADC support
export FOCUS_DATA_LOCATION="/path/to/your/focus/data"
uv run focus-mcpDocker イメージの代わりにソースチェックアウトをクライアントに向けます:
{
"mcpServers": {
"focus": {
"command": "uv",
"args": ["run", "--directory", "/path/to/focus-mcp", "focus-mcp"],
"env": {
"FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
"FOCUS_VERSION": "1.0"
}
}
}
}独自のイメージをビルドして実行します:
docker build -t focus-mcp:custom .
docker run -i --rm \
-v "/path/to/your/focus/data:/data:ro" \
-e FOCUS_DATA_LOCATION=/data \
focus-mcp:customプルリクエストを開く前に、CONTRIBUTING.md で規約とチェックを確認してください。
ロードマップ
FOCUS 仕様からの自動クエリ同期。新しいユースケースページが手動抽出なしでここに反映されます
より豊富なレスポンスフォーマット:クエリ結果に引用と教育的コンテキストをインラインで
実際のプロバイダーエクスポートに対するすべてのユースケースクエリの検証(AWS は現在 FOCUS 1.0 と 1.2 を提供。1.3 以降はプロバイダーが採用するにつれて)
列と属性の定義を MCP リソースに移行する評価
ツールレスポンスに仕様の適合性ギャップノートを表示
セキュリティ
脆弱性は SECURITY.md のアドレスに報告してください。問題トラッカーには
報告しないでください。信頼モデルを理解してください:execute_query は AI アシスタントが
書いた SQL をサーバープロセス内で実行します。Parquet ファイルはクエリソースであり、
書き込み可能なデータベースではありません。ここのすべての例は :ro でマウントしています。
それを維持してください。ハードな境界が必要な場合は、ベアプロセスではなく Docker イメージを
実行し、サーバーには必要なオブジェクトストアの認証情報のみを、請求バケットにスコープして
与えてください。
ライセンス
Apache-2.0。版权所有 Glassity。请参阅 LICENSE。
This server cannot be deployed
Maintenance
Related MCP Connectors
Query cloud, AI and SaaS spend across 25+ providers: costs, budgets, anomalies, unit economics.
Ask about AWS, Azure, GCP, OpenAI, Anthropic and Snowflake costs, budgets, and anomalies.
Query OneLens cloud-cost data in natural language: breakdowns, trends, cost centers. Read-only.
Ask your AI assistant a cost question. Get allocation, correlation, and explanation in one response. Costory connects Claude, Codex, or Cursor to normalized cost data across AWS, GCP, Azure, Datadog, OpenAI, and Anthropic. https://costory.io Free trial 14 days, 250 USD / month up to 10M Spend
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables cost optimization and financial operations for Google BigQuery through natural language interactions. Provides insights into BigQuery spending, usage patterns, and cost management recommendations.-
- AlicenseBqualityDmaintenanceProvides a comprehensive suite of 76 tools for AWS cloud resource optimization, cost management, and infrastructure monitoring. It enables users to identify unused resources, analyze cost trends, right-size capacity, and maintain security compliance through natural language.76MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language analysis of AWS costs, automated FinOps waste audits, and budget monitoring across multiple profiles and regions while keeping credentials secure locally.183MIT
- AlicenseAqualityCmaintenanceEnables analyzing AWS cloud costs through natural language queries, providing cost summaries, anomaly detection, idle resource identification, rightsizing recommendations, and tagging compliance via Claude.1022 npmMIT