index01-mcp-alexa
Allows sending text commands to Amazon Alexa/Echo devices to perform actions such as setting alarms and timers, and listing available Echo devices.
Click on "Install 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., "@index01-mcp-alexaTell Alexa to set a timer for 10 minutes"
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.
Pebble Index 01 → Alexa bridge
Say "Tell Alexa to set an alarm for 5 minutes" into the ring, and your Echo sets the alarm.
How the pieces fit
Index 01 ring ──BLE──▶ Pebble app (transcribes) ──▶ Pebble cloud agent (LLM)
│ MCP tool call: tell_alexa("set an alarm for 5 minutes")
▼
cloudflared tunnel ──▶ this server (server.py, Streamable HTTP MCP)
│ Alexa "text command" via aioamazondevices
▼
your Echo (as if you had spoken it)Why this shape:
Pebble side. The Index 01 supports "bring your own MCP server", but only cloud-hosted servers over Streamable HTTP or SSE, and only
Authorization-header auth (no OAuth). Custom MCP tools run in the double-click "MCP Sandbox" with the cloud agent; single click stays the offline note-taker.Alexa side. Amazon has no public "send a voice command" API. The workable route is the same unofficial endpoint Home Assistant's Alexa Devices integration uses (
send_text_command), via theaioamazondeviceslibrary. Its own test script uses it to set a timer, so alarms/timers are the canonical case.
Related MCP server: MCP OpenClaw
Setup
1. Amazon prerequisite: app-based 2FA
The library logs in with email + password + a TOTP code. Your Amazon account must have an authenticator app (Google Authenticator, Authy, 1Password...) as its 2FA method. SMS-only 2FA does not work.
2. Install and log in once
cp .env.example .env
# fill in AMAZON_EMAIL, AMAZON_PASSWORD, and MCP_BEARER_TOKEN (openssl rand -hex 32)
uv sync
uv run alexa_login.py # asks for your 6-digit authenticator codeIt saves data/login_data.json and prints your Echo devices. Put the one you want (e.g. Kitchen Echo)
in ALEXA_DEFAULT_DEVICE in .env.
3. Run the server
uv run server.py # listens on 127.0.0.1:8765Quick sanity check:
curl -s localhost:8765/healthz
curl -s -X POST localhost:8765/mcp \
-H "Authorization: Bearer $MCP_BEARER_TOKEN" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'4. Expose it publicly with cloudflared
For a quick test (URL changes each run):
cloudflared tunnel --url http://localhost:8765For something permanent, make a named tunnel on a hostname you own, e.g. alexa.example.com:
cloudflared tunnel login
cloudflared tunnel create alexa-bridge
cloudflared tunnel route dns alexa-bridge alexa.example.com
cat > ~/.cloudflared/config.yml <<EOF
tunnel: alexa-bridge
credentials-file: $HOME/.cloudflared/<TUNNEL-UUID>.json
ingress:
- hostname: alexa.example.com
service: http://localhost:8765
- service: http_status:404
EOF
cloudflared tunnel run alexa-bridgesystemd/ has user units to keep both the server and the tunnel running.
5. Add it to the Pebble app
In the Pebble app, Index tab → MCP & Tool Settings:
Create a sandbox group. Model: Default (bump to High Capability only if it picks tools unreliably).
MCP Servers tab → add server:
Name:
alexaURL:
https://<your-public-host>/mcp(or/alexa/mcpwhen served under theBASE_PATHprefix; see DEPLOY.md for our setup)Type: Streamable
Authorization:
Bearer <your MCP_BEARER_TOKEN>— the wordBeareris requiredGroup: the sandbox group from step 1
Index settings → "Double click and hold" → assign that sandbox group.
Now: double-click-and-hold the ring, say "Tell Alexa to set an alarm for 5 minutes", release.
The cloud agent calls tell_alexa, and you get a phone notification with the tool result.
Gotcha from the community: the app caches the tool list for ~30 s after a config change. If tools don't show up, toggle the transport SSE → Streamable to force a refetch.
Tools exposed
Tool | What it does |
| Strips "tell Alexa to", lowercases, sends as a text command to the named or default Echo |
| Lists Echo devices and online state (handy for picking |
Caveats
Unofficial Amazon API. It is the same one Home Assistant's core Alexa Devices integration relies on, so it is well exercised, but Amazon can change it. If calls start failing with auth errors, rerun
alexa_login.py.Cloud dependency. Custom MCP tools only run through Pebble's cloud agent, so the transcript of the double-click request leaves your phone. Single-click notes still stay local.
Alarms land on the Echo, not on the ring or phone. That is the point here, but the "device" argument lets you aim at a different Echo ("...on the bedroom echo").
Amazon Japan uses a different login flow and is not supported by the library.
Alternatives considered
Home Assistant as the gateway. If you already run HA, its Alexa Devices integration plus the MCP Server integration could replace this repo: expose an HA script that calls
alexa_devices.send_text_commandto Assist, and point Pebble athttps://<ha>/api/mcp/assistwith a long-lived access token. More moving parts if you don't already have HA.Alexa Routine triggered by a virtual sensor. Routines can run a "custom" command as an action, but the text is fixed at routine-creation time, so "5 minutes" can't be dynamic. Dead end for this use case.
Alexa Voice Service. Would create alarms on a virtual device, not your Echo.
Pebble webhook instead of MCP. The Index can POST the raw transcription to a URL. That would work too, but you'd have to parse "tell alexa to ..." yourself and it fires for every recording on that button. MCP lets the agent decide when Alexa is meant.
License
MIT, see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give your AI agent a memory and body on your iPhone: set alarms, ring your phone, over MCP.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server for managing alarms and todo lists with support for natural language time parsing and persistent data storage. It enables AI assistants to set reminders, track tasks, and provide active notifications for upcoming events.82
- AlicenseBqualityDmaintenanceAn MCP server that integrates with the OpenClaw API to enable AI assistants to send messages across multiple platforms, execute system commands, and manage calendar events and emails.51MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables users to manage their Amazon Alexa shopping lists directly from MCP clients like Claude. It provides tools for listing, adding, updating, and deleting shopping list items through secure Amazon account authentication.7MIT
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server that enables AI assistants to discover, commission, and control Matter-compatible smart home devices through a standardized interface.218MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/awwaiid/index01-mcp-alexa'
If you have feedback or need assistance with the MCP directory API, please join our Discord server