mcpField
C
Cloudability Api Server

Cloudability Api Server

ローカル
github.com/eelzinaty開発ツール420 週間前に更新

Cloudability Api Server について

Cloudability Api Server は、MCP クライアントを Cloudability API に接続し、クラウドコスト管理、Kubernetes 分析、予算管理、予測を扱います。複数リージョンと認証方式に対応しています。

主な機能

  1. 01複数の軸でクラウドコストを分析
  2. 02Kubernetes コストの配分と分析
  3. 03予算とメールアラートの管理
  4. 04支出の見積もりとコスト予測
  5. 05クラウドベンダーアカウントの一覧
  6. 06複数リージョンと認証方式に対応

活用シーン

  1. 01分類別にクラウド支出を確認
  2. 02名前空間やワークロード別に Kubernetes コストを分析
  3. 03予算を追跡し、しきい値アラートを設定
  4. 04見積もりと予測に基づく支出計画

MCP 対応

Cloudability API の操作を MCP ツールとして公開し、レポートの軸、指標、フィルター、保存済みレポートの参照リソースも提供します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Cloudability MCP Server

License: MIT Python 3.14+ FastMCP

Cloudability API 向けの包括的な Model Context Protocol(MCP)サーバーです。高度なコスト管理、Kubernetes コンテナ分析、予算予測機能を提供します。

🌟 この MCP サーバーを使う理由

  • 🔥 コンテナ優先:包括的な Kubernetes コスト配分と監視
  • 📊 高度な分析:15 個のディメンション、8 個のメトリクス、柔軟なフィルタリングとグループ化
  • 💰 予算管理:予測とアラートを備えた予算ライフサイクル全体の管理
  • 🚀 本番環境対応:完全なテストカバレッジ、型安全性、エラー処理
  • 🌍 マルチリージョン:US、EU、APAC、ME の Cloudability リージョンに対応
  • 🔐 柔軟な認証:Bearer トークン、従来の Basic 認証、または Frontdoor API キーによる自動トークン取得

🚀 クイックスタート

前提条件
  • Python 3.14+(最新の型アノテーションに必要)
  • uv(推奨パッケージマネージャー)
  • Cloudability API へのアクセス(.env に Bearer トークン、API キー、または Frontdoor API キーを設定)
インストール
# Clone the repository
git clone https://github.com/eelzinaty/cloudability-mcp-server.git
cd cloudability-mcp-server

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install dependencies
uv sync

# Set up configuration
cp .env.example .env
# Edit .env with your Cloudability credentials

# Run the server
uv run python main.py
MCP クライアントの設定

MCP クライアントの設定に追加します:

{
  "mcpServers": {
    "cloudability": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/path/to/cloudability-mcp-server",
      "env": {
        "CLOUDABILITY_API_URL": "https://api.cloudability.com/v3",
        "CLOUDABILITY_ENVIRONMENT_ID": "your-environment-id",
        "CLOUDABILITY_DEFAULT_VIEW_ID": "12345",
        "CLOUDABILITY_KEY_ACCESS": "your-public-key",
        "CLOUDABILITY_KEY_SECRET": "your-private-key",
        "CLOUDABILITY_FRONTDOOR_URL": "https://frontdoor.apptio.com/service/apikeylogin"
      }
    }
  }
}

機能

🚀 包括的な API カバレッジ
  • 🔥 コンテナコスト配分:Kubernetes のコスト配分と監視を全面的にサポート
  • 🔥 コンテナのプロビジョニング:クラスターのセットアップと Metrics Agent のデプロイ
  • 🔥 コンテナ分析:使用パターン、リソース配分、効率性の分析
  • 🔥 コンテナの検出:containers_report によるラベルとリソースのインベントリ
  • コストレポート:15 個のディメンションと 8 個のメトリクスによる柔軟で強力なコスト分析
  • 非同期レポート:時間のかかるレポートをキューに入れ、バックグラウンドで処理
  • 予算と予測:予算ライフサイクル全体の管理と支出予測
  • 予算サブスクリプション:予算のしきい値に関するメール通知
  • 見積もり:詳細な内訳を含む当月の支出予測
  • 予測:信頼区間を含む複数月の予測分析
  • ベンダーアカウント:クラウドプロバイダーの認証情報アカウントを一覧表示(AWS、Azure、GCP、IBM、OCI)
