AWS's Kiro IDE connected to the Redshift MCP server lets anyone ask a data warehouse a question in plain English and get SQL-backed results. The setup guide — install uv, configure the MCP JSON, attach an IAM policy — takes about 20 minutes. What the guide doesn't cover is the three-week governance layer that determines whether your ops lead gets trustworthy answers or plausible-looking numbers built on a misplaced JOIN. We've deployed this setup for D2C analytics teams. The technical setup is the easy part.
TL;DR: Kiro + Redshift MCP is real and it works — your merchandising lead can ask "what was our return rate on SKU X last quarter?" and get a SQL-backed answer. The part that makes those answers trustworthy is the steering file and IAM scope, not the MCP connection. If you're scoping this for a D2C analytics setup, book a 30-min call with Dev — no SDR layer, written brief inside a week.
What Kiro + Redshift MCP Actually Does
Kiro is AWS's AI-native IDE and CLI. The Redshift MCP server is an open-source connector that bridges Kiro to your Redshift clusters via the Model Context Protocol — the same standard that connects AI agents to external data sources across the broader tool ecosystem.
Once connected, Kiro can discover your provisioned clusters and serverless workgroups automatically, browse databases, schemas, and table metadata, translate a plain-English question into SQL, execute that SQL through the Redshift Data API, and return the result — all without the user touching a query editor or knowing a cluster endpoint. The MCP server runs locally; your data stays in your AWS account and doesn't pass through any third-party service.
The read-only safety layer works as advertised for queries routed through the MCP server's execute_query tool. Every statement is wrapped in a read-only transaction. For a D2C analytics warehouse — orders, inventory, returns, customer attributes — that's the right default. You're not writing back to Redshift from an analyst session.
The question isn't whether the tool works. It does. The question is what needs to be true about your Redshift schema, your IAM configuration, and your steering file before you hand a non-technical team member a plain-English interface to your production data warehouse.
The IAM Back Door the Setup Guide Mentions Once
The AWS documentation includes this caveat in a small section near the end: Kiro has shell access. If the IAM credentials attached to the Kiro session have write permissions, a direct CLI call — aws redshift-data execute-statement — bypasses the MCP server's read-only guard entirely. The MCP server's transaction wrapper doesn't apply to commands issued outside it.
Most D2C data teams that set this up will attach their own AWS developer credentials, which typically have broad permissions accumulated over time. That's not a Kiro problem — it's a permissions architecture problem that Kiro's documentation is right to call out, even if it buries the warning.
The fix is IAM least privilege, scoped specifically to the Kiro + Redshift integration. The policy needs exactly six action types: redshift:DescribeClusters, redshift:GetClusterCredentialsWithIAM, redshift-serverless:ListWorkgroups, redshift-serverless:GetWorkgroup, redshift-data:ExecuteStatement, and redshift-data:GetStatementResult. Nothing broader. With that scope, even if a query exits the MCP server's tool layer, the underlying credentials can't write data. IAM is the real defense; read-only mode is the backup.
We create a dedicated IAM identity for the Kiro session — not the data engineer's personal credentials — with this exact policy and nothing else attached. That identity has no console access, no EC2 permissions, no S3 write. It exists only for the Kiro + Redshift MCP connection.
Writing the Steering File That Makes NLQ Safe
Kiro's steering files are Markdown documents in .kiro/steering/ that provide persistent context to the AI agent. For a developer workflow, they typically describe coding conventions. For a D2C analytics rollout, they're a data governance artifact — the document that tells Kiro how your schema actually works, which conventions exist, and what not to touch.
A steering file that works for a D2C Redshift analytics setup has six components:
1. Cluster Registry
Map every cluster name to its environment and default database. "analytics-prod" = production, database "analytics_db". "analytics-staging" = staging, database "staging_db". Never query these interchangeably; Kiro needs to know which is which before it picks a cluster for a revenue query.
2. Schema Map
Plain-English descriptions for every analytics schema. Not the technical definition — the business definition. "The orders schema contains confirmed customer orders and line items. It does not contain abandoned carts or returns — those are in returns." This prevents Kiro from querying the wrong schema for a revenue question and producing a number that's technically SQL-correct but answers the wrong question.
3. Soft-Delete Conventions
This is the most common source of silent errors in AI-generated SQL. If your orders table uses is_active = false for cancelled orders and your returns table uses deleted_at IS NOT NULL for voided returns, Kiro needs to know both conventions explicitly — not infer them from column names. Every WHERE clause that touches a table with soft-delete logic should filter on the right condition. Without this in the steering file, AI-generated queries include deleted records in aggregates and the result looks plausible but is wrong.
4. Timestamp and Timezone Handling
D2C Redshift warehouses almost always store timestamps in UTC. Operations and merchandising teams think in US/Eastern or US/Pacific. The steering file should document the storage timezone, the CONVERT_TIMEZONE pattern to use for local reporting, and which columns are timestamps vs. dates. One wrong assumption here produces a revenue number that's off by an entire day at month boundaries.
5. Join Direction Rules
For revenue and order-level queries, there's a correct join direction. Orders are always the anchor — LEFT JOIN orders to customers, not the reverse. If you join customers LEFT to orders, you include customers with no orders in the result set and any SUM of order amounts silently returns wrong totals. Document the canonical join direction for each query type that involves multiple tables.
6. Excluded Tables
List every table that isn't analytics-ready: staging tables, raw event streams, internal audit logs, ETL intermediary tables. Kiro's schema discovery is thorough — it will find these tables and use them if the question is ambiguous enough to make them seem relevant. Explicitly excluding them in the steering file prevents a "show me today's orders" query from accidentally pulling from a staging table that has stale or duplicate data.
The steering file is where most D2C Redshift rollouts stall.
Writing it requires someone who knows both the AWS infrastructure and the analytics schema conventions — usually two different people. We handle both sides on AWS infrastructure engagements. If you want our D2C steering file template and a scoping call, grab 30 minutes with Dev. Written brief inside a week.
What This Looked Like for a Real D2C Analytics Team
A $22M home goods brand we work with had a two-person data team fielding 18–20 analytics tickets per week from ops, merchandising, and finance. Most tickets were simple: "what was our return rate on SKU X last quarter?", "which warehouse fulfilled the most orders in May?", "show me repeat purchase rate by acquisition channel." The data team answered them in SQL but the queue meant a 2–3 day wait for every question.
We connected Kiro to their Redshift analytics cluster, scoped a dedicated IAM identity to read-only actions, and spent week one drafting and validating the steering file across their four core schemas: orders, inventory, returns, and customers. Week two was supervised use — the ops lead ran 15 questions she already knew the answers to, we reviewed the generated SQL for each one and caught two join-direction issues and one missing soft-delete filter that would have produced wrong numbers silently.
By week three the ops lead was self-serving on recurring queries. Three weeks after that, the merchandising lead joined. The data team ticket queue dropped from 18 per week to 4 — the remaining four are genuinely complex queries requiring cohort logic or multi-touch attribution that still need a human analyst. Monthly auth to the Kiro session costs less than one hour of data team time at their billing rate.
Before you take on a similar setup, read our post on what makes AI SQL agents actually useful — if your D2C data still lives across six tools and two spreadsheets, Kiro connecting to Redshift will surface clean SQL on dirty data, and that's harder to spot than a bad query. Consolidation comes before NLQ. Once you have that foundation, the natural language query patterns for Odoo reports post shows how this translates to your ERP layer alongside the analytics warehouse.
Who Should Actually Have Kiro Access in a D2C Org
Not everyone who wants data access should have Kiro + Redshift access. We use a three-tier model for D2C orgs:
- Tier 1 — Data team: Full Kiro access with the least-privilege IAM identity. These users understand SQL well enough to spot a wrong result before acting on it. They also maintain the steering file.
- Tier 2 — Ops and merchandising leads: Kiro access with the steering file in place, after the supervised validation week. These users run recurring queries — return rates, fulfillment performance, replenishment signals — where the query patterns are well-understood and the steering file has been validated against those patterns specifically.
- Tier 3 — Finance and executive: Not Kiro access — a curated dashboard built from validated queries. AI-generated SQL for one-off executive questions has a higher rate of plausible-but-wrong results than it does for ops queries, because the questions are often more nuanced ("show me contribution margin by channel for orders placed in Q1 but returned in Q2"). Those queries need a data team member in the loop.
Frequently Asked Questions
Is Kiro's read-only mode enough to safely give a non-technical team member access to Redshift?
Not by itself. The Redshift MCP server wraps every query in a read-only transaction, but Kiro also has shell access. If the IAM credentials attached to the Kiro session have write permissions, a direct CLI call — aws redshift-data execute-statement — bypasses the MCP server's guard entirely. IAM least privilege is the real defense: scope the credentials to exactly DescribeClusters, GetClusterCredentials, redshift-data:ExecuteStatement, DescribeStatement, and GetStatementResult — nothing broader. With that scope, even direct CLI calls cannot write data.
What goes into a Redshift steering file for a D2C analytics setup?
A useful D2C steering file has six components: cluster registry mapping cluster names to environments and databases; schema map with business-level descriptions of each schema's purpose; soft-delete conventions documenting which tables use is_active, is_deleted, or deleted_at and how to filter them; date and timezone handling noting all timestamps are UTC and the CONVERT_TIMEZONE pattern for local reporting; join direction rules specifying which table is always the anchor in multi-table revenue queries; and a list of excluded tables such as staging tables, raw event streams, and audit logs that aren't analytics-ready. Without the soft-delete conventions and join direction rules, AI-generated SQL silently includes deleted records and produces wrong aggregates.
How long before a non-technical ops lead can reliably self-serve with Kiro + Redshift?
From our rollouts: about three weeks from the point where Kiro is connected and the steering file is drafted. Week one is writing and validating the steering file — every schema convention confirmed against the actual schema. Week two is supervised use: the ops lead runs 10 to 15 questions they already know the answers to, and a data team member reviews the generated SQL and results for each one. Week three is semi-supervised use with a daily check-in. After that, the ops lead typically handles 70 to 80 percent of their recurring queries independently. The remaining 20 to 30 percent — cohort analysis, multi-touch attribution, custom segmentation — still need a data team hand.
About the author
AWS Practice Lead, Braincuber Technologies
Owns AWS architecture and cloud cost optimization at Braincuber. Designs production workloads on Bedrock, SageMaker, Lambda, and EC2 for US clients — averaging $4,200/month in cost savings on right-sizing audits.

