AWS Builder Center
AWS MCP Servers Part 4: The Operator's Toolkit

AWS MCP Servers Part 4: The Operator's Toolkit

Where development meets operations — the MCP servers that secure, integrate, monitor, and optimize your AWS workloads.

AI Engineer | AWS Community Builder

Introduction

Welcome to Part 4 of our AWS MCP Servers series. So far we've covered foundational servers  ,  infrastructure and deployment , and AI/ML and data analytics . Now we step into the operational side of AWS — the servers that give your AI assistant the keys to security, integration, observability, and cost management.
This post covers three categories that every production team relies on:
  • Developer Tools & Support — OpenAPI integration, IAM management, location services, and more
  • Integration & Messaging — SNS/SQS event-driven architecture
  • Cost & Operations — Pricing, CloudWatch, security assessment, and CloudTrail
These are the servers that turn your AI assistant from a code generator into a true operations partner — one that can investigate incidents, audit security, optimize costs, and integrate disparate systems through natural conversation.

The Shift: From Reactive Operations to Conversational Operations

Traditional ops workflow:
1
Alert fires → Open 5 consoles → Correlate logs → Search docs → Fix → Document
AI-assisted ops workflow with MCP:
1
Alert fires → Ask AI → AI correlates logs/metrics/traces → Suggests fix → Verifies
The unlock here isn't speed alone — it's cognitive load reduction. Your operators stop context-switching between consoles and start having focused conversations about the problem.

🛠️ Developer Tools & Support MCP Servers


1. AWS Labs OpenAPI MCP Server

Turn any OpenAPI spec into MCP tools, automatically
The OpenAPI MCP Server is one of the most versatile servers in the AWS Labs ecosystem. Point it at an OpenAPI 3.x specification — yours or a third party's — and it dynamically generates MCP tools for every endpoint. No manual tool definitions, no glue code, no SDK wrappers. Your AI assistant can now interact with any REST API that has an OpenAPI spec.

Why This Matters

Every modern API ships with an OpenAPI specification. With this MCP server, that specification becomes a live capability for your AI assistant — overnight.

Key Features

FeatureDescription
Dynamic Tool GenerationAuto-creates MCP tools from OpenAPI endpoints
Intelligent Route MappingMaps GET ops with query params to TOOLS (not RESOURCES) for better LLM usability
Tag-based FilteringInclude or exclude operations by tag (pet,store vs admin,internal)
Enriched Tool DescriptionsAuto-appends response codes and parameter examples for better LLM tool selection
Multi-spec CompositionCombine multiple OpenAPI specs into a single MCP server
Output Validation ToggleDisable response schema validation for APIs with loose specs
Operation-Specific PromptsGenerates natural language prompts for each API operation
Auth SupportBasic, Bearer Token, API Key, and Cognito authentication
OpenAPI 3.xWorks with both JSON and YAML specifications
Metrics CollectionTracks API calls, tool usage, errors, and performance

How Tool Generation Works

Given an OpenAPI spec like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
paths:
/pets/{petId}:
get:
summary: Find pet by ID
operationId: getPetById
parameters:
- name: petId
in: path
required: true
schema:
type: integer
responses:
'200':
description: successful operation
The server generates an MCP tool that your AI assistant can call:
1
2
3
4
Tool: getPetById
Description: Find pet by ID
Parameters: petId (integer, required, path parameter)
Response codes: 200 (success), 400, 404

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"mcpServers": {
"awslabs.openapi-mcp-server": {
"command": "uvx",
"args": ["awslabs.openapi-mcp-server@latest"],
"env": {
"API_NAME": "petstore",
"API_BASE_URL": "https://petstore3.swagger.io/api/v3",
"API_SPEC_URL": "https://petstore3.swagger.io/api/v3/openapi.json",
"LOG_LEVEL": "ERROR",
"ENABLE_OPERATION_PROMPTS": "true"
}
}
}
}

Authentication Options