🔐 柔軟な認証
  • Bearer トークン:最新の apptio-opentoken 認証
  • Frontdoor API キー:環境にキーを設定すると apptio-opentoken を自動取得
  • Basic 認証:従来の API キー認証
  • マルチリージョン対応:US、EU、APAC、ME の Cloudability API と Frontdoor ログインエンドポイント
📊 高度な分析
  • 豊富なフィルタリング:クラスター、名前空間、ワークロードの種類などでフィルタリング
  • 柔軟なグループ化:複数のディメンションで結果をグループ化
  • 並べ替えとページネーション:大規模なデータセットを効率的に処理
  • 複数のウィジェットタイプ:テーブル、KPI、チャート、時系列に対応
🛠️ 開発者向け機能
  • FastMCP フレームワーク:最新の MCP サーバー実装
  • 包括的なテスト:モックを使用した完全なテストカバレッジ
  • 型安全性:IDE のサポートを強化する完全な型アノテーション
  • クリーンなアーキテクチャ:保守性を高めるため、ビジネスロジックを分離

インストール

このプロジェクトでは、依存関係の管理に uv を使用します。uv がインストールされていることを確認してください。

# Install dependencies
uv sync

# Install development dependencies (for testing)
uv sync --dev

設定

.env.example を基に .env ファイルを作成します:

# Copy the example configuration
cp .env.example .env
環境変数

.env.example を .env にコピーし、以下の変数を設定してください。

変数必須説明
CLOUDABILITY_API_URLいいえ(デフォルトは US)お使いのリージョンの Cloudability API ベース URL
CLOUDABILITY_ENVIRONMENT_IDはい(Bearer 認証の場合)Access Administration で確認できる Environment ID
CLOUDABILITY_KEY_ACCESSいいえトークンを自動取得するための Frontdoor 公開 API キー
CLOUDABILITY_KEY_SECRETいいえFrontdoor 秘密 API キー(CLOUDABILITY_KEY_ACCESS と組み合わせて使用)
CLOUDABILITY_FRONTDOOR_URLいいえ(デフォルトは US)お使いのリージョンの Frontdoor API キーのログインエンドポイント
CLOUDABILITY_DEFAULT_VIEW_IDはい(コンテナツールの場合)containers/report および clusters の呼び出しに使用するデフォルトのビュー ID
# Cloudability API Base URL (choose based on your region)
# US: https://api.cloudability.com/v3
# EU: https://api-eu.cloudability.com/v3
# APAC: https://api-au.cloudability.com/v3
# ME: https://api-me.cloudability.com/v3
CLOUDABILITY_API_URL=https://api.cloudability.com/v3

# Required for Bearer token authentication (apptio-opentoken)
# Get this from your Access Administration environment
CLOUDABILITY_ENVIRONMENT_ID=your-environment-id-here

# Optional: Frontdoor API keys for automatic apptio-opentoken acquisition
# When set, tools can omit the authorization parameter
# CLOUDABILITY_KEY_ACCESS=your-public-key-here
# CLOUDABILITY_KEY_SECRET=your-private-key-here

# Optional: Frontdoor login URL (defaults to US region)
# US: https://frontdoor.apptio.com/service/apikeylogin
# EU: https://frontdoor-eu.apptio.com/service/apikeylogin
# AU: https://frontdoor-au.apptio.com/service/apikeylogin
# CLOUDABILITY_FRONTDOOR_URL=https://frontdoor.apptio.com/service/apikeylogin

# Default view ID for containers API calls (required for containers/report and clusters)
CLOUDABILITY_DEFAULT_VIEW_ID=12345
リージョン別エンドポイント

Cloudability API(CLOUDABILITY_API_URL)

リージョンURL
UShttps://api.cloudability.com/v3
EUhttps://api-eu.cloudability.com/v3
APAChttps://api-au.cloudability.com/v3
MEhttps://api-me.cloudability.com/v3

Frontdoor ログイン(CLOUDABILITY_FRONTDOOR_URL)

リージョンURL
UShttps://frontdoor.apptio.com/service/apikeylogin
EUhttps://frontdoor-eu.apptio.com/service/apikeylogin
AUhttps://frontdoor-au.apptio.com/service/apikeylogin
認証方法
1. Frontdoor API キー(任意、サーバー側)

CLOUDABILITY_KEY_ACCESS と CLOUDABILITY_KEY_SECRET が設定されている場合、サーバーは CLOUDABILITY_FRONTDOOR_URL 経由でこれらを apptio-opentoken に交換します。ツールの呼び出しでは authorization パラメーターを省略できます。CLOUDABILITY_ENVIRONMENT_ID も設定してください。Bearer 認証では引き続きこの値が必要です。

