I Promised an iOS App. Kiro CLI and Xcode MCP Built It in Hours.

Published: (February 24, 2026 at 02:54 PM EST)
7 min read
Source: Dev.to

Source: Dev.to

Cover image for I Promised an iOS App. Kiro CLI and Xcode MCP Built It in Hours.

AWS Heroes profile image
Vivek V.

Recap

In my previous blog post I shared a weekend‑vibe coding project: an AI‑powered Costco receipt scanner and price‑match agent. It was completely serverless, built with Amazon Bedrock AgentCore, Nova AI for receipt parsing, and CDK for deployment. Weekly email reports highlighted price‑adjustment opportunities.

My post on LinkedIn got more traction than anything I’d ever shared—more views than all my previous posts combined. The blog was also featured in DEV’s Top 7 posts of the week and earned a Top‑7 badge that now appears on my dev.to profile.

I also promised a native iOS app for the frontend. This is that follow‑up, but the story took an unexpected turn.


10 Years Apart

  • 2016 – I built my first iOS app as a side project while learning Swift (newly released by Apple). I outsourced a complex feature to a developer for about $500. The development cycle took months, but that’s how I learned something new by building it myself. Getting the app approved by Apple was its own ordeal.

  • February 2026 – Apple released Xcode 26.3 with MCP (Model‑Centric Programming) support. I pointed Kiro CLI (using the latest Claude Opus 4.6 model) at Xcode through the MCP bridge and built the entire iOS app in hours.

It’s not a toy or a single‑screen demo – it’s a full four‑tab app with receipt scanning, deal tracking, AI‑powered price‑match analysis (streaming responses), and a settings screen with BYOI (Bring Your Own Infrastructure) configuration.


The Xcode MCP Bridge

Apple’s official documentation explains how to give agentic coding tools access to Xcode. The Kiro (IDE + CLI) setup is just three lines in your MCP config:

{
  "mcpServers": {
    "xcode-tools": {
      "command": "xcrun",
      "args": ["mcpbridge"]
    }
  }
}

Prerequisites: Xcode 26.3 or later. That’s it.

The bridge exposes about 20 MCP tools to the AI agent, e.g.:

ToolWhat it does
BuildProjectIncremental builds (~0.9 s)
XcodeRead / XcodeWrite / XcodeUpdateDirect file operations
XcodeGrepSearch code
GetBuildLogSurface compiler errors
RenderPreviewShow SwiftUI previews
RunSomeTestsExecute test suites

The development loop changes completely. I describe what I want in natural language; the agent writes Swift code, triggers a build through MCP, reads any compiler errors, fixes them, and rebuilds. The whole cycle takes seconds.

Prompt that kicked it off

Build me an iOS app using Amplify SDK for Swift, leverage all the backend APIs we already have. Use the Xcode MCP tools. Make it professional and state of the art. I want to publish it, but I don't want to use my AWS infra. Let the user put their API endpoint into Settings, and everything gets picked up from there. That way whoever deploys the stack can use the app from their own infra. I don't worry about scaling or charging them for tokens by being just an Uber or Airbnb of this thing.

That was the only prompt. Kiro CLI took it from there with a few iterations and refinements to polish the result.


Same Backend, New Frontend

The original post described the full serverless backend:

  • Lambda running FastAPI
  • API Gateway with JWT auth
  • DynamoDB for receipts and deals
  • S3 for PDF storage
  • Bedrock (Nova AI) for parsing and analysis
  • AgentCore Runtime for the weekly agent
  • EventBridge Scheduler (every Friday at 9 pm)
  • SES for email reports

All of that stays exactly the same. The iOS app simply connects to the existing API Gateway endpoint, using the same Cognito authentication and routes.

I initially tried the Amplify library for Swift, but build times jumped to 18 seconds because the SDK pulled in many unnecessary dependencies. I stripped it out, using zero third‑party packages—just URLSession for API calls and direct Cognito REST calls (USER_PASSWORD_AUTH flow). Build time dropped back to 0.9 seconds.


BYOI: Bring Your Own Infrastructure

This is the part that changed my thinking about app distribution.

