Alexa Language Bridge
Extends Alexa+ to allow non-English-speaking household members to use the device directly, translating and rendering household data (lists, reminders, messages, devices) in each member's language and script.
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 Language Bridgeadd milk to the shopping list in Bengali"
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 Language Bridge
An Alexa+ MCP add-on that gives a household member who does not speak English the run of the house.
Not a translator. Ma adds rice to the shopping list in Bangla and her son reads it in English. She ticks off the milk he added. She sets him a reminder, turns off the kitchen light, leaves him a message that arrives in his language when he next asks. The device stops being an English appliance the family operates on her behalf and becomes one she uses herself.
Nothing in the house is stored in English and translated for her. Everything is stored as spoken, and rendered for whoever is asking.
Script is part of who a person is, not something to guess per message. Plenty of
people speak Bangla or Hindi and read it in Latin letters — bati, not বাতি. Get
that wrong and the reply is one they cannot read, or match against what they said.
Status: early development. Built for the Build, Ship, Shape: Amazon Developer Hackathon (Alexa+ track), submission window 31 Aug – 23 Oct 2026.
How it works
Piece | What it does |
MCP server | Streamable HTTP, MCP spec |
Auth | OAuth 2.1 authorization code + PKCE (S256) |
Language layer | Renders any stored utterance into the asker's language, cached |
State | Members, languages, lists, reminders, devices and messages, across sessions |
Surface | MCP App card showing both languages side by side |
Related MCP server: langlearn-tts
Setup
Requires Node 24 or newer. No cloud account is needed to run or test this — the default language provider runs offline.
git clone https://github.com/kishormorol/alexa-language-bridge.git
cd alexa-language-bridge
npm install
cp .env.example .env
npm run devThe MCP endpoint is then at http://127.0.0.1:3000/mcp, with a liveness probe at
/healthz.
npm test # unit tests plus an end-to-end MCP client/server round trip
npm run build # compile to dist/
npm start # run the compiled serverThe simulator
The hackathon rules accept a simulated Alexa+ experience, and the real MCP Toolkit is gated behind Amazon onboarding this project does not have (FL-003). So the demo surface is our own host:
npm run sim # then open http://localhost:4000One command boots the MCP server with OAuth enforced, walks the full authorization code + PKCE flow as a real client would, connects over Streamable HTTP, and serves a screen. Pick who is speaking, say something, watch the tool call and the card.
It is a genuine MCP host — it authenticates properly, reads tools/list, honours the
_meta.ui.resourceUri a tool declares, and fetches the ui:// resource to render.
Nothing is stubbed between the UI and the server.
Intent routing stands in for what Alexa+ would do. ROUTER=rules is deterministic
and offline; a Bedrock-backed router replaces it once model access lands.
Authentication
OAuth 2.1 authorization code with PKCE (S256), enforced by default.
Unauthenticated |
|
Authorization server metadata |
|
Protected resource metadata |
|
Client registration | Dynamic (RFC 7591) at |
Resource indicators | RFC 8707 — |
Authorization codes are single-use and expire in 60 seconds; access tokens last an
hour and carry the resource they were issued for. There is no consent screen —
authorize approves immediately, which is the one piece a real deployment would
replace.
Set AUTH_ENABLED=false for local iteration only.
Tools
People
Tool | What it does |
| Record a person, the language they speak, and the script they write it in |
| Who is in the household, and in what language |
Getting things done
Tool | What it does |
| Add to a shared list, in your own words |
| Read the list back in the asker's language |
| Tick off an item, matched in any language it is held in |
| Set a reminder for yourself or someone else |
| What is waiting, in your own language |
| Name something controllable, in your own words |
| Turn it on or off, by whatever you call it |
Talking to each other
Tool | What it does |
| Store a spoken message, delivered in the recipient's language |
| Read back waiting messages in the reader's own language |
| Carry a live utterance from one person's language to another's |
The card
interpret_for_household and read_list carry an MCP Apps UI: a ui:// resource
served as text/html;profile=mcp-app, showing what was said and what the other
person hears side by side, never one translated into the other.
The official @modelcontextprotocol/ext-apps package targets the v2 SDK line and
zod 4, which is incompatible with the 1.x line where the Streamable HTTP transport
lives — so the contract is implemented directly. See FL-005.
Language provider
Two implementations behind one interface:
| Behaviour |
| Offline. Does not translate — prefixes text with the target tag, so a wrong-language rendering is obvious rather than silently plausible. |
| Claude on Amazon Bedrock via the Mantle client. Frozen, cached system prompt and |
Switching is one environment variable; nothing outside src/lang/ changes.
LANGUAGE_PROVIDER=bedrock AWS_PROFILE=alexa-hackathon npm run simA content-addressed cache sits in front of whichever provider is active. A household repeats itself — the same groceries, the same reminders — so most turns never reach the model. Identical concurrent misses share one in-flight call, and a cache hit does no disk write, because that is the hot path of a 500 ms budget.
npm run bench # cold vs warm round-trip latency
PREWARM=true npm run sim # warm the common phrases at startupp50 | |
A phrase the household has said before | ~5 ms |
A phrase nobody has said before | ~650 ms |
The 500 ms budget is met for repeats and missed for novel utterances. Pre-warming covers the phrases a kitchen actually repeats; it cannot cover every sentence, and the numbers above say so rather than quoting the flattering one.
Server overhead measured at 1–3 ms per tool round trip, so effectively the whole budget is available to the model. Deployment notes: docs/deployment.md.
Repository layout
src/ MCP server, tools, auth, MCP App UI
docs/ design notes and decisions
PLAN.md build plan and milestones
FRICTION.md running friction log
PRODUCT-FEEDBACK.md submission feedback answersLicense
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
One user-owned memory shared across AI assistants: recall, spaces, and confirmed references.
- EngramOAuthapp.getengram
Persistent, verbatim, searchable memory for AI assistants — one memory across every MCP client.
Pronunciation scoring, speech-to-text, and text-to-speech for language learning
Speech, transcription, voice agents, Trace, Recap, dubbing and narration with browser OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Amazon services through AI assistants, allowing users to search products, manage their cart, view order history, and place orders using natural language.6 npmMIT
- AlicenseAqualityAmaintenanceEnables Claude to speak in 70+ languages, including pronunciation, audio flashcards, and full language lessons with tutor personas.41MIT
- AlicenseNot gradedqualityCmaintenanceEnables voice-first shared object memory for Alexa+, letting users record where items were last reported, retrieve authorized locations, correct stale records, check shared items in and out, run guided Lost Mode searches, and manage privacy-aware access.MIT
- AlicenseAqualityBmaintenanceEnables voice-first shared household expense tracking through Alexa+, letting flatmates record purchases, check balances, and settle debts in the fewest payments.8MIT