finops-mcp
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., "@finops-mcpWhat did I spend on AWS last month, broken down by service?"
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.
finops-mcp
A multi-cloud FinOps MCP server. It gives an AI assistant read-only access to cloud cost and usage data through a single, uniform set of tools — so you can ask questions like "what did I spend on AWS last month, broken down by service?" or "forecast next month's bill" in plain language.
Today AWS is fully implemented (Cost Explorer, Budgets, Cost Optimization Hub). Azure, GCP, and OCI are registered as stubs behind the same interface, ready to be built out next.
Read-only by design. Every tool only reads cost data. Nothing in this server modifies, creates, or deletes cloud resources.
Features
Tool | What it does | AWS status |
| List known providers and whether each is implemented | ✅ |
| Grouped cost breakdown (by service, region, account, usage type, instance type) | ✅ |
| Cost time series (daily or monthly) | ✅ |
| Budgets with limit / actual / forecasted spend | ✅ |
| Forecasted cost for a future period | ✅ |
| Cost-optimization recommendations (savings) | ✅ |
| Total spend across all implemented providers | ✅ |
All tools return a normalized, provider-agnostic shape (see models.py), so
the assistant gets consistent output no matter which cloud answered.
Related MCP server: Umbrella MCP Server
Architecture
finops-mcp/
├── server.py # MCP server; registers the tools
├── config.py # Builds the provider registry from env vars
├── models.py # Normalized, provider-agnostic data models
├── providers/
│ ├── base.py # Abstract CostProvider interface (read-only)
│ ├── aws.py # AWS: Cost Explorer + Budgets + Cost Optimization Hub
│ ├── azure.py # STUB: Azure Cost Management (planned)
│ ├── gcp.py # STUB: GCP BigQuery billing export (planned)
│ └── oci.py # STUB: OCI Usage API (planned)
├── tests/ # Unit tests (no cloud creds needed; boto3 is faked)
├── requirements.txt
└── mcp.json.example # Example MCP client configurationDesign idea: the tool layer is thin and dispatches to a CostProvider. Each
provider adapter translates its cloud's native API into the shared models. Adding
a cloud means implementing one class — the tools don't change.
How each cloud exposes cost data
Cloud | Data source | Auth |
AWS | Cost Explorer ( | Named profile or default credential chain |
Azure (planned) | Cost Management API | Service principal / |
GCP (planned) | Billing export in BigQuery (requires export to be configured) | Service account |
OCI (planned) | Usage API ( | OCI config file / API key |
Requirements
Python 3.10+
For AWS: credentials with read access to Cost Explorer / Budgets. A named profile works well (this project was developed against a profile called
tau-dev).
AWS IAM permissions (read-only)
The AWS provider needs these actions:
ce:GetCostAndUsage
ce:GetCostForecast
budgets:DescribeBudgets
cost-optimization-hub:ListRecommendations (optional; account must be enrolled)
sts:GetCallerIdentityNote on regions: AWS Cost Explorer and Budgets are global services accessed through the
us-east-1endpoint. The provider always callsus-east-1regardless of where your resources run.
Setup
git clone <your-repo-url>
cd finops-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtConfiguration
Providers are configured entirely through environment variables — no credentials are ever hardcoded.
Env var | Purpose |
| Named AWS profile to use (optional; else default credential chain) |
| Azure subscription id (stub) |
| GCP BigQuery billing export table (stub) |
| OCI tenancy OCID (stub) |
Running
The server speaks MCP over stdio:
AWS_PROFILE=tau-dev python server.pyIt's designed to be launched by an MCP client rather than run by hand.
Connect it to an MCP client
Add it to your client's mcp.json (see mcp.json.example):
{
"mcpServers": {
"finops": {
"command": "python",
"args": ["/absolute/path/to/finops-mcp/server.py"],
"env": { "AWS_PROFILE": "tau-dev" },
"timeout": 120000
}
}
}Point command at your venv's Python (e.g. .venv/bin/python) if the MCP
dependencies are installed there.
Example prompts
Once connected, you can ask the assistant:
"List the cost of my AWS account this month, grouped by service."
"Show me the monthly cost trend for AWS over the last 3 months."
"What's the forecast for next month on AWS?"
"Are there any AWS budgets, and how are we tracking against them?"
"Any cost-optimization recommendations for AWS?"
Testing
Unit tests fake the boto3 session, so they run with no AWS credentials and no network:
source .venv/bin/activate
python -m pytest tests/ -vTo smoke-test against a real AWS account:
AWS_PROFILE=tau-dev python -c "
from config import get_provider
p = get_provider('aws')
s = p.get_cost_summary('2026-08-01', '2026-09-01', 'service')
print(f'{s.total} {s.currency} across {len(s.items)} services')
"Roadmap
AWS provider (cost summary, trend, budgets, forecast, recommendations)
Azure provider (Cost Management API)
GCP provider (BigQuery billing export)
OCI provider (Usage API)
Tag-based cost allocation and untagged-cost detection
Reserved Instance / Savings Plan / commitment coverage & utilization
Optional write actions (behind explicit opt-in), e.g. budget creation
Notes & limitations
AWS forecast requires at least ~14 days of historical usage, otherwise the API returns no data (handled gracefully with a clear error).
Cost Optimization Hub must be enrolled for the account; if not, the recommendations tool returns an empty list rather than failing.
Amounts use AWS BlendedCost. Other metrics (UnblendedCost, AmortizedCost) can be added as options later.
License
MIT
This server cannot be installed
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
Connects AI assistants to CloudQuell multi-cloud and AI cost, savings, anomaly, and budget data.
Query cloud, AI and SaaS spend across 25+ providers: costs, budgets, anomalies, unit economics.
Query OneLens cloud-cost data in natural language: breakdowns, trends, cost centers. Read-only.
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to manage multi-cloud resources (AWS, Azure, GCP) including resource operations, cost analysis, monitoring metrics, and security compliance checks through natural language commands.26102MIT
- FlicenseNot gradedqualityDmaintenanceProvides read-only access to Umbrella Cost finops platform, enabling natural language querying of multi-cloud cost data, optimization recommendations, anomaly detection, and budget tracking across AWS, Azure, and GCP.
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to analyze cloud billing data in FOCUS format through natural language queries. Provides 36+ predefined cost analysis queries, custom SQL execution, and schema documentation for multi-cloud cost optimization and FinOps practices.11Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables natural language analysis of AWS cloud costs, waste audits, and budget insights across multiple profiles and regions.MIT
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/motoraif/finops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server