The server supports four auth methods, configurable via CLI flags or environment variables:
1
2
3
4
5
6
7
8
# Basic Auth
--auth-type basic --auth-username USER --auth-password PASS

# Bearer Token
--auth-type bearer --auth-token TOKEN

# API Key (header / query / cookie)
--auth-type api_key --auth-api-key KEY --auth-api-key-name X-API-Key --auth-api-key-in header

Real-World Scenario: Internal API Integration

The Problem: Your company has 12 internal microservices, each with its own OpenAPI spec. You want your AI assistant to query them all without writing custom tools for each one.
Traditional Approach:
  • Write 12 separate MCP server implementations
  • Maintain each one as APIs evolve
  • Handle auth and error patterns 12 times
With OpenAPI MCP Server:
1
2
3
4
5
6
{
"API_NAME": "user-service",
"API_BASE_URL": "https://users.internal.company.com",
"API_SPEC_URL": "https://users.internal.company.com/openapi.json",
"ADDITIONAL_SPECS": "[{\"name\":\"orders\",\"spec_url\":\"https://orders.internal.company.com/openapi.json\",\"base_url\":\"https://orders.internal.company.com\"},{\"name\":\"payments\",\"spec_url\":\"https://payments.internal.company.com/openapi.json\",\"base_url\":\"https://payments.internal.company.com\"}]"
}
One server, all 12 services. As specs update, tools update. Zero maintenance.

Real-World Scenario: Third-Party API Without an SDK

The Problem: Your team needs to integrate with a vendor API that doesn't have a Python SDK, but does publish an OpenAPI spec.
With OpenAPI MCP Server:
1
2
"Use the vendor API to fetch all active subscriptions for customer ID 12345
and check if any are due for renewal in the next 30 days."
The server reads the OpenAPI spec, generates the right tool calls, handles the bearer token auth, and returns structured results — all without you writing a single API client method.

2. AWS IAM MCP Server

Comprehensive IAM management with security-first defaults
IAM is arguably the most consequential service in AWS. A misconfigured policy can expose data; an over-privileged role can become an attacker's entry point. The AWS IAM MCP Server gives your AI assistant the ability to manage users, roles, groups, policies, and access keys — with built-in safeguards like read-only mode and policy simulation.

Capability Categories

CategoryWhat It Covers
User ManagementCreate, list, get, delete IAM users (with force cleanup)
Role ManagementCreate, list, manage roles with trust policies
Group ManagementFull CRUD plus member management and group policies
Policy ManagementList managed policies, attach/detach to users and roles
Inline PoliciesFull CRUD for both user and role inline policies
Access KeysCreate and delete access keys (with single-use secret warning)
Permission BoundariesSet max-permission boundaries for enhanced security
Policy SimulationTest permissions before applying them

Available Tools (selected highlights)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# User Management
list_users(path_prefix, max_items)
get_user(user_name) # Returns groups, attached policies, access keys
create_user(user_name, path, permissions_boundary)
delete_user(user_name, force=False) # force=True cleans up policies, keys, groups

# Role Management
list_roles(path_prefix, max_items)
create_role(
role_name,
assume_role_policy_document, # Trust policy JSON
description,
max_session_duration=3600,
permissions_boundary
)

# Group Management
create_group(group_name, path)
add_user_to_group(group_name, user_name)
attach_group_policy(group_name, policy_arn)
get_group(group_name) # Returns members + all policies

# Policy Operations
list_policies(scope="Local", only_attached=False) # Local=customer, AWS=managed, All=both
attach_user_policy(user_name, policy_arn)
attach_role_policy(role_name, policy_arn)

# Inline Policies
put_user_policy(user_name, policy_name, policy_document)
get_user_policy(user_name, policy_name)
list_user_policies(user_name)
delete_user_policy(user_name, policy_name)
# Same set exists for roles: put_role_policy, get_role_policy, etc.

# Access Keys
create_access_key(user_name) # ⚠️ Secret returned only once
delete_access_key(user_name, access_key_id)

