{
  "markdown": "# CloudScope MCP\n\n> Ask your AI about your cloud bill.\n\n[![npm version](https://img.shields.io/npm/v/cloudscope-mcp)](https://www.npmjs.com/package/cloudscope-mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.github.alexpota%2Fcloudscope-blue)](https://glama.ai/mcp/servers/alexpota/cloudscope-mcp)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D22-brightgreen)](https://nodejs.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue)](https://www.typescriptlang.org)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n\n## What you get\n\nAsk once: **\"Give me this month's cost review\"** — and CloudScope runs the full\nworkflow (spend, deltas, anomalies, idle resources, budgets, forecast) and hands\nback a decision-ready report, not raw numbers to interpret yourself:\n\n> ## TL;DR\n> Month-to-date Azure spend is **$4,312** (May 1–29), tracking **+11% vs April**.\n> The mover is **App Service (+$280)** — a new staging slot left running.\n> **2 idle resources cost $94/month**; `prod-budget` is at **78%** with 2 days left.\n> Top action: **delete the orphaned managed disk → save $63/month.**\n>\n> ## Spend This Month\n> | Service          | Cost     | % |\n> |------------------|----------|------|\n> | Virtual Machines | $2,140   | 49.6% |\n> | App Service      | $890     | 20.6% |\n> | Storage          | $612     | 14.2% |\n> | Redis Cache      | $410     | 9.5% |\n> | Networking       | $260     | 6.0% |\n>\n> ## vs Last Month\n> **+$427 (+11%)** overall. App Service **+$280** drove most of it; everything\n> else flat. → *new `staging-slot-2`, created May 12, never torn down.*\n>\n> ## Idle & Wasted Resources\n> | Resource              | Type        | $/month |\n> |-----------------------|-------------|---------|\n> | `orphaned-osdisk-01`  | Managed Disk| $63 |\n> | `old-lb-ip`           | Public IP   | $31 |\n>\n> ## Budget Status\n> `prod-budget` — **78% used**, $4,312 / $5,500, on track (2 days left).\n>\n> ## Recommended Actions\n> 1. Delete `orphaned-osdisk-01` (unattached 40 days) → **$63/month**\n> 2. Tear down `staging-slot-2` if staging is idle → **~$280/month**\n> 3. Release `old-lb-ip` (no binding) → **$31/month**\n\n*Illustrative example showing the report format. Run `/cloudscope:monthly-cost-review` against your own subscription for live numbers.*\n\n## Install\n\n| Claude Code                                          | Cursor                                                                                                                               | VS Code                                                                                                                                             |\n| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `claude mcp add cloudscope -- npx -y cloudscope-mcp` | [Install](https://cursor.com/en/install-mcp?name=cloudscope&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNsb3Vkc2NvcGUtbWNwIl19) | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=cloudscope&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNsb3Vkc2NvcGUtbWNwIl19) |\n\n> Azure is auto-detected from your `az login` session. GCP requires BigQuery billing export setup (see below).\n\n## Supported Providers\n\n| Provider | Status                                                                                                       |\n| -------- | ------------------------------------------------------------------------------------------------------------ |\n| Azure    | ✅ Supported                                                                                                 |\n| GCP      | ✅ Supported                                                                                                 |\n| AWS      | Use [AWS's official server](https://github.com/awslabs/mcp/tree/main/src/billing-cost-management-mcp-server) |\n\n## Prerequisites\n\n### Azure\n\n- [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) installed and logged in (`az login`)\n- **Cost Management Reader** role on the subscription\n\n### GCP\n\n- [gcloud CLI](https://cloud.google.com/sdk/docs/install) installed and logged in (`gcloud auth application-default login`)\n- [Billing export to BigQuery](https://cloud.google.com/billing/docs/how-to/export-data-bigquery) enabled — this is a one-time manual setup step, not enabled by default (the detailed export is recommended for resource-level cost queries)\n- **BigQuery Data Viewer** + **BigQuery Job User** roles on the dataset project\n- Note: BigQuery on-demand queries cost $6.25 per TiB scanned ([pricing](https://cloud.google.com/bigquery/pricing)). The first 1 TiB/month is free. Billing export tables are small — typical CloudScope queries cost <$0.01 each.\n\n## Configuration\n\n### Azure (zero-config)\n\nCloudScope auto-detects your subscription from `az login`. Just add the server:\n\n```json\n{\n  \"mcpServers\": {\n    \"cloudscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"cloudscope-mcp\"]\n    }\n  }\n}\n```\n\nTo target a specific subscription, add an `env` block:\n\n```json\n{\n  \"mcpServers\": {\n    \"cloudscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"cloudscope-mcp\"],\n      \"env\": {\n        \"AZURE_SUBSCRIPTION_ID\": \"your-subscription-id\"\n      }\n    }\n  }\n}\n```\n\n<details>\n<summary>Advanced: Service Principal (CI/CD & automated environments)</summary>\n\n| Variable              | Description                    |\n| --------------------- | ------------------------------ |\n| `AZURE_TENANT_ID`     | Azure AD tenant ID             |\n| `AZURE_CLIENT_ID`     | App registration client ID     |\n| `AZURE_CLIENT_SECRET` | App registration client secret |\n\nSet these alongside `AZURE_SUBSCRIPTION_ID` in the `env` block above.\n\n</details>\n\n### GCP\n\nGCP requires a BigQuery billing export table. Find your table name in **GCP Console > Billing > Billing export > BigQuery export**.\n\n```json\n{\n  \"mcpServers\": {\n    \"cloudscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"cloudscope-mcp\"],\n      \"env\": {\n        \"GOOGLE_CLOUD_PROJECT\": \"my-project\",\n        \"GCP_BILLING_TABLE\": \"my-project.my_dataset.gcp_billing_export_resource_v1_XXXXXX\"\n      }\n    }\n  }\n}\n```\n\nSet `GOOGLE_CLOUD_PROJECT` to your GCP project ID. Override with `GCP_PROJECT_ID` if your billing dataset lives in a different project.\n\nThese variables apply only when using GCP; Azure-only users can skip them.\n\n| Variable                         | Description                                               | Required |\n| -------------------------------- | --------------------------------------------------------- | -------- |\n| `GOOGLE_CLOUD_PROJECT`           | GCP project ID                                            | Yes      |\n| `GCP_BILLING_TABLE`              | Fully-qualified BigQuery table (`project.dataset.table`)  | Yes      |\n| `GCP_PROJECT_ID`                 | Override project ID if different from `GOOGLE_CLOUD_PROJECT` | No    |\n| `GCP_BILLING_ACCOUNT_ID`         | Billing account ID for budget monitoring                  | No       |\n| `GOOGLE_APPLICATION_CREDENTIALS` | Path to service account JSON key file                     | No       |\n\n### Both Providers\n\n```json\n{\n  \"mcpServers\": {\n    \"cloudscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"cloudscope-mcp\"],\n      \"env\": {\n        \"AZURE_SUBSCRIPTION_ID\": \"your-subscription-id\",\n        \"GOOGLE_CLOUD_PROJECT\": \"my-project\",\n        \"GCP_BILLING_TABLE\": \"my-project.my_dataset.gcp_billing_export_resource_v1_XXXXXX\"\n      }\n    }\n  }\n}\n```\n\nAzure is auto-detected from `az login`. Add `AZURE_SUBSCRIPTION_ID` to target a specific subscription.\n\n## Example Questions\n\n- \"How much did Azure cost last month?\"\n- \"Show GCP spending by service for the last 7 days\"\n- \"Any cost anomalies this week on GCP?\"\n- \"What will Azure cost next month?\"\n- \"Show me cost optimization recommendations for GCP\"\n- \"Compare Azure and GCP costs across all projects and subscriptions\"\n\n## Security\n\nCloudScope is read-only. It cannot create, modify, or delete any cloud resources. Azure uses Cost Management Reader permissions. GCP uses BigQuery Data Viewer + Job User with no write access.\n\n## FAQ\n\n**Does this modify my cloud resources?** No. Read-only access only.\n\n**Do I need a service principal?** No. `az login` (Azure) or `gcloud auth application-default login` (GCP) works for local use.\n\n**Does the Azure Cost Management API cost money?** No. It's free.\n\n**Do GCP BigQuery cost queries cost money?** Yes, but typically <$0.01 per query ($6.25/TiB scanned, first 1 TiB/month free). See [BigQuery pricing](https://cloud.google.com/bigquery/pricing).\n\n**Can I use both Azure and GCP at the same time?** Yes. Configure both sets of env vars and CloudScope queries whichever provider you specify in each tool call.\n\n## Development\n\n```bash\ngit clone https://github.com/alexpota/cloudscope-mcp.git\ncd cloudscope-mcp\nnpm install\nnpm run build\nnpm test\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\n## Reference\n\n### Tools\n\nMost tools accept a `provider` parameter (`azure` or `gcp`); the provider-specific tools (`list_subscriptions`, `list_projects`, and the cross-account tools `get_cross_subscription_costs` / `get_cross_project_costs`) are fixed to their own cloud. The default provider is auto-detected based on which providers are configured.\n\n**Cost Analysis**\n\n| Tool                           | Description                                             | Key Parameters                               |\n| ------------------------------ | ------------------------------------------------------- | -------------------------------------------- |\n| `get_cost_summary`             | Spending breakdown by service, group, or region         | `start_date`, `end_date`, `group_by`         |\n| `get_cost_by_tag`              | Costs grouped by a tag/label key                        | `tag_key`, `start_date`, `end_date`          |\n| `compare_periods`              | Side-by-side cost comparison of two date ranges         | `period_a_start/end`, `period_b_start/end`   |\n| `top_spending_resources`       | Most expensive individual resources                     | `days`, `limit`                              |\n| `get_cross_subscription_costs` | Combined costs across Azure subscriptions               | `subscription_ids`, `start_date`, `end_date` |\n| `get_cross_project_costs`      | Combined costs across GCP projects                      | `project_ids`, `start_date`, `end_date`      |\n\n**Monitoring**\n\n| Tool                | Description                                     | Key Parameters      |\n| ------------------- | ----------------------------------------------- | ------------------- |\n| `detect_anomalies`  | Find spending spikes vs previous period         | `days`, `threshold` |\n| `check_budgets`     | Budget status, current spend, projected overage | _(none)_            |\n| `get_cost_forecast` | Predict spending based on current trends        | `days`              |\n\n**Optimization**\n\n| Tool                      | Description                                             | Key Parameters |\n| ------------------------- | ------------------------------------------------------- | -------------- |\n| `list_recommendations`    | Cost optimization suggestions (Azure Advisor / GCP Recommender) | `category` |\n| `find_idle_resources`     | Provisioned but unused resources with cost estimates    | _(none)_       |\n| `find_untagged_resources` | Resources with no tags/labels (cost attribution gaps)   | _(none)_       |\n\n**Utility**\n\n| Tool                 | Description                                        | Key Parameters |\n| -------------------- | -------------------------------------------------- | -------------- |\n| `get_current_date`   | Today's date and current/previous month bounds     | _(none)_       |\n| `list_subscriptions` | Azure subscriptions with active indicator          | _(none)_       |\n| `list_projects`      | GCP projects with active indicator                 | _(none)_       |\n\n### Prompts\n\nGuided workflows that produce structured reports. All prompts accept an optional `provider` argument (`azure` or `gcp`). In **Claude Code**, type `/cloudscope:` to see all prompts. In **Claude Desktop**, click the `+` button → **Connectors** → **cloudscope**.\n\n| Prompt                     | Description                                                                                                                             | Arguments                                    |\n| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |\n| `monthly-cost-review`      | Complete monthly review: spending, last-month comparison, anomalies, top resources, budgets, forecast, savings opportunities            | `provider` (optional)                        |\n| `waste-audit`              | Find wasted spend: top resources, optimization recommendations, at-risk budgets, total potential savings                                | `provider` (optional)                        |\n| `cost-spike-investigation` | Root-cause analysis for a cost increase: which services, which resources, trend vs one-time, recommended actions                        | `days` (optional), `provider` (optional)     |\n| `executive-summary`        | Brief non-technical cost summary for leadership: spend, trend, budget status, top drivers, forecast, key recommendation                 | `provider` (optional)                        |\n| `chargeback-report`        | Cost allocation by tag/label key for chargeback: spending per value, untagged resources, tagged vs untagged split, month-over-month     | `tag_key` (required), `provider` (optional)  |\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 14035,
  "sha": "ba6b8d35fb3a74ae47100c5571ddff9ff10d0a3ae01436058832af8a996b85e8",
  "repo_slug": "alexpota/cloudscope-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_alexpota_cloudscope_260fbc5a/readme"
}