2. Bearer トークン

apptio-opentoken を使用する最新の Cloudability 環境の場合:

  • 環境に CLOUDABILITY_ENVIRONMENT_ID を設定します
  • ツールの呼び出しに authorization: "Bearer your-apptio-opentoken" を渡します(Frontdoor キーで認証を処理する場合を除く)
3. Basic 認証(レガシー)

従来の API キー認証の場合:

  • ツールの呼び出しに authorization: "Basic your-api-key:" を渡します
  • Environment ID は不要です

使用方法

サーバーの実行
uv run python main.py
MCP リファレンスリソース

コストレポートの作成に使用する読み取り専用の参照データです(キャッシュされます。デフォルトの TTL は 15 分で、CLOUDABILITY_RESOURCE_CACHE_TTL_SECONDS で設定できます)。

URI説明
cloudability://configサーバー設定(API URL、デフォルトのビュー ID、認証モード。シークレットは含みません)
cloudability://measuresコストレポートのディメンションとメトリクスのカタログ
cloudability://measures/allocatedコスト配賦でサポートされる測定項目
cloudability://filter-operatorsフィルター演算子のリファレンス(==、=@、[]=、…)
cloudability://saved-reports保存済みコストレポートの定義

MCP クライアントで resources/read を使用するか、対応するツール(get_available_measures など)を呼び出すと、同じデータを取得できます。

利用可能なツール
🔥 コンテナコスト配賦ツール
provision_kubernetes_cluster

Cloudability のモニタリング用に、Metrics Agent を自動デプロイして新しいクラスターをセットアップします。

get_cluster_deployment_yaml

クラスターに Cloudability Metrics Agent をインストールするためのデプロイ設定を取得します。

containers_report

主要なコンテナーコスト配賦ツール — 廃止された /containers/allocations および /containers/counts API を POST /v3/containers/report に置き換えます。

主な機能:

  • 共有リソースの配賦:名前空間、ワークロード、クラスター、ラベル別のフェアシェアおよび配賦コストのメトリクス
  • 柔軟なグループ化:namespace、workload_type、workload_name、pod、labels など
  • フィルタリング:クラスター UUID、名前空間、ワークロードタイプなど

パラメーター:

  • group:グループ化するディメンション(例:["namespace"]、["cldy:labels:team"])
  • metrics:レポートのメトリクス(例:["total_cost"]、["total_cost_efficiency"])
  • filters:分析範囲(例:["cluster==uuid"]、["namespace==production"])
  • cost_type:"adjusted" または "total_adjusted_amortized"

戻り値:

  • グループ化されたディメンションとメトリクスを含む result.data の行
  • result.pagination.nextToken によるページネーション
get_container_resource_usage

キャパシティプランニングと適正サイズ分析に使用する日次使用量の推移です。

discover_container_labels

カスタムコスト配賦のグループ化に使用できる Kubernetes ラベルを検索します。

get_detailed_cluster_info

ノードの詳細情報とデータ収集ステータスを含む、包括的なクラスターのメタデータです。

🚀 主要なツール
list_clusters

UUID とメタデータを含む、すべての Kubernetes クラスターを取得します。

list_budgets

現在のステータスとしきい値を含む、すべての予算設定を取得します。

get_budget

支出の追跡とアラートを含む、詳細な予算情報を取得します。

list_aws_accounts

Cloudability で設定されたAWS ベンダー認証情報アカウントを取得します(GET /v3/vendors/AWS/accounts?viewId=0)。

list_azure_accounts

Cloudability で設定されたAzure ベンダー認証情報アカウントを取得します(GET /v3/vendors/azure/accounts?viewId=0)。

list_gcp_accounts

Cloudability で設定されたGCP ベンダー認証情報アカウントを取得します(GET /v3/vendors/gcp/accounts?viewId=0)。

list_ibm_accounts

Cloudability で設定されたIBM Cloud ベンダー認証情報アカウントを取得します(GET /v3/vendors/ibm/accounts?viewId=0)。

list_oci_accounts

Cloudability で設定されたOCI ベンダー認証情報アカウントを取得します(GET /v3/vendors/oci/accounts?viewId=0)。

📊 予算と予測のツール
get_spending_estimate

サービス別の詳細な内訳と日次の推移を含む、当月の支出予測です。

