Skip to main content
Glama
cloudsealed

cloudsealed-mcp

Official
by cloudsealed

cloudsealed-mcp

MCP server that gives AI agents (Claude Code, Claude Desktop, Cursor, etc.) direct access to three deterministic CloudSealed analysis tools:

  • cloudsealed_analyze_billing_waste — cost anomaly detection over a cloud billing export (AWS/GCP/Azure/generic), using cloudsealed-jit's rolling-median + MAD baseline. Runs locally, no network call.

  • cloudsealed_score_architecture_risk — deterministic, auditable architecture risk scoring (single point of failure, excessive coupling, scalability gap) from a declared system inventory, backed by Predictive-ML-Core.

  • cloudsealed_correlate_cost_and_risk — runs both engines and cross-references them, ranking systems that are both costly and high architecture risk ("double jeopardy"). No cloud-native tool does this: cost anomaly detection and architecture review are separate products even within one cloud, so nothing tells you "this cost spike is on a system that's also a single point of failure." Vendor-neutral, runs on data you already exported.

All tools are read-only: they never write files, and the only network call any of them makes is to the Predictive-ML-Core service you point it at.

License: MIT


Install

# recommended: no local install, uvx fetches and runs it on demand
uvx cloudsealed-mcp

# or, from source until this is published to PyPI
pip install git+https://github.com/cloudsealed/cloudsealed-mcp

Related MCP server: Azure FinOps Elite

Configure your MCP client

Add to your client's MCP config (.mcp.json for Claude Code, claude_desktop_config.json for Claude Desktop, Cursor's MCP settings, etc.):

{
  "mcpServers": {
    "cloudsealed": {
      "command": "uvx",
      "args": ["cloudsealed-mcp"]
    }
  }
}

Restart the client, and both tools become available to the agent.

cloudsealed_score_architecture_risk needs a running Predictive-ML-Core

cloudsealed_analyze_billing_waste works out of the box — the analysis engine is a pure Python dependency, no server involved.

cloudsealed_score_architecture_risk calls the Predictive-ML-Core HTTP API. By default it looks for one at http://localhost:8092. Start one with:

docker run -p 8092:8092 cloudsealed/predictive-ml-core

To point at a different deployment (self-hosted or otherwise), set:

export PREDICTIVE_ML_CORE_URL="https://your-deployment"
export PREDICTIVE_ML_CORE_API_KEY="..."   # only if that deployment requires one

Example prompts

  • "Here's our AWS Cost and Usage Report for last month — find the cost anomalies and tell me what to fix first." (paste the CSV; the agent calls cloudsealed_analyze_billing_waste)

  • "We have a checkout-api (CRITICAL, public-facing, no declared auth), an orders-db (CRITICAL), and a third-party payment-gateway. What's our biggest architecture risk?" (the agent calls cloudsealed_score_architecture_risk)

  • "Here's our billing export and our system inventory — which service is both burning money and a reliability risk? Prioritize our cloud work by cost AND risk together." (the agent calls cloudsealed_correlate_cost_and_risk; name systems to match billing service names to get the linked view)

Why deterministic engines, not another LLM call

Both underlying engines score with explicit, auditable rules — not a model. Every anomaly and every risk score traces back to a specific rule and a stated rationale (see JIT's METHODOLOGY.md and Predictive-ML-Core's METHODOLOGY.md). That means an agent calling these tools gets a reproducible, explainable answer instead of a second opinion from another LLM.

FAQ

What's an MCP server, and why not just ask the agent to write the analysis code itself? MCP (Model Context Protocol) lets an agent call a real tool instead of generating code from scratch each time. The underlying engines here are deterministic and already tested/benchmarked — an agent calling them gets a reproducible answer, not a fresh guess with its own bugs.

Which clients support this? Any MCP client: Claude Code, Claude Desktop, Cursor, Windsurf, and others that read a standard mcpServers config block.

