Inspiration
I build ERP software for a living: billing, inventory, HR. The most common thing managers do in an ERP is ask simple questions ("what's overdue?", "what's running low?") and then click through many screens to find the answer. A voice assistant is a natural fit, but it is risky if the assistant can change business data on its own. I wanted to build the safe version.
What it does
ERP Voice Agent is an MCP server that lets a voice assistant like Alexa+ talk to a business ERP (invoices, inventory, purchase orders, HR leave).
- Voice-first answers: every tool returns a short spoken summary plus structured data for the screen, so the assistant says little and shows the details.
- Conversation memory: follow-ups like "and who are the top 3 customers for that?" work without repeating context.
- Ask-then-confirm: restocking and leave approval work this way. The planner can only create a draft, and nothing is confirmed until the user says "confirm it". Confirming twice is handled safely. (The direct write tools, such as create_invoice, change data immediately in this version.)
- Supply-chain planner: "restock from the fastest supplier" is handled by an Amazon Bedrock model (Nova Micro) using tool calls. It reads the low-stock items and supplier lead times through ERP tools, picks the fastest supplier and drafts one purchase order. Python guardrails validate SKUs, cap quantities and allow drafts only: the model cannot confirm anything, so confirming is always a human step. The UI shows the live/mock/fallback badge and the tool calls the model made.
- Reusable package: the adapter is extracted as
django-erp-mcp, so any Django app can expose its models as MCP tools.
The Alexa+ experience is simulated with a web chat (browser speech recognition and speech synthesis), which the hackathon rules allow. The MCP server itself is real: Streamable HTTP, spec version 2025-11-25, 25+ tools.
How I built it
Python and Django for the ERP domain (sample data only), the official MCP Python SDK for the server, a Starlette/Uvicorn app for transport, boto3 with the Amazon Bedrock Converse API for the planner, and a single-page web chat as the Alexa+ simulator. I built it with AI-assisted development (Antigravity) driven by my own prompts, and tested everything by hand. 85 automated tests cover the tools, confirmation flow, chat routing and planner modes.
Challenges
- Keeping the AI from changing business data without approval, which led to the draft-and-confirm design.
- Being honest about what is simulated and what is real, so the UI labels the planner mode (live, mock or fallback).
- Making a fresh clone install and run cleanly: I tested from a clean virtual environment and fixed dependency problems.
What I learned
Voice changes API design: responses need a short spoken form and a structured form. Safety belongs in the tool layer, not in the model.
What's next
Real Alexa+ device integration, confirmation or role-based permissions for the direct write tools, and Tamil and Hindi voice support.
Built With
- amazon
- bedrock
- boto3
- django
- javascript
- model-context-protocol
- pytest
- python
- sqlite
- web-speech-api
Log in or sign up for Devpost to join the conversation.