主な機能:

  • 月初から現在までの使用量に基づくリアルタイムの支出見積もり
  • サービスレベルの支出要因(AWS EC2、RDS など)
  • 日次の累積支出の推移
  • 前月の実績との比較
  • レート制限:ユーザーあたり毎分 10 リクエスト、組織あたり毎分 20 リクエスト

レスポンス形式: Cloudability v3 の標準エンベロープです。すべてのフィールドはトップレベルではなく result の下にあります。

{
  "result": {
    "estimatedSpend": 35615446.36,
    "previousMonthSpend": 33819722.57,
    "previousMonthFinalized": true,
    "currentDate": "2026-05-24",
    "cumulativeMtdSpend": [{"date": "2026-05-01", "spend": 1615288.82}],
    "details": [
      {
        "serviceName": "Azure Compute",
        "estimatedSpend": 5568954.48,
        "mtdSpend": 4128094.29,
        "previousMonthSpend": 5409219.11,
        "usageFamily": "Instance Usage"
      }
    ]
  }
}

ベンダーまたはサービスの内訳を取得するには result["details"] を使用します(たとえば、serviceName が Azure で始まる行をフィルタリングします)。サーバーで設定されたデフォルトビューを使用する場合は、view_id を省略するか、cloudability://config リソースの default_view_id を設定します(0 は組織全体のすべてのコストデータを意味します)。

get_spending_forecast

信頼区間と履歴比較を含む、複数月にわたる予測分析です。

パラメーター:

  • months_back(3~24):モデル作成に使用する過去のデータ期間
  • months_forward(1~24):予測期間
  • use_current_estimate:当月をモデルに含めるかどうか
  • remove_credits:分析からクレジットを除外するかどうか
  • remove_one_time_charges:一時的なコストを除外するかどうか

戻り値: result の下に予測データを含む Cloudability v3 エンベロープ(例:result.forecast、result.forecastDetail、result.actual、result.parameters)。

create_new_budget

月次しきい値とコスト基準の設定を指定して、予算を作成します。

modify_budget

新しいしきい値や設定変更を指定して、既存の予算を更新します。

remove_budget

システムから予算を完全に削除します。

create_budget_alert

予算のしきい値超過時にメール通知を設定します。

通知の種類:

  • notify_exceeded:実際の支出が予算を超過したときに通知します
  • notify_expected:予測支出が予算を超過したときに通知します
list_budget_alerts

予算のサブスクリプションと通知設定を一覧表示します。

modify_budget_alert / remove_budget_alert

予算通知のサブスクリプションを更新または削除します。

📊 コストレポートツール
execute_cost_report

高度な分析と柔軟な設定に対応した主要なコストレポートツールです。

主な機能:

  • 最大15個のディメンション:vendor、region、service_name、resource_identifier など
  • 最大8個の指標:total_cost、amortized_cost、usage_hours など
  • 高度なフィルタリング:12個の演算子(==、!=、>、<、=@、[]= など)
  • 柔軟な並べ替え:ASC/DESC による複数列での並べ替え
  • 自動ページネーション:10,000行を超えるデータセットを処理します
  • 相対日付:「先月の初め」、「今四半期の終わり」
  • グラフ形式:日付ベースの可視化に対応
  • ビュー連携:保存済みのビューと割り当てを適用します

パラメーター:

  • dimensions:グループ化に使用するディメンションのリスト(最大15個)
  • metrics:コスト/使用量の指標のリスト(最大8個)
  • filters:フィルター式(例:["transaction_type==usage"])
  • sort:並べ替え式(例:["total_costDESC"])
  • start_date/end_date:日付範囲または相対日付
  • view_id:保存済みのビューを適用します(制限なしの場合は0)
  • apply_allocations:割り当て後のコストを含めます
queue_cost_report

実行時間の長いレポートや複雑なレポート向けの非同期レポートです。

メリット:

  • バックグラウンド処理:タイムアウトの制限がありません
  • 大規模なデータセット:ページネーションは10,000行ではなく30,000行です
  • ステータス追跡:check_report_status で進捗を確認できます
  • レート制限:ユーザーごとに20リクエストに制限します
list_saved_cost_reports

設定と共有情報を含め、利用可能なレポートを確認します。

get_available_measures

詳細なメタデータとグループ化情報を含め、ディメンションと指標を確認します。

get_filter_operators

サポートされているすべてのフィルター比較演算子のリファレンスガイドです。

check_report_status / get_queued_report_results