Is there a hosted version, or do I need to run anything locally? cloudsealed_analyze_billing_waste needs nothing but the uvx invocation. cloudsealed_score_architecture_risk needs a Predictive-ML-Core instance reachable at PREDICTIVE_ML_CORE_URL — self-hosted via Docker by default (see above), or your own deployment.

Does this send my billing data anywhere? No — the billing analysis runs entirely in-process. Only the architecture tool makes a network call, and only to whichever PREDICTIVE_ML_CORE_URL you configure.

Development

pip install -e ".[dev]"
python -m py_compile src/cloudsealed_mcp/server.py

License

MIT. See LICENSE.

Available Tools

2 tools
cloudsealed_analyze_billing_wasteA
Read-onlyIdempotent

Detect cost anomalies in a cloud billing export (AWS/GCP/Azure/generic).

Models the expected daily spend for each day as a rolling-median baseline times a day-of-week factor, then flags days whose actual spend deviates from that baseline by a robust (median-absolute-deviation-based) modified z-score. This is resistant to the "masking effect" that causes textbook mean+standard-deviation detectors to miss anomalies once a few large spikes have inflated the standard deviation. It does NOT call any cloud provider API — the caller must already have exported the billing data to a CSV/text string and pass its contents directly.

Args: params (AnalyzeBillingWasteInput): Validated input containing: - csv_content (str): Raw billing export text (see field description for supported provider formats). - analysis_type (AnalysisType): 'waste-audit' (default), 'cost-forecast', or 'efficiency'. - response_format (ResponseFormat): 'markdown' (default) or 'json'.

Returns: str: Markdown report, or a JSON object with this schema: { "anomalies": [ {"date": str, "expectedCost": float, "actualCost": float, "deviation": float, "zScore": float, "severity": "LOW"|"MEDIUM"|"HIGH"|"CRITICAL", "description": str} ], "metrics": {"averageDailyCost": float, "stdDeviation": float, "sharpeRatio": float, "wastePercentage": float}, "recommendations": [ {"title": str, "description": str, "potentialSavings": float, "effort": "LOW"|"MEDIUM"|"HIGH"} ], "summary": str }

Error response: "Error: <message>" when the CSV cannot be parsed
(e.g. no recognizable date/cost columns).

Examples: - Use when: "Why did our AWS bill spike last month?" -> paste the CUR export contents as csv_content. - Use when: "What will we spend next month at this rate?" -> analysis_type="cost-forecast". - Don't use when: you need architecture/reliability risk instead of cost — use cloudsealed_score_architecture_risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds valuable behavior: it explicitly states it does NOT call any cloud provider API, explains the rolling-median and z-score algorithm, describes the error response format, and warns about the masking effect. This goes well beyond annotations and provides deep insight into the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though longer than average, the description is organized into clear sections (Args, Returns, Error, Examples) with every sentence earning its place. It is front-loaded with the purpose and maintains focus without fluff, making it highly scannable despite its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is exceptionally complete for a complex tool: it includes the full output JSON schema, error handling, provider-specific input notes, and practical usage examples. It covers all aspects an agent needs to select and invoke the tool correctly, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description enumerates all parameters (csv_content, analysis_type, response_format) with their defaults and contextual meaning, including examples like analysis_type='cost-forecast'. This fully compensates for the 0% schema coverage on the top-level 'params' object and adds value beyond the nested schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Detect cost anomalies in a cloud billing export (AWS/GCP/Azure/generic).' It clearly distinguishes from the sibling tool by explicitly naming cloudsealed_score_architecture_risk as an alternative for architecture/reliability risk, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use examples with concrete questions and how to set csv_content and analysis_type. Clearly states a prerequisite ('caller must already have exported the billing data') and gives a direct 'Don't use when' with the alternative tool, leaving no ambiguity about appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cloudsealed_score_architecture_riskA
Read-onlyIdempotent

Score architecture risk from a declared system inventory.

Scores single-point-of-failure, excessive-coupling, and scalability-gap risk (0-100 each) for every declared system using explicit, weighted rules — not a trained model. Every score ships with a rule-by-rule breakdown so the reasoning is auditable, not a black box. Calls the Predictive-ML-Core production HTTP service (or a self-hosted instance if PREDICTIVE_ML_CORE_URL is set).

