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.