Skip to main content

MCP server that evaluates AWS account resiliency and DR gaps

Project description

aws-resiliency-mcp

Python 3.10+ License: MIT PyPI

MCP server that evaluates AWS account resiliency posture and identifies disaster recovery gaps across 12 service categories.

Features

  • 17 MCP Tools — granular per-category assessments plus discovery, cross-region, multi-AZ, and full-scan tools
  • 12 Assessment Categories — compute, data, networking, output, serverless, AI/ML, containers, security, analytics, storage, messaging, observability
  • Discovery-First Architecture — auto-detects active services via Resource Explorer / Config before assessing
  • Multi-Region Scanning — parallel cross-region DR gap analysis across 10+ regions
  • Environment Classification — auto-tags resources as production/DR/non-prod from tags and naming patterns
  • Region Role Detection — classifies regions as PRIMARY, DR/SECONDARY, or NOT_USED
  • 4 Output Formats — Markdown, HTML, DOCX, PDF
  • Cross-Account Access — supports STS AssumeRole and temporary credentials
  • Severity Adjustment — automatically bumps production findings up, non-prod findings down
  • Parallel Execution — concurrent assessments and region scans via asyncio thread pool

Installation

# Recommended: run directly with uvx
uvx aws-resiliency-mcp

# Or install via pip
pip install aws-resiliency-mcp

# Development install
pip install -e ".[dev]"

Quick Start

Claude Desktop / Amazon Quick

Add to your MCP client configuration:

{
  "mcpServers": {
    "aws-resiliency-mcp": {
      "command": "uvx",
      "args": ["aws-resiliency-mcp"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

With Docker

{
  "mcpServers": {
    "aws-resiliency-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "AWS_ACCESS_KEY_ID",
        "-e", "AWS_SECRET_ACCESS_KEY",
        "-e", "AWS_SESSION_TOKEN",
        "aws-resiliency-mcp"
      ]
    }
  }
}

Tool Reference

Tool Description
discover_resources Auto-detect active AWS services in an account (Resource Explorer → Config → fallback)
assess_compute_resiliency Evaluate EC2, ECS, Lambda, EKS — multi-AZ, auto-scaling, redundancy
assess_data_resiliency Evaluate RDS, DynamoDB, S3, EBS, EFS — backups, replication, multi-AZ
assess_networking_resiliency Evaluate VPC, ALB/NLB, Route53, CloudFront, Direct Connect — redundancy, failover
assess_output_resiliency Evaluate SQS, SNS, Kinesis, API Gateway — DLQ, redundancy, throttling
assess_serverless_resiliency Evaluate Step Functions, EventBridge, Cognito, AppSync — DLQ, retry, concurrency
assess_ai_ml_resiliency Evaluate SageMaker, Bedrock — endpoint redundancy, model backups
assess_containers_resiliency Evaluate ECS/EKS clusters, ECR — task placement, image replication
assess_security_resiliency Evaluate KMS, IAM, Secrets Manager, WAF, GuardDuty — key rotation, MFA
assess_analytics_resiliency Evaluate EMR, Glue, Athena, OpenSearch, Redshift — HA, backups
assess_storage_resiliency Evaluate S3, EBS, EFS, FSx, Backup — versioning, replication, lifecycle
assess_messaging_resiliency Evaluate SQS, SNS, EventBridge, MQ — DLQ, cross-region, HA
assess_observability_resiliency Evaluate CloudWatch, CloudTrail, X-Ray — alarm coverage, log retention
assess_multi_az_region Verify multi-AZ deployment within a single region
assess_cross_region_dr Compare primary vs DR region resources across 10 regions
classify_region_roles Detect PRIMARY/DR/NOT_USED region roles via tags or resource density
full_resiliency_assessment Run all assessments with discovery, scoring, and formatted report

Architecture

┌─────────────┐     ┌──────────────┐     ┌────────────────┐     ┌────────────┐
│  Discovery  │────▶│   Assess     │────▶│   Classify     │────▶│   Format   │
│             │     │  (parallel)  │     │  (env + region)│     │ (md/html/  │
│ RE2/Config/ │     │  12 modules  │     │  severity adj  │     │  docx/pdf) │
│ describe    │     │  per-service │     │  region roles  │     │            │
└─────────────┘     └──────────────┘     └────────────────┘     └────────────┘
  1. Discover — Identify which services have resources (skip empty categories)
  2. Assess — Run category-specific checks in parallel threads
  3. Classify — Tag each finding with environment context, adjust severity
  4. Format — Generate report in requested format with prioritized recommendations

Configuration

Credentials

The server uses the standard AWS credential chain:

  1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN)
  2. AWS profiles (AWS_PROFILE)
  3. Instance metadata / container credentials
  4. SSO credentials

Cross-Account Access

Provide an account_id parameter to any tool — the server will AssumeRole to arn:aws:iam::{account_id}:role/ReadOnlyAccess.

Alternatively, pass temporary credentials directly:

assess_compute_resiliency(
    region="us-east-1",
    account_id="123456789012",
    access_key_id="ASIA...",
    secret_access_key="...",
    session_token="..."
)

Environment Variables

Variable Default Description
AWS_REGION us-east-1 Default region for assessments
AWS_PROFILE default AWS CLI profile to use
MCP_TRANSPORT stdio MCP transport (stdio or sse)

Output Formats

Format Extension Use Case
Markdown .md Quick terminal review, chat responses
HTML .html Shareable standalone dashboard with styling
DOCX .docx Formal reports for stakeholders
PDF .pdf Print-ready deliverables

All formats include: summary metrics, DR readiness, tagging context, region strategy, per-category findings sorted by environment priority, and prioritized action items.

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run unit tests
pytest

# Run with coverage
pytest --cov=aws_resiliency_mcp --cov-report=term-missing

# Run integration tests (requires AWS credentials)
pytest -m integration

# Lint and format
ruff check src/ tests/
ruff format src/ tests/

# Type check
mypy src/

# Install pre-commit hooks
pre-commit install

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Install dev dependencies (pip install -e ".[dev]")
  4. Make changes and add tests
  5. Ensure all checks pass (pre-commit run --all-files)
  6. Commit (git commit -m 'Add amazing feature')
  7. Push and open a Pull Request

Guidelines

  • All new assessment modules must include unit tests with mocked boto3 calls
  • Maintain 80%+ test coverage
  • Follow existing patterns for Finding creation and environment enrichment
  • Use ruff for formatting (enforced via pre-commit)

License

This project is licensed under the MIT License — see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws_resiliency_mcp-1.0.0.tar.gz (106.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aws_resiliency_mcp-1.0.0-py3-none-any.whl (58.4 kB view details)

Uploaded Python 3

File details

Details for the file aws_resiliency_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: aws_resiliency_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 106.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aws_resiliency_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fa3f87fa2d939980eaaaca1561d0e6b1a6895dd2f2e17fb4f16b3655560d4e34
MD5 72a8e22e5985788db25637102c98ff5a
BLAKE2b-256 78426bca33e33b7212f33fd016eb7885c257b385e8a9a8bef03293941e93e14a

See more details on using hashes here.

File details

Details for the file aws_resiliency_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: aws_resiliency_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 58.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aws_resiliency_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 990dcf22813b930c28c00d3a78823cdb775225ec40a68f0a3cdf06dd9e1ba01f
MD5 4658ecdf096b0b248823f9f175a962a0
BLAKE2b-256 c1fdb158dbd0807c683359d7d1a135afc368a4e7dc27f2ef4f7812304b57f2d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page