キューへの登録から完了まで、非同期レポートを管理します。

テスト

テストスイートを実行します:

# Run unit tests (mocked HTTP; integration tests are skipped by default)
uv run pytest tests/ -v

# Run tests with coverage
uv run pytest tests/ -v --cov=main --cov-report=term-missing

# Run live MCP + Cloudability API integration tests (requires .env credentials)
cp .env.example .env   # set CLOUDABILITY_KEY_ACCESS, CLOUDABILITY_KEY_SECRET, CLOUDABILITY_ENVIRONMENT_ID
uv run pytest tests/test_mcp_integration.py -v -m integration

統合テストでは、読み取り専用の主要なMCPツール10個(予算、コストレポート、コンテナ)、テナントにアクセス権がない場合にスキップされるオプションツール3個、および連鎖的な get_budget テストをカバーしています。

使用例

コンテナコストの割り当て(最も重要!)
# Provision a new cluster for monitoring
cluster = provision_kubernetes_cluster(
    cluster_name="production-k8s",
    kubernetes_version="1.28",
    authorization="Bearer your-token"
)

# Get deployment YAML for Metrics Agent
deployment = get_cluster_deployment_yaml(
    cluster_id=cluster["result"]["id"],
    authorization="Bearer your-token"
)
# Save deployment["deployment_yaml"] and apply: kubectl apply -f deployment.yaml

# Analyze cost allocation by namespace (primary use case)
allocation = containers_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    group=["namespace"],
    metrics=["total_cost", "total_cost_efficiency"],
    authorization="Bearer your-token"
)

# Team-based cost allocation using labels
team_costs = containers_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    group=["cldy:labels:team", "namespace"],
    metrics=["total_cost", "total_cost_allocated"],
    filters=["cluster==your-cluster-uuid"],
    cost_type="total_adjusted_amortized",
    authorization="Bearer your-token"
)

# Workload-level cost breakdown for a namespace
service_costs = containers_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    group=["workload_name", "workload_type"],
    metrics=["total_cost"],
    filters=["namespace==production", "cluster==your-cluster-uuid"],
    authorization="Bearer your-token"
)
コンテナリソースの分析
# Daily usage trends for capacity planning
usage_trends = get_container_resource_usage(
    start_date="2024-01-01",
    end_date="2024-01-31",
    metrics=["cpu/reserved", "memory/reserved_rss", "filesystem/usage"],
    filters=["cluster==your-cluster-uuid"],
    authorization="Bearer your-token"
)

# Discover available labels for cost allocation
labels = discover_container_labels(
    start_date="2024-01-01",
    end_date="2024-01-31",
    filters=["cluster==your-cluster-uuid"],
    authorization="Bearer your-token"
)

# Get detailed cluster information
cluster_info = get_detailed_cluster_info(
    start_date="2024-01-01",
    end_date="2024-01-31",
    authorization="Bearer your-token"
)
基本的なコスト分析
# Get cost breakdown by namespace for the last month
result = containers_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    metrics=["total_cost", "total_cost_efficiency"],
    group=["namespace"],
    authorization="Bearer your-token"
)
高度なフィルタリング
# Get cost data for specific cluster and production workloads
result = containers_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    filters=[
        "cluster==your-cluster-uuid",
        "namespace==production",
        "workload_type[]=deployment,statefulset"
    ],
    group=["workload_name"],
    sort=[{"sortMetric": "total_cost", "sortOrder": "desc"}],
    limit=10,
    authorization="Bearer your-token"
)
予算のモニタリング
# Check all budgets and their current status
budgets = list_budgets(authorization="Basic your-api-key:")

# Get detailed information for a specific budget
budget_details = get_budget(
    budget_id="budget-123",
    authorization="Basic your-api-key:"
)
支出の見積もりと予測
# Get current month spending estimate (fields are under result)
estimate = get_spending_estimate(
    view_id="0",
    basis="cash",
    authorization="Bearer your-token"
)
summary = estimate["result"]
print(summary["estimatedSpend"], summary["currentDate"])

# Azure month-end estimate from service breakdown
azure_estimate = sum(
    row["estimatedSpend"]
    for row in summary["details"]
    if row["serviceName"].startswith("Azure")
)

