Alexa, order Barrios
Provides tools for an Amazon Alexa+ skill to order pickup from Barrios Mexican Cantina by voice, including retrieving the full menu, placing validated orders, and checking order status.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Alexa, order Barriosorder 8oz queso and 4oz guac for pickup"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Alexa, order Barrios
MCP server for the Amazon Build, Ship, Shape hackathon (Alexa+ track): "Alexa, order Barrios" lets a customer order pickup from Barrios Mexican Cantina (Oak Ridge, TN) by voice. The Alexa+ skill calls these tools; this repo is the self-hosted MCP server behind it.
What it does
Six tools:
Tool | What it does |
| Full Barrios menu with prices (in cents) |
| Validates items against the menu, computes the total, persists the order with status |
| Looks up an order by id: items, total, customer, status |
| Remembers a customer's usual order ("my regular"), keyed by phone number |
| Replays the saved regular as a brand-new order ("order the regular") |
| AI dish suggestions via AWS Bedrock ("spicy", "vegetarian") |
Related MCP server: DoorDash over text
AWS integration (Builder mini-challenge)
get_recommendations calls Amazon Bedrock (Claude 3 Haiku) to suggest
dishes from the real menu based on a free-text preference. The Bedrock
client lives in adapters/bedrock_agent.py; core modules never import
boto3. Setup:
.venv/bin/pip install boto3
export AWS_REGION=us-east-2
# credentials via standard AWS chain (env, ~/.aws/credentials, IAM role)Each recommendation returns a real item_id you can pass straight to
place_order.
Menu data is the real menu from barriosoakridge.com (scraped 2026-10-02). Prices are integers (cents). Locked facts: queso 4oz $3.50 / 8oz $7.00 / 16oz $13.00; guac 4oz $4.00 / 8oz $8.00 / 16oz $15.00.
Run locally
cd ~/workspace/latch-hackathon/alexa-order-barrios
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# start the server (stdio transport, for MCP clients)
.venv/bin/python server.pyOrders persist to ./data/orders.db (SQLite). Override with BARRIOS_DB:
BARRIOS_DB=/tmp/test.db .venv/bin/python server.pyTransports
Transport | How | Use for |
|
| MCP Inspector, local clients |
|
| Remote hosting, Alexa+ skill host |
|
| Legacy clients |
Streamable HTTP serves the MCP endpoint at /mcp/ (verified end to end:
initialize, tools/list, tools/call all working over HTTP/SSE).
Test each tool
End-to-end through a real MCP client over stdio:
.venv/bin/python test_client.pyThis asserts the acceptance case: 1x queso 8oz + 1x guac 4oz places an
order totaling $11.00 with status received, and get_order_status
returns it back.
With the MCP Inspector:
npx @modelcontextprotocol/inspector .venv/bin/python server.pyThen call get_menu, place_order, get_order_status from the UI.
Project layout
server.py FastMCP server, the 3 tools
menu.py menu data + lookup (source of truth: barriosoakridge.com)
orders.py SQLite layer (orders table, advance_status demo helper)
adapters/aws_lambda.py AWS boundary - NOT WIRED (see below)
test_client.py stdio end-to-end test
requirements.txt pinnedAWS-later plan
AWS is not funded yet, so this repo is local-first: no AWS SDK imports
anywhere (grep -rniE "boto3|botocore" --include="*.py" . only matches
adapters/ comments). When credits land:
Hosting - run the FastMCP server on Lambda (via Mangum) or ECS/Fargate; register its URL as the Alexa+ skill's MCP endpoint.
Bedrock - conversational layer (intent parsing, "the usual", recommendations) lives skill-side; Bedrock calls go in a new
adapters/bedrock_agent.py, never in core.Persistence - swap SQLite for DynamoDB/RDS via a new
adapters/dynamo_orders.pyimplementing the same function signatures asorders.py, selected byBARRIOS_ORDER_BACKEND.Secrets - Secrets Manager / Lambda env vars, never hardcoded.
See adapters/aws_lambda.py for the full boundary notes.
This server cannot be deployed
Maintenance
Related MCP Connectors
Order food from Cordering white-label restaurants: browse menus, confirm, then place an order.
Pickup orders at Japanese restaurants for AI agents: find stores, read menus, place orders. No auth.
Manage Shipday orders, drivers, driver earnings, reports from your AI assistants.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables any AI agent to discover, query, and order from a restaurant's storefront via MCP tools. It handles menu lookup, modifier validation, and enforces a mandatory confirmation gate before payment, replacing the human-operated phone line.-
- AlicenseNot gradedqualityDmaintenanceEnables ordering DoorDash via Poke over text, with tools for restaurant discovery, cart management, promo application, and order submission requiring explicit user confirmation.MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to check order status by converting natural language questions into tool calls that query a REST order backend.-
- FlicenseNot gradedqualityBmaintenanceEnables voice-driven food ordering by providing tools to search restaurants, browse menus, check item availability, manage carts, calculate optimal coupon discounts, confirm and place orders, and track deliveries. It also supports long-term preference memory and order history for natural, multi-turn conversational commerce.-