# Security Analysis
simulate_principal_policy(
policy_source_arn,
action_names,
resource_arns,
context_entries
)

Read-Only Mode (Critical for Production)

Add --readonly to disable all mutating operations:
1
2
3
{
"args": ["awslabs.iam-mcp-server@latest", "--readonly"]
}
In read-only mode, these operations are blocked:
  • create_user, delete_user
  • create_role, attach_user_policy, detach_user_policy
  • create_access_key, delete_access_key
But these still work for safe exploration:
  • list_users, get_user, list_roles, list_policies
  • simulate_principal_policy (test permissions without changes)

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"mcpServers": {
"awslabs.iam-mcp-server": {
"command": "uvx",
"args": ["awslabs.iam-mcp-server@latest", "--readonly"],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}

Real-World Scenario: Permission Audit Before a Deployment

The Problem: You're about to deploy a new Lambda function that needs to read from S3 and write to DynamoDB. You want to verify the Lambda execution role has exactly the right permissions — no more, no less.
With IAM MCP Server:
1
2
3
4
5
"Simulate the permissions for role 'lambda-order-processor-role'.
Test if it can:
- s3:GetObject on arn:aws:s3:::orders-bucket/*
- dynamodb:PutItem on arn:aws:dynamodb:us-east-1:123456789012:table/orders
- ec2:TerminateInstances on * (this should DENY)"

The server uses simulate_principal_policy to test each action against the role's actual policies and returns explicit allow/deny decisions — letting you catch over-privileged or under-privileged roles before they reach production.

Real-World Scenario: Onboarding a New Developer

The Problem: A new team member joins. You need to create their IAM user, add them to the right groups, and provision an access key — securely.
With IAM MCP Server:
1
2
3
"Create a new IAM user named 'jane.smith' in path '/developers/'.
Add her to the 'Developers' and 'ReadOnlyAuditors' groups.
Generate an access key and tell me the credentials so I can share them securely."

The server walks through each step, creates the user, attaches group memberships, generates the access key (with the prominent reminder that the secret is shown only once), and returns the result for your secure handoff.

High-Level Overview: Other Developer Tools & Support Servers

Amazon Location Service MCP Server Provides natural-language access to Amazon Location Service capabilities for geocoding, reverse geocoding, place search, nearby search with auto-radius expansion, route calculation across travel modes (Car, Truck, Walking, Bicycle), and multi-stop waypoint optimization. Ideal for teams building logistics, delivery, or location-aware applications without managing third-party mapping APIs.
Prometheus MCP Server Provides a robust interface for interacting with AWS Managed Prometheus, enabling PromQL query execution, metric listing, and server information retrieval with AWS SigV4 authentication. Ideal for teams running Prometheus-based observability on AWS.
Amazon Kendra Index MCP Server Enables enterprise search and RAG enhancement by exposing Amazon Kendra index search capabilities. Useful when you have content indexed in Kendra and want your AI assistant to use that index for grounded responses.

📡 Integration & Messaging MCP Servers


3. Amazon SNS / SQS MCP Server

Event-driven architecture management with built-in security
Asynchronous messaging is the backbone of most modern AWS architectures. SNS handles pub/sub fan-out; SQS handles work queues. The Amazon SNS / SQS MCP Server gives your AI assistant the ability to create, configure, and manage both — with a security model that prevents it from accidentally modifying resources it didn't create.

The Tag-Based Security Model

This is the most distinctive feature of the SNS/SQS MCP Server. Every resource it creates gets automatically tagged with mcp_server_version. Before any mutating operation (update, delete, send), the server validates this tag. If the tag isn't present, the operation is rejected.
This means:
  • The MCP server can only modify resources it created. Existing production topics and queues are protected from accidental changes.
  • No reliance on IAM alone for blast-radius control. Even with broad IAM permissions, the server still respects the tag check.
  • Application-to-Person (A2P) messaging mutations are disabled by default. SMS, voice, and push notification operations require explicit opt-in for safety.

Key Capabilities

CapabilityDescription
SNS Topic ManagementCreate, list, update, and delete SNS topics
SNS Subscription ManagementManage subscriptions across SNS topics
SQS Queue ManagementCreate, list, update, and delete SQS queues
Message OperationsSend and receive messages via SNS and SQS
Tag-Based ProtectionMutations restricted to resources with mcp_server_version tag
Resource Creation ToggleResource creation disabled by default — opt-in via --allow-resource-creation
A2P SafetyApplication-to-Person messaging mutations disabled by default

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcpServers": {
"awslabs.amazon-sns-sqs-mcp-server": {
"command": "uvx",
"args": ["awslabs.amazon-sns-sqs-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1"
}
}
}
}
To enable resource creation:
1
2
3
{
"args": ["awslabs.amazon-sns-sqs-mcp-server@latest", "--allow-resource-creation"]
}

IAM Setup Recommendation

Per the official docs, the recommended approach is to:
  1. Create a new IAM role with AmazonSQSReadOnlyAccess and AmazonSNSReadOnlyAccess for safe exploration
  2. Add AmazonSNSFullAccess and AmazonSQSFullAccess only when you need mutation capabilities
  3. Configure an AWS profile that assumes this role

Real-World Scenario: Setting Up a New Event-Driven Pipeline

The Problem: You're building an order processing pipeline that needs:
  • An SNS topic for OrderPlaced events
  • An SQS queue subscribed to that topic for the inventory service
  • Another SQS queue for the email notification service
  • A dead-letter queue for failed messages
With SNS / SQS MCP Server (with --allow-resource-creation):
1
2
3
4
5
"Create an order processing pipeline:
- SNS topic 'order-placed-events'
- SQS queue 'inventory-orders' subscribed to that topic
- SQS queue 'notification-orders' also subscribed
- Dead-letter queue 'failed-orders' attached to both processing queues"

The server creates each resource, automatically tags them with mcp_server_version, wires up the subscriptions, and configures the DLQs. Every resource is now under the MCP server's "ownership," so future modifications are safe.

Real-World Scenario: Investigating a Stuck Queue

The Problem: Your monitoring shows messages piling up in an SQS queue. You need to investigate without leaving your IDE.
With SNS / SQS MCP Server:
1
2
3
"Show me the configuration and current message count for the
'inventory-orders' queue. If there are stuck messages, peek at the first
3 messages so we can see why they're failing."

The server retrieves the queue attributes, reports the visible/in-flight message counts, and can receive messages for inspection — without disrupting the production consumers.

High-Level Overview: Other Integration & Messaging Servers

Amazon MQ MCP Server Provides message broker management for RabbitMQ and ActiveMQ on Amazon MQ. Useful for teams running traditional JMS or AMQP messaging that need to lift-and-shift to AWS managed brokers without rewriting their messaging layer.

💰 Cost & Operations MCP Servers

4. AWS Pricing MCP Server

Real-time AWS pricing without leaving your IDE
Estimating AWS costs has historically been painful — between the AWS Pricing Calculator, simple monthly calculator, and per-service pricing pages, getting an accurate estimate can take hours. The AWS Pricing MCP Server brings the AWS Pricing API directly into your AI assistant, with the added ability to scan CDK and Terraform projects to identify cost-driving resources automatically.

Key Capabilities

CapabilityDescription
Service Catalog ExplorationDiscover all AWS services with pricing data
Pricing Attribute DiscoveryIdentify filterable dimensions (instance types, regions, storage classes)
Real-Time Pricing QueriesCurrent pricing with multi-option comparisons and pattern matching
Multi-Region ComparisonsCompare pricing across regions in a single query
Bulk Pricing DataDownload complete datasets in CSV/JSON for offline analysis
Cost Report GenerationDetailed reports with unit pricing, calculation breakdowns, scenarios
IaC Project AnalysisScan CDK and Terraform projects to identify AWS services automatically
Architecture Pattern GuidanceCost considerations for patterns (especially Bedrock services)
Well-Architected OptimizationCost optimization aligned with Well-Architected Framework
Important: The official docs note that the server provides real-time pricing data from the AWS Pricing API, but cannot guarantee that AI assistants will always construct filters correctly or identify the absolute cheapest options. All pricing API calls are free of charge.

Required IAM Permission

Just one: pricing:* — that's it. The server only accesses generally-available AWS pricing information; it doesn't read any user-specific data.

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"mcpServers": {
"awslabs.aws-pricing-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-pricing-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_PROFILE": "default",
"AWS_REGION": "us-east-1"
}
}
}
}

Real-World Scenario: Cost Estimate Before Deployment

The Problem: Your team is about to deploy a new architecture: 3 ALBs, 6 Fargate tasks, an Aurora PostgreSQL cluster (2 instances), an ElastiCache Redis cluster, and a CloudFront distribution. You need a cost estimate before the architecture review meeting tomorrow.
Traditional Approach:
  • Open AWS Pricing Calculator
  • Manually configure each service
  • Spend 90 minutes getting numbers
  • Pray the regional pricing differences are right
With AWS Pricing MCP Server:
1
2
3
4
5
6
7
8
"Estimate the monthly cost in us-east-1 for:
- 3 Application Load Balancers (medium traffic, ~10M requests/month each)
- 6 Fargate tasks running 24/7 (1 vCPU, 2GB RAM)
- Aurora PostgreSQL: 2 db.r6g.large instances + 100GB storage + 50M IOs/month
- ElastiCache Redis: 2 cache.m6g.large nodes
- CloudFront: 5TB outbound data transfer

Compare with us-west-2 and eu-west-1 to see if there's a cheaper region."

The server queries the Pricing API for each resource type, computes monthly totals, and returns a comparison across regions.

Real-World Scenario: Pre-Deployment IaC Cost Scan

The Problem: Your developer just submitted a 400-line Terraform PR. Reviewing it for cost impact takes hours.
With AWS Pricing MCP Server:
1
2
3
"Scan this Terraform project at ./infra/ and tell me the estimated monthly cost.
Highlight any expensive resources (>$500/month) and suggest cheaper alternatives
based on the Well-Architected Framework."

The server parses the Terraform files, identifies AWS resources with their configurations, queries pricing for each, and returns a structured cost report with optimization suggestions.

5. CloudWatch MCP Server

AI-powered observability and root cause analysis
CloudWatch is the centerpiece of AWS observability — metrics, logs, alarms, and now PromQL support. The CloudWatch MCP Server consolidates all of these capabilities behind task-oriented tools designed for troubleshooting workflows. The goal isn't just to expose APIs; it's to let your AI agent perform AI-powered root cause analysis with minimal context-switching.

Tool Categories

The CloudWatch MCP Server organizes its tools into four categories:
Metrics Tools:
1
2
3
4
get_metric_data(namespace, metric_name, dimensions, period, statistic, ...)
get_metric_metadata(namespace, metric_name)
get_recommended_metric_alarms(namespace, metric_name)
analyze_metric(namespace, metric_name) # Trend, seasonality, statistics
The get_metric_data tool optionally accepts a queries parameter for advanced use cases:
  • Percentile statistics (p50, p90, p99) for latency analysis
  • Math expressions for derived metrics (e.g., error rate = errors/invocations × 100)
  • Multi-metric batching — fetch multiple metrics in one API call
PromQL Tools (available in us-east-1, us-west-2, eu-west-1, ap-southeast-1, ap-southeast-2):
1
2
3
4
5
execute_promql_query(query) # Instant query
execute_promql_range_query(query, start, end, step)
get_promql_label_values(label) # E.g., __name__ for metric names
get_promql_series(matchers) # Find series matching label selectors
get_promql_labels() # List all available label names
Alarm Tools:
1
2
get_active_alarms() # All currently triggered alarms
get_alarm_history(alarm_name) # Historical state changes
Log Tools:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
describe_log_groups()
analyze_log_group(log_group, start, end) # Anomalies, patterns, errors
execute_log_insights_query(log_groups, query, start, end)
get_logs_insight_query_results(query_id)
cancel_logs_insight_query(query_id)

# Powerful batch tool for multi-region/multi-account
execute_cwl_insights_batch(
log_group_names, # Names or ARNs (ARNs for cross-account)
regions, # Multiple regions
start_time, end_time,
query_string,
account_label=None,
profile_name=None
)
The execute_cwl_insights_batch tool is particularly powerful: it auto-chunks log groups (max 50 per query), throttles concurrency (max 7 per region), polls for completion, retries failures, and splits time ranges when hitting the 10,000-record limit.

Required IAM Permissions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"Action": [
"cloudwatch:DescribeAlarms",
"cloudwatch:DescribeAlarmHistory",
"cloudwatch:GetMetricData",
"cloudwatch:ListMetrics",
"logs:DescribeLogGroups",
"logs:DescribeQueryDefinitions",
"logs:ListLogAnomalyDetectors",
"logs:ListAnomalies",
"logs:StartQuery",
"logs:GetQueryResults",
"logs:StopQuery"
]
}

Configuration

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcpServers": {
"awslabs.cloudwatch-mcp-server": {
"command": "uvx",
"args": ["awslabs.cloudwatch-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-aws-profile",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}

Real-World Scenario: Late-Night Incident Investigation

The Problem: At 2 AM, an alarm fires for "high error rate" in your payment service. You need to find the root cause fast.
Traditional Approach:
  • Open the CloudWatch console
  • Find the alarm, check its history
  • Switch to logs, run an Insights query
  • Switch to metrics, correlate timestamps
  • Switch to traces (X-Ray)
  • Repeat across regions
With CloudWatch MCP Server:
1
2
3
4
"The 'payment-service-high-errors' alarm just triggered.
Get the alarm history, pull error logs from the payment-service log group
for the last 30 minutes, correlate with metrics for that period,
and tell me the most likely root cause."

The server orchestrates multiple tool calls:
  1. get_alarm_history — sees the alarm has been flapping for 15 minutes
  2. analyze_log_group — identifies a spike in ConnectionTimeoutException
  3. get_metric_data — correlates with a database connection pool spike
  4. Returns a synthesized analysis pointing at DB connection exhaustion
What used to be a 30-minute investigation becomes a 2-minute conversation.

Real-World Scenario: Cross-Region Log Search

The Problem: A customer reports an issue, but you don't know which region their request hit. You need to search logs across all 5 regions where your service runs.
With CloudWatch MCP Server:
1
2
3
"Search the 'api-gateway-access-logs' log group across us-east-1, us-west-2,
eu-west-1, ap-southeast-1, and ap-northeast-1 for the last hour.
Filter for requestId 'abc-123-def-456' and return any matches."

The execute_cwl_insights_batch tool runs the query in parallel across all 5 regions, automatically handles throttling, and returns a single merged result set annotated with the region where each match was found.

High-Level Overview: Other Cost & Operations Servers

AWS Well-Architected Security Assessment Tool MCP Server A read-only operations server that evaluates AWS environments against the Well-Architected Framework Security Pillar. Monitors the operational status of GuardDuty, Security Hub, Inspector, and IAM Access Analyzer, retrieves and prioritizes findings, tracks resource compliance, and analyzes overall security posture. Ideal for SOC teams, compliance reporting, and continuous security monitoring without the risk of accidental remediation.
AWS CloudTrail MCP Server Enables AI-driven security investigations and audit workflows through two query surfaces: classic Event History lookup for the last 90 days of management events, and CloudTrail Lake for advanced Trino-compatible SQL analytics over long-retention event data stores. Ideal for incident forensics, compliance audits, and tracking user or API activity patterns across your AWS account.

🎯 Production Scenarios: Putting It All Together

Scenario 1: 2 AM Production Incident Response

Challenge: An alarm fires for elevated 5xx errors on the payment API. You need to identify root cause and fix it fast.
MCP Servers Used:
  • CloudWatch MCP Server (alarm + log + metric correlation)
  • CloudTrail MCP Server (recent infrastructure changes)
  • IAM MCP Server (verify role permissions)
Conversation Flow:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
You: "Payment API alarm just fired. Investigate."

AI: [Uses CloudWatch MCP get_alarm_history → alarm started 8 minutes ago]
[Uses CloudWatch MCP analyze_log_group on payment-api logs →
spike of 'ConnectionRefused' to internal-billing-service]
[Uses CloudTrail MCP lookup_events for recent changes →
a security group rule was modified 12 minutes ago]
[Uses IAM MCP simulate_principal_policy → confirms the deploying
role had over-broad EC2 permissions]

"Root cause: A security group rule was removed 12 minutes ago by
user 'platform-deploy-role', removing payment-api's outbound access
to internal-billing-service on port 443. The deploying role has
overly broad ec2:* permissions which allowed this change.

Immediate fix: Restore the security group rule.
Follow-up: Tighten platform-deploy-role permissions to scope
security group changes to specific resources."

Scenario 2: Pre-Deployment Cost & Security Review

Challenge: A developer has submitted a Terraform PR adding new infrastructure. Before approving, you want to know cost impact and security posture.
MCP Servers Used:
  • AWS Pricing MCP Server (cost analysis)
  • Well-Architected Security MCP Server (security review)
  • IAM MCP Server (role permission analysis)
Conversation Flow:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
You: "Review the Terraform changes in ./infra/payments-v2/.
Tell me cost impact and security risks."


AI: [Uses Pricing MCP to scan Terraform → identifies 4 new RDS instances,
2 new ALBs, 1 ElastiCache cluster]
[Calculates monthly cost across us-east-1 and us-west-2]
[Uses Well-Architected Security MCP to review IAM roles being created]
[Uses IAM MCP simulate_principal_policy on new role definitions]

"Cost impact: ~$3,400/month additional in us-east-1
(~$3,600/month in us-west-2 — current region is cheaper).

Security findings:
✗ RDS instances missing encryption-at-rest configuration
✗ New IAM role 'payments-v2-task-role' has dynamodb:* on '*'
(should be scoped to specific tables)
✓ ALBs configured with HTTPS-only listeners
✓ Security groups properly scoped

Recommend: Add encryption to RDS, scope DynamoDB permissions,
then approve."


Scenario 3: Building an Internal Developer Portal

Challenge: Build an internal developer portal that exposes 8 internal microservices through a single AI-powered interface, with proper access logging.
MCP Servers Used:
  • OpenAPI MCP Server (multi-spec composition for all 8 services)
  • IAM MCP Server (manage developer access)
  • CloudTrail MCP Server (audit access patterns)
  • SNS / SQS MCP Server (event-driven notifications)
Conversation Flow:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
You: "Set up our internal developer portal:
- Expose 8 microservices via their OpenAPI specs
- Create an IAM group 'portal-developers' with appropriate access
- Set up an SNS topic for portal usage events
- Use CloudTrail to audit who's accessing what"

AI: [Configures OpenAPI MCP with multi-spec composition for all 8 services]
[Uses IAM MCP to create the 'portal-developers' group with
simulated permission checks]
[Uses SNS/SQS MCP to create the audit topic with proper tags]
[Sets up CloudTrail Lake query templates for usage analysis]

"Portal foundation ready. All 8 services exposed through one OpenAPI MCP.
portal-developers group created with read access to all services
plus write access to dev/test only. Audit pipeline ready:
SNS topic 'portal-usage-events' will trigger for every developer action,
and CloudTrail Lake queries can show usage patterns."

📊 Quick Reference: Which Server to Use?

Use CaseRecommended Server
Integrate any REST API into your AI assistantOpenAPI MCP Server
IAM user/role/policy managementAWS IAM MCP Server
Geocoding, route optimization, place searchAmazon Location Service MCP Server
Pub/sub and queue infrastructureAmazon SNS / SQS MCP Server
AWS cost estimation and IaC scanningAWS Pricing MCP Server
Metric/log/alarm troubleshootingCloudWatch MCP Server
Security posture monitoringWell-Architected Security MCP Server
Audit log queries and investigationsAWS CloudTrail MCP Server
APM and distributed service healthCloudWatch Application Signals MCP Server
Historical cost analysisAWS Cost Explorer MCP Server
Billing details and budgetsAWS Billing and Cost Management MCP Server

🔧 Recommended Configuration for Operations Teams

A balanced configuration for SRE, DevOps, and platform engineering teams:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
"mcpServers": {
"awslabs.iam-mcp-server": {
"command": "uvx",
"args": ["awslabs.iam-mcp-server@latest", "--readonly"],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"awslabs.cloudwatch-mcp-server": {
"command": "uvx",
"args": ["awslabs.cloudwatch-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-profile",
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"awslabs.cloudtrail-mcp-server": {
"command": "uvx",
"args": ["awslabs.cloudtrail-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-profile",
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"awslabs.aws-pricing-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-pricing-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"well-architected-security-mcp-server": {
"command": "uvx",
"args": [
"--from",
"awslabs.well-architected-security-mcp-server",
"well-architected-security-mcp-server"
],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1",
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"awslabs.amazon-sns-sqs-mcp-server": {
"command": "uvx",
"args": ["awslabs.amazon-sns-sqs-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1"
}
}
}
}
Production note: The IAM MCP Server is configured with --readonly here. Enable write mode only for specific provisioning workflows, and use a separate AWS profile with elevated permissions for those tasks.

Summary

In this fourth part of the AWS MCP Servers series, we covered the operational backbone of AI-assisted AWS workflows:
CategoryServers Covered (Deep Dive)Key Capability
Developer Tools & SupportOpenAPI, IAM, Location ServiceDynamic API integration, identity management, geo services
Integration & MessagingSNS / SQSEvent-driven architecture with tag-based safety
Cost & OperationsPricing, CloudWatch, Well-Architected Security, CloudTrailCost estimation, observability, security posture, audit forensics
A few patterns are worth highlighting:
  • Tag-based safety models (SNS/SQS) and read-only modes (IAM) show how AWS Labs is taking blast-radius control seriously.
  • Task-oriented tools (CloudWatch's troubleshooting workflow, Well-Architected's posture analysis) are more useful than thin API wrappers.
  • Auditability is built in — CloudTrail integration and security context retrieval make these servers compatible with enterprise governance.
These servers don't replace your operations team. They give them a force multiplier — collapsing the time between question and answer, between alert and action.

🎉 That's a Wrap on the Series!

And with that — we've reached the end of our AWS MCP Servers journey.
Across four parts, we've covered the full landscape that keep production running.
If you've followed along all four parts, you now have a working mental model for an entire ecosystem that's quietly reshaping how teams build on AWS. That's not a small thing.
A few parting thoughts:
  • Start small. You don't need 20 MCP servers configured on day one. Pick the two or three that solve your most painful daily friction and build from there.
  • Trust the safety nets. Read-only modes, tag-based protections, and policy simulation aren't just features — they're the difference between AI-assisted operations being a liability and being a superpower.
  • Stay curious. The MCP ecosystem is moving fast. New servers, deeper capabilities, and emerging patterns are landing every month. Keep an eye on awslabs.github.io/mcp .
Thank you — sincerely — for reading along. Whether you read every line or skimmed the parts that mattered to you, your time and attention mean a lot. This series was written for builders like you: people who care enough about their craft to learn the new tools that are reshaping it.
Now go build something great. Happy developing! 🚀

Resources

Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article