# Generate 12-month forecast based on 6 months of history
forecast = get_spending_forecast(
    view_id="0",
    basis="cash",
    months_back=6,
    months_forward=12,
    use_current_estimate=True,
    remove_one_time_charges=True,
    authorization="Bearer your-token"
)
forecast_rows = forecast["result"]["forecast"]
予算管理
# Create a quarterly budget
budget = create_new_budget(
    name="Q1 2024 Budget",
    basis="adjusted",
    view_id="0",
    months=[
        {"month": "2024-01", "threshold": 50000},
        {"month": "2024-02", "threshold": 55000},
        {"month": "2024-03", "threshold": 60000}
    ],
    authorization="Bearer your-token"
)

# Set up budget alerts
alert = create_budget_alert(
    budget_id=budget["result"]["id"],
    notify_exceeded=True,
    notify_expected=True,
    authorization="Bearer your-token"
)

# Update budget thresholds
updated_budget = modify_budget(
    budget_id=budget["result"]["id"],
    months=[
        {"month": "2024-01", "threshold": 45000},
        {"month": "2024-02", "threshold": 50000}
    ],
    authorization="Bearer your-token"
)
高度なコストレポート
# Basic cost breakdown by vendor and region
basic_report = execute_cost_report(
    start_date="2024-01-01",
    end_date="2024-01-31",
    dimensions=["vendor", "region"],
    metrics=["total_amortized_cost", "usage_hours"],
    authorization="Bearer your-token"
)

# Advanced filtering and sorting
filtered_report = execute_cost_report(
    start_date="beginning of last month",
    end_date="end of last month",
    dimensions=["vendor", "service_name", "resource_identifier"],
    metrics=["total_amortized_cost", "total_cost_efficiency"],
    filters=[
        "transaction_type==usage",
        "total_amortized_cost>100",
        "region=@us-east"
    ],
    sort=["total_amortized_costDESC", "vendorASC"],
    limit=1000,
    authorization="Bearer your-token"
)

# Asynchronous reporting for large datasets
report_id = queue_cost_report(
    start_date="2024-01-01",
    end_date="2024-03-31",
    dimensions=["resource_identifier", "service_name", "region"],
    metrics=["total_amortized_cost", "usage_hours"],
    filters=["vendor==Amazon"],
    authorization="Bearer your-token"
)

# Check status and retrieve results
status = check_report_status(
    report_id=report_id["id"],
    authorization="Bearer your-token"
)

if status["status"] == "finished":
    results = get_queued_report_results(
        report_id=report_id["id"],
        authorization="Bearer your-token"
    )

# Discover available dimensions and metrics
measures = get_available_measures(authorization="Bearer your-token")
operators = get_filter_operators(authorization="Bearer your-token")

開発

プロジェクト構成
cloudability-mcp-server/
├── main.py                      # Main MCP server with tool definitions
├── cloudability_tools.py        # Core API implementation
├── tests/
│   └── test_cloudability_tools.py # Comprehensive API tests
├── .env.example                 # Environment configuration template
├── pyproject.toml              # Project configuration
└── README.md                   # This documentation
アーキテクチャ
  • main.py:FastMCP デコレーターを使用した、シンプルなMCPツール定義
  • cloudability_tools.py:包括的なAPIカバレッジを備えた、分離されたビジネスロジック
  • 柔軟な認証:Bearer トークンとBasic認証の両方に対応
  • 包括的なテスト:HTTPモックを使用した、完全なテストカバレッジ
  • 型安全性:開発体験を向上させる、完全な型アノテーション

🤝 貢献

皆さまからの貢献を歓迎します!詳細は貢献ガイドをご覧ください。

簡単な貢献手順
  1. リポジトリをフォークします
  2. 機能ブランチを作成します:git checkout -b feature/amazing-feature
  3. テストを追加して変更を行います
  4. 品質チェックを実行します:uv run black . && uv run pytest
  5. プルリクエストを送信します
開発環境のセットアップ
# Clone your fork
git clone https://github.com/eelzinaty/cloudability-mcp-server.git
cd cloudability-mcp-server

# Install development dependencies
uv sync --group dev

# Run tests
uv run pytest tests/ -v

# Format code
uv run black . && uv run isort .

📚 ドキュメント

🐛 問題とサポート

📄 ライセンス

このプロジェクトは MIT License のもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。

🙏 謝辞

  • FastMCP:モダンな MCP サーバーフレームワーク
  • Model Context Protocol:プロトコル仕様
  • Cloudability:包括的なクラウドコスト管理 API の提供

🔗 関連プロジェクト


FinOps と Kubernetes のコミュニティのために ❤️ を込めて作成

コメント

MCP は初めてですか?

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

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