Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/cloudcostsmcp/issues.md or /mcp/cloudcostsmcp/issues.json, or Pod over MCP.

Reported issues for cloudcostsmcp

Pod holds 19 of 25 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to cloudcostsmcp.

Most discussed

RC3-014 (P2, DEFERRED — blocked on RC3-004): compare_bom's 4-type enum blocks CUR-native services like DynamoDB

Citation: customer-feedback §1 (Line-item shape row)

Current behavior: compare_bom(workload={"table":{"type":"dynamodb",...}}) returns unsupported workload type "dynamodb" (supported: compute, storage, database, cache) — a hard 4-type allowlist in workloadItemToSpec's default case (compare_bom.go L536). estimate_bom has no type enum, but a DynamoDB-shaped call still fails via the AWS provider's Supports() check inside processBOMItems (bom.go L245). Note: distinct from the Dy

Read the thread · 2026-07-03 · closed · 4 comments

RC3-032 (P1, PARTIAL — see #74): no canonical price field/unit across tools — naming, size_gb scaling, monthly_estimate mixing, egress unit label, no published schema

Citation: customer-feedback prioritized summary #5; gcp-report prioritized summary #6

Current behavior: Doubly-attested theme (its own prioritized-summary row in both source reports). Five distinct sub-issues: (a) inconsistent field naming — get_price returns unit price under price.amount, compare_prices under price_per_unit.amount. (b) size_gb is accepted as an input but silently does not scale the returned price_per_unit — nothing in the response tells the caller whether t

Read the thread · 2026-07-03 · closed · 4 comments

RC3-004 (P1, IN PROGRESS — AWS v1, see #75): Add compare_bom_regions — weighted, SKU-native BoM tool with regions[] fan-out

Citation: customer-feedback §1 ('The big one: weighted-BoM regional comparison')

Current behavior: No such tool exists today. compare_bom's only region control is region_preference, a 3-value enum mapped to exactly one region per provider — no regions[] array, no baseline_region. estimate_bom has no top-level region concept at all. Neither can do what compare_prices already does for a single spec via Regions []string + BaselineRegion fan-out + applyBaselineDeltas.

**P

Read the thread · 2026-07-03 · open · 3 comments

RC3-019 (P2, IN PROGRESS): no get_coverage(provider) endpoint exists

Citation: customer-feedback §4 ('A coverage/completeness endpoint')

Current behavior: Grep for get_coverage/GetCoverage/coverage_pct across opencloudcosts-go/internal returns zero matches. The live tool surface (16 tools) contains no coverage-endpoint equivalent. describe_catalog is the closest existing tool but actively misrepresents coverage for at least two domains (RC3-020, RC3-021).

Proposed fix: Build get_coverage(provider) returning, per domain/service/region, on

Read the thread · 2026-07-03 · closed · 2 comments

Server exits on a malformed JSON-RPC frame (denial-of-service)

Hello, and apologies for the unsolicited report.

Your MCP server io.github.x7even/cloudcostsmcp (opencloudcosts) was included in an automated conformance study of publicly registered Model Context Protocol servers. The study installed and executed every eligible server in the official registry and drove it through a set of protocol checks. One result looked worth reporting to you directly.

What we observed

**Server crashes or stops responding after a malformed JSON-RPC fra

Read the thread · 2026-07-31 · open · external user · 1 comment

RC3-023d (P2, needs live GCP catalog access): GCP Pub/Sub has zero catalog entry

Split from #39. Pricing is per-GB throughput — human-scoped per #39's DACI.

Not implemented this pass — no `OCC_GCP_API_KEY` in this environment, no way to fetch/verify the real GCP Billing Catalog serviceID and rate structure.

Proposed fix: find the GCP Billing Catalog serviceID for Pub/Sub, add a `getPubSubPrice` function following the `buildXIndex → match-by-description` pattern, register in `DescribeCatalog`. Region-invariant — candidate for `scope:"global"`.

Read the thread · 2026-07-04 · closed · 1 comment

RC3-023b (P2, needs live GCP catalog access): GCP Cloud KMS has zero catalog entry

Split from #39. Pricing is per-key-version + per-operation — more complex than External IP (#76), human-scoped per #39's DACI (not a good fit for a future autonomous pass without hands-on rate verification).

Not implemented this pass — no `OCC_GCP_API_KEY` in this environment, no way to fetch/verify the real GCP Billing Catalog serviceID and rate structure.

Proposed fix: find the GCP Billing Catalog serviceID for Cloud KMS, add a `getKMSPrice` function in a new or existing gcp prov

Read the thread · 2026-07-04 · closed · 1 comment

RC3-031 (P3): search_pricing stub's runtime error message contradicts its own tool-list description

Citation: gcp-report §4.5 (and priority table row 8)

Current behavior: Confirmed live and current (verified against git history that the current stub was an intentional replacement introduced in commit 7806b79, not leftover cruft from an incomplete removal). Runtime payload: {"error":"search_pricing_unavailable","message":"search_pricing does not exist in this server."}. The tool-list description ("Deprecated helper that redirects to the correct tools...") is honest and matches the RE

Read the thread · 2026-07-03 · closed · 1 comment

Most recent

RC3-023a (P2, LOWEST-RISK — needs live GCP catalog access): GCP External IP has zero catalog entry

Split from #39. External IP is the cleanest first target of the five services in #39: pricing is ≈per-hour, region-invariant (candidate for `scope:"global"` on `models.NormalizedPrice`).

Not implemented this pass — this environment has no `OCC_GCP_API_KEY` configured, so there's no way to fetch and live-verify the real GCP Billing Catalog serviceID/rate here. Per #39's DACI, this specific service is judged low-risk enough for a future autonomous pass if that pass has live catalog ac

Read the thread · 2026-07-04 · closed · 0 comments

RC3-029 (P3): find_available_regions requires spec-wrapped input; validation error is opaque SDK jsonschema text

Citation: aws-report §6

Current behavior: FindAvailableRegionsInput declares Spec map[string]any json:"spec" as required — consistent with get_price's own spec-wrapping convention, so this is deliberate, not an isolated footgun. The literal error text quoted in the AWS report is generated by the mcp-go SDK's jsonschema validator, not custom application text, and could not be reproduced live (the loaded schema enforces wrapping before a call can even be issued).

Proposed fix:

Read the thread · 2026-07-03 · closed · 1 comment

RC3-028 (P2): publish canonical server-instructions text and a minimal-instructions commitment in README

Citation: customer-feedback §7; gcp-report §5.3

Current behavior: Both source reports independently investigated and closed a false-attribution concern: a third-party "superpowers" plugin SessionStart hook was mistaken for cloudcost's own MCP instructions, purely due to render timing adjacency. Rendered instructions match server.go L168 verbatim and are clean/pricing-only. Grep confirms this text exists ONLY in server.go — absent from README, CHANGELOG, and docs. No written commitme

Read the thread · 2026-07-03 · closed · 1 comment

RC3-026 (P2): aurora_postgresql naming trap — advertised as a service name but get_price rejects it

Citation: aws-report §6, prioritized summary #7

Current behavior: describe_catalog(provider=aws) shows Services["database"] = ["rds","elasticache","aurora_postgresql"] — presented as a peer service name. get_price(service="aurora_postgresql", ...) is rejected with not_supported. However describe_catalog(domain=database, service="aurora_postgresql") DOES return correct working guidance (pointing to service:"rds", engine:"aurora-postgresql"). Root cause: aws_finops.go's `Des

Read the thread · 2026-07-03 · closed · 1 comment

RC3-025 (P2): describe_catalog returns egress's example_invocation for lb, nat, and waf services

Citation: aws-report §6 (report cites only service='lb')

Current behavior: Beyond the originally reported service="lb": service="nat" and service="waf" both also return the identical egress example_invocation. service="data_transfer" correctly redirects. Same root cause as RC3-022 — fix together in that bundled issue/PR.

Proposed fix: See RC3-022 — same fix, same PR: add ExampleInvocations entries for "network/lb", "network/nat", "network/waf".

Effort: S

**F

Read the thread · 2026-07-03 · closed · 1 comment

RC3-022 (P2): describe_catalog(network, lb) still returns egress's example_invocation

Citation: aws-report §6 ('Wrong service's example_invocation')

Current behavior: describe_catalog(domain=network, service="lb") has correctly-scoped filter_hints but example_invocation is still the egress shape (service:"egress", destination_type, data_gb_per_month). Root cause: ExampleInvocations map (aws_finops.go L720-857) has no "network/lb" key; HandleDescribeCatalog falls back from the missing service-specific key to the domain-level "network" key (lookup.go L1

Read the thread · 2026-07-03 · closed · 1 comment

RC3-021 (P2): describe_catalog(domain=database) returns service:null with no service list or hint

Citation: aws-report §6 ('Unhelpful domain-level catalog response')

Current behavior: Returns exactly {"domain":"database","provider":"aws","service":null,"supported_terms":[...]} — no available_services, no filter_hints, no example_invocation, no tip. Root cause: catalog.SupportedTerms has a domain-level "database" key distinct from the service-level "database/rds" key, so hasTerms is true; the "nothing found → show available_services" branch (lookup.go L1090) only fires wh

Read the thread · 2026-07-03 · closed · 1 comment

RC3-023 (P2, DEFERRED): flat/global-rate GCP services (Firestore, Pub/Sub, KMS, Cloud DNS, external IPs) have zero catalog entries

Citation: customer-feedback §6

Current behavior: gcp_catalog.go's DescribeCatalog Services map has no entries for these five services under any domain. get_price for each returns not_supported with zero catalog data. These five services have genuinely different pricing units (external IP ≈ per-hour is the cleanest fit; KMS is per-key-version+operation; Cloud DNS is per-zone+query-volume; Pub/Sub is per-GB throughput; Firestore is per-operation+storage and plausibly region-varyin

Read the thread · 2026-07-03 · closed · 1 comment

RC3-018 (P2, SCOPED): not_available_in emitted by only 3 of ~9 fan-out/BoM tools

Citation: customer-feedback §4 ('Keep and extend not_available_in')

Current behavior: Grep for not_available_in across internal/tools hits only availability.go (HandleFindCheapestRegion, HandleFindAvailableRegions) and lookup.go (HandleComparePrices). HandleGetPrice, HandleGetPricesBatch, HandleCompareBOM, HandleEstimateBOM have no not_available_in. get_price_by_sku has zero hits for either mechanism.

Proposed fix: Add not_available_in to `HandleGetPrice

Read the thread · 2026-07-03 · closed · 1 comment

RC3-017 (P2): cache_stats has no per-provider breakdown or as_of ages; no cache-warm endpoint

Citation: customer-feedback §3

Current behavior: cache_stats returns {"db_path":...,"db_size_mb":56.84,"metadata_entries":0,"price_entries":158} — flat global counts only. HandleCacheStats (cachetool.go L84-102) sources from CacheManager.Stats(), which exposes only EntryCount/FileSizeBytes/FilePath — no breakdown data model exists. No warm_cache tool is registered anywhere.

Proposed fix: Extend CacheManager.Stats() to key entries by provider/service and record las

Read the thread · 2026-07-03 · closed · 1 comment

RC3-015 (P2, SCOPED — GCP-first, needs live catalog access to implement): no GCP equivalent of get_price_by_sku exists

Citation: customer-feedback §2 ('A GCP/Azure equivalent')

Current behavior: sku_lookup.go imports only the AWS provider; LookupSKUAcrossRegions hard-rejects any providerName != "aws" with SKUErrUnsupportedProvider. Grep of GCP/Azure provider packages for SKU-lookup logic finds nothing. get_price_by_sku(..., provider="gcp") returns {"error":"unsupported_provider",...}. The AWS tool's whole design (region-prefix stripping keyed to AWS usage-type shape, canonical-default attrib

Read the thread · 2026-07-03 · open · 1 comment

The remaining reports are on the project's issue tracker.