AWS Extended Support Cost Calculator — MCP Server
Note: This tool calculates only the additional Extended Support charges. Standard usage costs (compute, storage, I/O, etc.) are separate and not included in these calculations.
What This MCP Does
This MCP server gives Kiro (IDE or CLI) and Amazon Quick the ability to answer questions and generate reports about AWS Extended Support across 5 services: RDS/Aurora, ElastiCache, EKS, OpenSearch, and DocumentDB.
You can ask Kiro things like:
- "Which EKS versions are currently in extended support?"
- "When does PostgreSQL 14 enter extended support?"
- "What's the extended support cost for a db.r6g.xlarge Aurora MySQL instance in us-east-1?"
And you can generate cost reports from CSV inventories:
- "Calculate extended support costs for /path/to/rds_inventory.csv and save the report to ~/Downloads"
The reports categorize your resources by support status (already in extended support, entering this year, entering next year) and project costs for the current and next calendar year based on exact extended support start dates.
| Service | Pricing Model |
|---|---|
| RDS / Aurora | Per-vCPU-hour × Year tier (from AWS RDS Pricing API) |
| ElastiCache | On-demand + premium (80% Y1-2, 160% Y3) (from AWS ElastiCache Pricing API) |
| EKS | Additional per-cluster-hour rate (from AWS EKS Pricing API) |
| OpenSearch / Elasticsearch | Per NIH — Normalized Instance Hour (from AWS OpenSearch Pricing API) |
| DocumentDB | Per-vCPU-hour × Year tier (from AWS DocumentDB Pricing API) |
Version lifecycle dates are fetched live from AWS APIs: RDS and EKS from their own APIs, and ElastiCache, OpenSearch, and DocumentDB from the AWS Health DescribeServiceLifecycle API, with built-in dates as a fallback. See How Calculations Work for details.
Installation
Prerequisites
- Python 3.10+ with uv installed
- An AWS profile with read-only access (see AWS Credentials below)
- Kiro IDE, Kiro CLI, or Amazon Quick
Install in Kiro
Add to your Kiro MCP config (~/.kiro/settings/mcp.json):
{
"mcpServers": {
"aws-extended-support": {
"command": "uvx",
"args": ["aws-extended-support-calculator@latest"],
"env": {
"AWS_PROFILE": "your-aws-profile"
},
"disabled": false,
"autoApprove": [
"rds_cost", "elasticache_cost", "eks_cost", "opensearch_cost", "documentdb_cost",
"rds_report", "elasticache_report", "eks_report", "opensearch_report", "documentdb_report",
"extended_support_report",
"list_services", "list_versions", "list_billing_events", "check_data", "refresh_data"
]
}
}
}
Restart Kiro. The server is downloaded automatically on first use — no pip install needed.
Prerequisite: uv must be installed (brew install uv on Mac).
Install in Amazon Quick
In the Amazon Quick desktop app, go to Settings → Capabilities → Connectors → MCP Servers and add a server that runs the command uvx with the argument aws-extended-support-calculator@latest. Set the AWS_PROFILE environment variable to your AWS profile. No --kiro setup step is needed.
AWS Credentials
The MCP server uses an AWS profile for API calls. Make sure you have a profile configured with access to an AWS account.
If you don't have a profile yet, set one up:
aws configure --profile my-profile-name
This will prompt for your access key, secret key, and default region.
What permissions are needed?
The server needs read-only access to four APIs:
| API Call | Purpose |
|---|---|
ec2:DescribeInstanceTypes |
Look up vCPU counts for instance types |
rds:DescribeDBMajorEngineVersions |
Fetch RDS/Aurora version lifecycle dates |
eks:DescribeClusterVersions |
Fetch EKS version lifecycle dates |
health:DescribeServiceLifecycle |
Fetch ElastiCache, OpenSearch, and DocumentDB version lifecycle dates |
Minimum IAM policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstanceTypes",
"rds:DescribeDBMajorEngineVersions",
"eks:DescribeClusterVersions",
"health:DescribeServiceLifecycle"
],
"Resource": "*"
}
]
}
If the profile can't call health:DescribeServiceLifecycle, the server uses built-in dates for ElastiCache, OpenSearch, and DocumentDB. Ask "Is the pricing data fresh?" (check_data) to see which source is in use and why.
What works without credentials?
All pricing data is fetched from public AWS Pricing APIs — no credentials needed:
- RDS, ElastiCache, DocumentDB, EKS, and OpenSearch pricing
- Built-in fallback lifecycle dates for ElastiCache, OpenSearch, and DocumentDB
vCPU lookups and live version lifecycle dates (RDS, EKS, and the Health API for ElastiCache, OpenSearch, and DocumentDB) require credentials. Once cached (24-hour TTL), the server works without credentials until the cache expires.
CSV Format Requirements
The batch report tools auto-detect columns by matching header names (case-insensitive). Your CSV must include headers that match one of the recognized names below.
RDS / Aurora / DocumentDB
| Field | Required | Recognized Column Names |
|---|---|---|
| Instance type | Yes | Instance Type, InstanceType, DBInstanceClass, class |
| Engine | Yes (RDS only) | DB Engine, Engine, DatabaseEngine |
| Version | Yes | Engine Version, Engine Full Version, EngineVersion, Version |
| Region | Yes | Instance Region, Region, RegionCode |
| Instance name | No | Instance Name, DBInstanceId, Identifier, Label |
| Multi-AZ | No | Multi-AZ, MAZ Flag, MultiAZ |
ElastiCache
| Field | Required | Recognized Column Names |
|---|---|---|
| Node type | Yes | Node Type, NodeType, CacheNodeType, Instance Type |
| Region | Yes | Region, Location |
| Version | No | Version, EngineVersion, Engine Version |
| Node count | No | NumNodes, NumCacheNodes, Node Count, Nodes |
| Cluster name | No | Cluster, Name, CacheClusterId |
EKS
| Field | Required | Recognized Column Names |
|---|---|---|
| Version | Yes | clusterVersion, KubernetesVersion, k8sVersion, Version |
| End of support date | Recommended | endOfSupportDate, end_of_support |
| End of extended support | No | endOfExtendedSupportDate, end_of_extended_support |
| Region | No | Region |
| Cluster name | No | clusterName, cluster_name, Cluster, Name |
OpenSearch / Elasticsearch
| Field | Required | Recognized Column Names |
|---|---|---|
| Instance type | Yes | Instance Type, InstanceType, Node Type |
| Region | Yes | Region, Location |
| Version | Recommended | Version, EngineVersion, Engine Version |
| Node count | No | NumNodes, Node Count, DataNodes, Nodes |
| Domain name | No | Domain, Name, DomainName, Cluster |
Usage Examples
Generate reports from CSV inventories
"Calculate extended support costs for /path/to/rds_inventory.csv and save the report to /tmp/reports"
"Generate an EKS extended support report for /path/to/eks_clusters.csv and save to ~/Downloads"
"Process my ElastiCache inventory at /path/to/redis_clusters.csv and give me the cost breakdown"
"Calculate DocumentDB extended support costs for /path/to/docdb_instances.csv and save reports to ~/Desktop"
Quick single-instance cost checks
"What's the extended support cost for a db.r6g.xlarge PostgreSQL instance in us-east-1 with Multi-AZ?"
"How much would extended support cost for 10 EKS clusters over 6 months?"
"Calculate ElastiCache extended support for cache.r6g.large in eu-west-1 with 3 nodes"
"What's the OpenSearch extended support cost for an m7g.medium.search instance in us-west-2 with 5 nodes?"
Version lifecycle questions
"Which EKS versions are currently in extended support?"
"Show me all RDS and Aurora version extended support dates"
"When does PostgreSQL 14 enter extended support?"
"What OpenSearch versions have announced extended support dates?"
"Is Redis 6 eligible for ElastiCache extended support? When does it start?"
"List all services and versions that are entering extended support this year"
Data management
"Is the pricing data fresh?"
"Refresh the extended support pricing data"
"What services does the extended support calculator cover?"
Example Outputs
Single instance cost check
You: "What's the extended support cost for a db.r6g.xlarge PostgreSQL instance in us-east-1 with Multi-AZ?"
Kiro: The db.r6g.xlarge has 4 vCPUs. With Multi-AZ (2× multiplier), the effective vCPU count is 8.
| Per-vCPU Hourly Rate | Monthly | Yearly | |
|---|---|---|---|
| Year 1 | $0.10 | $584 | $7,008 |
| Year 2 | $0.10 | $584 | $7,008 |
| Year 3 | $0.20 | $1,168 | $14,016 |
| Total 3-Year | $28,032 |
Version lifecycle query
You: "Which EKS versions are currently in extended support?"
Kiro: Here are the current EKS version support statuses:
| Version | Standard Support End | Extended Support End | Status |
|---|---|---|---|
| EKS 1.30 | Jul 22, 2025 | Jul 22, 2026 | In Extended Support |
| EKS 1.31 | Nov 25, 2025 | Nov 25, 2026 | In Extended Support |
| EKS 1.32 | Mar 22, 2026 | Mar 22, 2027 | In Extended Support |
| EKS 1.33 | Jul 28, 2026 | Jul 28, 2027 | In Standard Support |
| EKS 1.34 | Dec 1, 2026 | Dec 1, 2027 | In Standard Support |
| EKS 1.35 | Mar 26, 2027 | Mar 26, 2028 | In Standard Support |
Batch report
You: "Calculate extended support costs for /path/to/rds_inventory.csv and save the report to ~/Downloads"
Kiro: Processed 5,836 RDS/Aurora instances (130 skipped — unsupported engines).
2026 Extended Support Cost: $4,738,358 2027 Projected Cost: $17,260,574
| Engine Version | Instances | Status | 2026 Cost | 2027 Projected |
|---|---|---|---|---|
| Aurora MySQL 5.7 | 130 | In Extended Support | $1,596,755 | $1,596,755 |
| RDS MySQL 5.7 | 45 | In Extended Support | $718,565 | $791,343 |
| RDS MySQL 8.0 | 828 | Entering Aug 2026 | $2,047,935 | $4,915,043 |
| RDS PostgreSQL 13 | 56 | In Extended Support | $188,749 | $226,499 |
| RDS PostgreSQL 14 | 2,032 | Entering Mar 2027 | $0 | $8,619,869 |
| ... |
Reports saved:
- CSV:
~/Downloads/inventory_extended_support_20260427.csv - HTML:
~/Downloads/inventory_extended_support_20260427.html
HTML report
The batch tools generate a styled HTML report that can be opened in any browser. It includes:
- Summary cards with current year and next year projected costs
- Category summary table (already in extended support / entering this year / entering next year)
- Version detail tables per category with instance counts, dates, and costs
- Region breakdown table
Tools
Single Instance Calculators
Quick cost estimates for individual resources.
| Tool | Description |
|---|---|
rds_cost |
RDS/Aurora instance — per-vCPU-hour, Year 1/2/3 breakdown |
elasticache_cost |
ElastiCache Redis cluster — on-demand + premium tiers |
eks_cost |
EKS cluster(s) — extended vs standard support cost comparison |
opensearch_cost |
OpenSearch domain — NIH-based pricing |
documentdb_cost |
DocumentDB instance — per-vCPU-hour, Year 1/2/3 breakdown |
If AWS doesn't publish a price for the requested instance type, pricing type, and region, the tool says no pricing was found rather than reporting $0.
Batch Report Generators
Process CSV inventories and generate executive-level CSV + HTML reports.
| Tool | Description |
|---|---|
rds_report |
RDS/Aurora inventory → cost by engine/version, region, with current year + next year projections |
elasticache_report |
ElastiCache inventory → cost by version with premium tier projections |
eks_report |
EKS inventory → cost by version using end-of-support dates |
opensearch_report |
OpenSearch inventory → cost by engine version with NIH pricing |
documentdb_report |
DocumentDB inventory → cost with grace period handling |
extended_support_report |
Any mix of the inventories above → per-service reports plus a consolidated cross-service report |
RDS and DocumentDB reports list any rows with no published price under no_pricing instead of counting them as $0.
All batch tools accept an output_dir parameter. When provided, they save:
- CSV report — summary, version breakdown, region breakdown, instance detail
- HTML report — styled executive report with summary cards, category tables, version detail
Reports categorize versions into:
- Already in Extended Support
- Entering Extended Support this year
- Entering Extended Support next year
- Future / Still in Standard Support
Utilities
| Tool | Description |
|---|---|
list_services |
Show all supported services and pricing models |
list_versions |
List version lifecycle dates — shows which versions are in standard support, extended support, or future extended support with exact dates. Accepts a service name or "all" |
list_billing_events |
Informational list of AWS lifecycle events that change billing (from the Health API), across all services — including ones this calculator doesn't cost. Each event is flagged with whether the calculator can cost it |
check_data |
Check freshness of cached pricing and version data, and whether lifecycle dates are coming from the Health API or the built-in fallback |
refresh_data |
Force re-download all cached data |
How Calculations Work
RDS / Aurora
- Version eligibility: Fetched live from
rds.describe_db_major_engine_versions()— returns exact standard support end, extended support start/end dates for each engine+version - Pricing: Fetched from the public AWS RDS Pricing API — extracts ExtendedSupport SKUs with rates by region, engine, and year. Provisioned instances use the per-vCPU-hour rate; Aurora Serverless v2 (
db.serverless) uses the per-ACU-hour rate. The two are never substituted for each other - vCPU count: Looked up via
ec2.describe_instance_types() - Cost formula:
vCPUs × per-vCPU-hour rate × 730 hours/month × Multi-AZ multiplier (1 or 2) - Year determination: Month-by-month from the exact extended support start date. Year 1 = months 0-11, Year 2 = 12-23, Year 3 = 24+. Year 3 rates are typically 2× Year 1-2 for PostgreSQL/MySQL. For versions with more than three years of extended support, months after Year 3 bill at the Year 3 rate until extended support ends
ElastiCache
- Version eligibility: Standard and extended support end dates per Redis OSS major version come from the AWS Health
DescribeServiceLifecycleAPI; the Year 1/2/3 boundaries are derived from the standard support end date. If the API isn't available, built-in dates from the AWS docs are used - Pricing: On-demand price fetched from public ElastiCache Pricing API, then premium applied
- Premium tiers: Year 1-2: 80% of on-demand price. Year 3: 160% of on-demand price
- Cost formula:
on-demand hourly × premium % × num_nodes × 730 hours/month
EKS
- Version eligibility: Fetched live from
eks.describe_cluster_versions()— returnsendOfStandardSupportDate,endOfExtendedSupportDate, andstatusper version - Pricing: Additional hourly rate per region fetched from public AWS EKS Pricing API — no credentials needed. Currently $0.50/cluster/hour additional across all regions
- Cost formula:
extended_support_rate × 730 hours/month(only for months after end-of-support date) - CSV dates: The batch tool reads
endOfSupportDateandendOfExtendedSupportDatecolumns from the CSV (if present) to determine per-cluster support timelines. These columns are typically populated by data collection tools like Dante/TSC
OpenSearch / Elasticsearch
- Version eligibility: Standard and extended support end dates per Elasticsearch/OpenSearch version come from the AWS Health
DescribeServiceLifecycleAPI. If the API isn't available, built-in dates from the AWS blog post are used - Pricing: NIH rate per region fetched from public AWS OpenSearch Pricing API — no credentials needed
- Cost formula:
NIH_rate × normalization_factor × num_nodes × 730 hours/month - Normalization factors: nano=0.25, micro=0.5, small=1, medium=2, large=4, xlarge=8, 2xlarge=16, etc. Source: AWS blog post
DocumentDB
- Version eligibility: Only v3.6 has extended support. Its standard and extended support end dates come from the AWS Health
DescribeServiceLifecycleAPI, with built-in dates from the AWS docs as a fallback - Pricing: Per-vCPU-hour rates fetched from the public DocumentDB Pricing API, matched by instance family
- Grace period: Standard support ends Mar 30, 2026 but extended support billing starts Jul 1, 2026 (3-month grace). The API doesn't publish this, so it's built in
- Cost formula:
vCPUs × per-vCPU-hour rate × 730 hours/month × Multi-AZ multiplier - Rate bands: Years 1 and 2 share one rate; Year 3 has a higher rate. Both come from the pricing API
Data Freshness
All fetched data is cached locally for 24 hours in a cache/ directory next to the server script.
| Data | Source | Requires Credentials | Cache TTL |
|---|---|---|---|
| RDS extended support pricing | AWS Pricing API (public) | No | 24 hours |
| ElastiCache on-demand pricing | AWS Pricing API (public) | No | 24 hours |
| DocumentDB extended support pricing | AWS Pricing API (public) | No | 24 hours |
| OpenSearch NIH rates | AWS Pricing API (public) | No | 24 hours |
| EKS extended support rate | AWS Pricing API (public) | No | 24 hours |
| EC2 vCPU counts | ec2.describe_instance_types() |
Yes | 24 hours |
| RDS version lifecycle | rds.describe_db_major_engine_versions() |
Yes | 24 hours |
| EKS version lifecycle | eks.describe_cluster_versions() |
Yes | 24 hours |
| ElastiCache, OpenSearch, DocumentDB lifecycle dates | health.describe_service_lifecycle() (AWS Health) |
Yes | 24 hours |
If the Health API can't be reached, ElastiCache, OpenSearch, and DocumentDB fall back to built-in dates.
Use check_data to see cache status and which lifecycle source is in use. Use refresh_data to force re-download.
First tool call on a fresh install triggers automatic data fetch — no manual setup needed.
Metadata
Release files for aws-extended-support-calculator 1.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aws_extended_support_calculator-1.4.2.tar.gz | 123.8 kB | Without provenance | Details for aws_extended_support_calculator-1.4.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aws_extended_support_calculator-1.4.2-py3-none-any.whl | Python 3 | none | any | Details for aws_extended_support_calculator-1.4.2-py3-none-any.whl |
Total release size: 182.6 kB
Release files / aws_extended_support_calculator-1.4.2.tar.gz
| Download URL | aws_extended_support_calculator-1.4.2.tar.gz |
|---|---|
| Size | 123.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b2a0d826e7f7b7e693e85953f67eb9a7211f748ec2c3f42441cedc07bd6fb103
|
|
BLAKE2b-256 checksum How to use checksums |
61538381dbede6775dc5e922a882e67c232ae97fc59c36d5766ff0927b924904
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|
Release files / aws_extended_support_calculator-1.4.2-py3-none-any.whl
| Download URL | aws_extended_support_calculator-1.4.2-py3-none-any.whl |
|---|---|
| Size | 58.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e84a1490a29168c7caa9116ff745515843ccf8af009dafcf34fc25bc7f68e042
|
|
BLAKE2b-256 checksum How to use checksums |
ea83ee6a324ad193ec378c5517d22b672b2091275b47069dc4eb45876c632d40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|
Security for aws-extended-support-calculator 1.4.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.