MCP Infrastructure Layer
Your AI coding assistant
finally knows your infra.
Infrawise gives Claude Code and Cursor a real-time, deterministic map of your AWS services, databases, and IaC — so they stop writing code that assumes wrong indexes, missing queues, and stale schemas.
Demo
Ask about your infra. Claude already knows.

The Problem
AI writes wrong code.
Infrawise is the fix.
"New software developers don't write wrong code. Claude Code writes wrong code and they ship it."
# AI writes from assumptions
response = table.query(
FilterExpression=Attr('userId').eq(user_id)
)
# ❌ Full table scan — GSI doesn't exist# AI knows your actual schema
response = table.query(
IndexName='userId-createdAt-index',
KeyConditionExpression=Key('userId').eq(user_id)
)
# ✅ Uses real GSI from suggest_gsiWhere It Helps
The bugs that only appear at runtime.
AI hallucinates queue types, event shapes, and filter policies. Infrawise gives it your actual infrastructure so it stops guessing.
Wrong Lambda event shape
AI guesses the handler signature. SQS, S3, and EventBridge all use different shapes — getting it wrong means silent undefined at runtime.
# AI guesses the payload structure
def handler(event, context):
body = json.loads(event["body"])
process(body["orderId"])
# ❌ SQS wraps in Records — event["body"] is None
# analyze_function returns the exact event shape
def handler(event, context):
body = json.loads(event["Records"][0]["body"])
process(body["orderId"])
# ✅ Correct shape — no silent failures
FIFO queue missing MessageGroupId
AI writes a standard SendMessage call without checking if the queue is FIFO. FIFO queues require MessageGroupId — omitting it throws a runtime error.
# AI writes a standard SendMessage call
sqs.send_message(
QueueUrl=queue_url,
MessageBody=json.dumps(order),
)
# ❌ FIFO queue — InvalidParameterValue at runtime
# get_queue_details shows isFifo: true
sqs.send_message(
QueueUrl=queue_url,
MessageBody=json.dumps(order),
MessageGroupId=order["customerId"],
)
# ✅ Required field included — no runtime error
SNS message silently dropped
A subscription has a filter policy requiring specific message attributes. Missing one drops the message with no error, no retry, and no DLQ entry.
# AI publishes without checking filter policies
sns.publish(
TopicArn=topic_arn,
Message=json.dumps(payload),
)
# ❌ "eventType" required — subscription drops it silently
# get_topic_details reveals requiredAttributes
sns.publish(
TopicArn=topic_arn,
Message=json.dumps(payload),
MessageAttributes={
"eventType": {"DataType": "String",
"StringValue": "order.created"},
},
)
# ✅ All required attributes present — delivered
Quick Start
Up and running in 60 seconds.
$ npm install -g infrawise
$ infrawise start --claude
✔ Scanning AWS services…
✔ Scanning databases…
✔ Scanning IaC files…
✔ Running 36 analyzers…
✔ 21 MCP tools ready
✔ .mcp.json written
✔ Open Claude Code in this directory
12 findings — 3 high, 6 medium, 3 lowHow It Works
Five steps. One command.
Reads AWS services, databases, and IaC files statically — no agents, no polling.
Constructs a typed graph of every node and edge: tables, queues, lambdas, topics, buckets.
Rule-based analyzers flag missing indexes, absent DLQs, default Lambda memory, and more.
Exposes the graph and findings as 21 MCP tools your editor can query during generation.
Right GSI name, right event shape, right DLQ config — grounded in your actual infrastructure.
Works With Your Editor
Drop-in for every AI coding tool.
Standard MCP protocol. No plugins, no extensions, no lock-in.
Claude Code reads .mcp.json automatically — just run infrawise start and open your editor.
Architecture
How Infrawise connects to your tools.
Writing
From the blog
Practical guides on AWS, serverless patterns, and AI-assisted infrastructure from the team behind Infrawise.
Fix N+1 Trigger Patterns Where Lambda Functions Hammer the Same DynamoDB Partition Key
You add a sixth Lambda trigger to your OrderEvents table, deploy it, and within 20 minutes your SLA breaches. Here's how to detect and fix N+1 trigger patterns before they hit production.
Read article →Give Your AI Assistant Infrastructure Eyes Before It Writes Another Query
You asked Claude Code to add pagination to your order history endpoint. It generated a clean function — for a GSI that doesn't exist. Here's how to fix that.
Read article →How I gave Claude Code eyes on my infrastructure — and stopped flying blind
As a full-stack developer, I write the code. But I don't always know what happens after it deploys. Is my Lambda running out of memory? Is that SQS queue dropping messages silently?
Read article →AI Generated a DynamoDB Query That Could Never Work
I asked an AI coding assistant to generate a DynamoDB query. A few seconds later it confidently gave me code querying a GSI that didn't exist. Here's what went wrong and how to prevent it.
Read article →Ready to go deeper?
Full configuration reference, all CLI flags, and all 21 MCP tools documented with inputs, return shapes, and usage patterns.
View full docs →