cloudsealed-mcp
OfficialThe cloudsealed-mcp server provides AI agents with three deterministic, read-only tools for cloud cost optimization and architecture risk assessment—no extra LLM calls or cloud provider API access required.
cloudsealed_analyze_billing_waste: Detects cost anomalies in cloud billing exports (AWS, GCP, Azure, or generic CSV) using a rolling-median and MAD‑based baseline resistant to spike masking. Supports three modes (waste-audit,cost-forecast,efficiency) and returns a markdown or JSON report with anomalies, metrics, recommendations, and an optional 30‑day forecast. Runs entirely locally with no network calls.cloudsealed_score_architecture_risk: Scores architecture risk (Single Point of Failure, Excessive Coupling, Scalability Gap) from a declared system inventory using explicit, weighted rules and returns per‑system score breakdowns, findings, and remediation recommendations. Requires a locally running Predictive‑ML‑Core service (defaultlocalhost:8092).cloudsealed_correlate_cost_and_risk: Runs both engines and cross‑references their outputs to rank systems that are both costly and high‑risk ("double jeopardy"), enabling prioritization of remediation work.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cloudsealed-mcpHere's last month's AWS billing CSV - find waste and anomalies."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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), usingcloudsealed-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 byPredictive-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.
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-mcpRelated 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-coreTo 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 oneExample 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.pyLicense
MIT. See LICENSE.
Available Tools
2 toolscloudsealed_analyze_billing_wasteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_riskARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Hosted MCP server for AWS cloud spend: service breakdowns, anomalies, savings and forecasts.
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
AI governance MCP server for EU AI Act compliance and jurisdiction verification
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityBmaintenanceCloud cost management MCP server for Azure. Ask your AI about your cloud bill.15801MIT
- AlicenseNot gradedqualityDmaintenanceProduction-grade MCP server for enterprise Azure cost optimization, enabling spend anomaly detection, multi-tenant auditing, budget validation, and compliance-aware recommendations.1MIT
- AlicenseAqualityDmaintenanceAn MCP server for AI economy infrastructure with built-in EU AI Act compliance, supporting risk management, transparency, and bias detection.10MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for AI agent compliance that screens actions before execution and records decisions in an immutable, SIEM-ready audit trail.112Unlicense - libtelnet variant
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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