Args: params (ScoreArchitectureRiskInput): Validated input containing: - company_name (str): Name of the company/project. - systems (list[SystemInput]): Declared inventory — each with name, type (APPLICATION|DATABASE|API|THIRD_PARTY_SERVICE), criticality (LOW|MEDIUM|HIGH|CRITICAL), public_facing, and optional data_sensitivity/auth_method. - historical_metrics (Optional[HistoricalMetricsInput]): Observed latency/throughput, improves the scalability-gap score. - response_format (ResponseFormat): 'markdown' (default) or 'json'.

Returns: str: Markdown report, or a JSON object with this schema: { "predictions": [ {"systemName": str, "riskScores": {"singlePointOfFailure": int, "excessiveCoupling": int, "scalabilityGap": int}, "scoreBreakdown": {...rule-by-rule points and rationale...}, "findings": [{"title": str, "severity": str, "description": str, "remediation": str}], "recommendations": [{"title": str, "description": str, "effort": str}]} ], "architectureSummary": str, "overallArchitectureScore": int }

Error response: "Error: <message>" if the service is unreachable or
rejects the request (e.g. empty systems list).

Examples: - Use when: "Is our checkout service a single point of failure?" -> declare it with criticality=CRITICAL, type=API. - Use when: "Which of these services should we harden first?" -> declare the whole inventory and compare riskScores. - Don't use when: you need cost/billing analysis — use cloudsealed_analyze_billing_waste.

Error Handling: - Returns "Error: Request timed out..." if the service doesn't respond within 30s. - Returns "Error: ..." with the upstream message on 4xx/5xx responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses that scores come from explicit weighted rules, not a trained model, and provides an auditable rule-by-rule breakdown. It also reveals the underlying HTTP service dependency, configurability via env var, and timeout/error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though lengthy, every sentence serves a purpose. The structure is front-loaded with the core purpose, then follows with parameters, return schema, error handling, and usage examples. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested input schemas, multiple risk dimensions, output format options, error cases), this description is complete. It includes the return schema, error response format, timeout behavior, and concrete usage scenarios. The annotations already cover safety, so no gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry full parameter meaning. It thoroughly explains each field within the params object, including types, constraints, and semantics (e.g., historical_metrics improves the scalability-gap score). It adds value beyond the raw schema by explaining input effects and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Score architecture risk from a declared system inventory.' It clearly distinguishes from the sibling tool by explicitly saying not to use it for cost/billing analysis and directing to cloudsealed_analyze_billing_waste.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when' examples with concrete queries and an explicit 'Don't use when' alternative. This gives the agent clear decision criteria for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.7/5.0
Disambiguation5/5

The two tools address completely different domains—architecture risk scoring and billing waste analysis. Each description explicitly references the other as the tool not to use for the wrong scenario, leaving no ambiguity about their distinct purposes.

Naming Consistency5/5

Both tools follow the consistent pattern `cloudsealed_<verb>_<noun>` using snake_case, with verbs 'score' and 'analyze' clearly indicating actions. Naming is uniform and predictable.

Tool Count3/5

With only two tools, the server feels thin. While each tool is substantial and covers a distinct need, the overall scope is narrow for a server named 'cloudsealed-mcp', making it borderline.

Completeness3/5

The two tools cover their specific analysis tasks well, but the server lacks supporting operations such as fetching cloud data or handling remediation. The billing tool requires the user to supply CSV data, and there's no way to act on the findings, leaving notable gaps.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Production-grade MCP server for enterprise Azure cost optimization, enabling spend anomaly detection, multi-tenant auditing, budget validation, and compliance-aware recommendations.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for AI agent compliance that screens actions before execution and records decisions in an immutable, SIEM-ready audit trail.
    112
    Unlicense - libtelnet variant

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cloudsealed/cloudsealed-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server