CostScanner is not a SaaS. I don’t host anything for users, run servers, or store anyone’s data. (Note: I renamed the app to remove “Costco” for trademark and publishing reasons.)

Users deploy their own AWS CDK stack, consisting of three stacks:

  1. Data stack – DynamoDB tables and an S3 bucket.
  2. API stack – Lambda functions, API Gateway, and Cognito user pool.
  3. AgentCore stack – The weekly Bedrock agent and EventBridge scheduler.

The iOS app only needs the API Gateway endpoint (and Cognito pool ID) that the user supplies in the Settings screen. Because the app contains no hard‑coded AWS resources, anyone can spin up the backend in their own account and publish the same binary to the App Store (or distribute it privately).


Takeaways

  • MCP + LLM can turn natural‑language prompts into production‑ready iOS code in minutes.
  • Zero‑dependency networking keeps build times sub‑second, which is crucial when the AI iterates rapidly.
  • BYOI lets you ship a “serverless” product without ever owning the servers—users own the infra, you own the code.

If you’re curious to try the bridge yourself, the Kiro CLI repo and a minimal Xcode 26.3 project are linked in the comments. Happy coding!

Deployment

cd infra && npm install
NOTIFY_EMAIL=you@example.com ./deploy.sh

Then paste the API Gateway URL into the app’s Settings screen. The app calls a /api/config endpoint, fetches the Cognito pool details and credentials from Secrets Manager, signs in programmatically, and starts working.

  • No sign‑in screen.
  • No account/user‑creation flow.
  • No “forgot password” emails.

The infrastructure is the account/user. I would love to see a “sign‑in with AWS” or “Builder ID” API from Amazon for the login flows!

The privacy policy literally says “we collect nothing.” Because we don’t. Every receipt, every deal, every AI‑analysis result lives in the user’s own AWS account. They can run cdk destroy and everything disappears.

Scaling

Nothing to worry about. Unlike Airbnb or Uber, I don’t provision capacity for peak load, manage database connections, or handle multi‑tenant data isolation. Each user’s infrastructure scales independently through AWS serverless services. If one user uploads 500 receipts, that’s their Tokens, Lambda, and DynamoDB handling it.


The Numbers

  • 15 Swift files
  • 0 third‑party dependencies
  • 0.9 s incremental builds
  • 3 CDK stacks
  • Under $1 per month AWS cost per user
  • Bedrock Nova tokens: $0.10‑$0.20 per week
  • Lambda, DynamoDB, API Gateway, S3: free tier for personal use

What I Learned

The original backend and web app were built in hours with Kiro CLI. The iOS frontend? Even faster, thanks to the MCP bridge. The difference isn’t just speed—it’s the feedback loop.

With the MCP bridge, the AI agent doesn’t just write code; it builds it, reads the errors, and fixes them. I’m not copying compiler output into a chat window. The agent sees what Xcode sees: it knows when the build succeeds, when a type doesn’t conform to a protocol, and it fixes the issue automatically.

The BYOI (Bring‑Your‑Own‑Infrastructure) model is something I want to explore more. For personal tools and utilities, the SaaS model adds complexity that nobody asked for—user management, billing, support, scaling, compliance. BYOI sidesteps all of that. The user owns their stack. You ship the app and the CDK templates. Done.

Ten years between my first iOS app and this one. Back then I paid $500 to outsource functionality and spent months shipping it. This time I used Kiro Pro at $20/month, connected through IAM Identity Center (IdC) login to seamlessly use my AWS credits (thanks to the AWS Heroes program). The whole iOS app was done in hours.

In ten years, almost everything about building software feels completely different. The tools have evolved, the cost of building has dropped dramatically, and even how software reaches users feels different now.

But the hot‑dog combo is still $1.50 and the rotisserie chicken is still $7.99 (in Canada). Now I scan my receipt before I leave the Costco parking lot!


❤️ Built with Kiro CLI, Amazon Bedrock, AWS CDK, and Apple’s Xcode MCP bridge.

🔗 Full source code: github.com/awsdataarchitect/costco-price-match

📱 Download CostScanner: App Store

What are you going to build with Kiro CLI and Xcode MCP bridge? Let me know in the comments.

0 views
Back to Blog

Related posts

Read more »