DocDesk
Serves as an Alexa+ skill/add-on: exposes the brand's help centre through an MCP server so Alexa+ can answer customer questions aloud from cited help articles, render guided in-app walkthroughs on the answer card, open and track support tickets, and deliver follow-up answers when tickets are resolved. Also supports running the accompanying Strands host on Amazon Bedrock.
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., "@DocDeskHow do I change my Wi-Fi password?"
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.
DocDesk: a help-centre add-on for Alexa+
DocDesk lets any brand put its help centre inside Alexa+. Customers ask a question out loud and get a short spoken answer taken only from the brand's own help articles, with the exact source section shown on screen. When the answer involves the brand's app, DocDesk does not just read out directions: it shows the app screen, puts a glow on exactly where to tap, and talks the customer through it one step at a time. When the help centre does not cover the question, DocDesk opens a support ticket instead of guessing, remembers it for that customer, and tells them the answer the next time they talk to Alexa.
Built for the Alexa+ track of Build, Ship, Shape: Amazon Developer Hackathon 2026, with the AWS Builder mini challenge (Strands Agents SDK host, Amazon Bedrock) and the Open Source mini challenge (mcp-lite).
The problem
When a customer is stuck ("my router light is orange", "can I pay with mobile money?"), today they:
dig through a help website on their phone,
wait hours for a support agent, or
ask a chatbot that answers confidently and wrongly.
Brands pay for the same questions to be answered again and again, and nobody can see which questions the help centre fails to answer.
Related MCP server: LiveGraphRAG MCP Server
What DocDesk does
Answers only from the help centre. Every answer cites the section it came from. If no section covers the question, it does not guess.
Shows you where to tap. In-app directions ("open the app, go to Billing, tap Pay now, choose Mobile money") become a guided walkthrough on the answer card: the brand's app screen, a pulsing glow on the place to tap, and Alexa reading each step aloud as the glow moves. Voice-only devices still get the full spoken directions.
Hands off to a human. Unanswered questions become tickets for the support team. Similar follow-ups join the existing ticket instead of opening duplicates.
Remembers each customer across sessions. "Any news on my tickets?" works days later, and each customer only ever sees their own tickets.
Closes the loop by itself. When the support team publishes a new article, DocDesk re-checks every open ticket against it. Tickets the new article answers are resolved automatically, and the customer hears "Good news about ticket 1..." the next time they speak to Alexa, with the walkthrough if the answer has in-app steps.
Shows the brand its doc gaps. A staff-only report groups what customers asked that the docs could not answer, so the team knows which article to write next.
Demo in two minutes
python -m venv .venv
.venv\Scripts\activate # macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
python -m docdesk serveOpen these two pages side by side:
http://127.0.0.1:8765/is the Alexa+ simulator.http://127.0.0.1:8765/consoleis the support-team console.
Then:
As Ada, type "How do I change my Wi-Fi password?". The card shows the Brightline app, the glow moves from the app icon to Wi-Fi to Change password, and each step is read aloud. The source link opens the exact help section.
Click "Can I pay my bill with mobile money?". The help centre does not cover it, so ticket 1 opens.
In the console, click Fill example, then Publish and re-check tickets. The console reports that the article answered ticket 1.
Back as Ada, ask "Any updates on my tickets?". Alexa delivers the good news about ticket 1 and walks her through paying with mobile money, step by step.
Switch to Tunde: he sees none of Ada's tickets. Switch to Brightline team and ask for the doc gaps report; customers get a polite refusal for the same request.
No API key is needed. Without one, DocDesk runs in offline mode: it only answers when one help section clearly covers the question, quoting that section's most relevant sentences. Set ANTHROPIC_API_KEY (see .env.example) and answers come from Claude, still restricted to the retrieved help sections, and the simulator can let Claude pick the tool like a real Alexa+ host.
The demo brand, Brightline Internet, is fictional. Its help centre lives in demo/docs. Run python -m docdesk reset to clear tickets and memory between demo takes.
How it works
Alexa+ host (simulated) DocDesk MCP server (Python, MCP SDK 2.3)
┌──────────────────────────┐ Streamable HTTP ┌─────────────────────────────────────┐
│ web simulator │ POST /mcp │ tools │
│ - host brain: rules or │ ──────────────────► │ ask_support (MCP App card) │
│ Claude picks a tool │ initialize │ my_support_tickets (MCP App card) │
│ - mcp-lite client │ tools/list │ add_ticket_details │
│ - MCP Apps host renders │ tools/call │ close_ticket │
│ ui://docdesk/card │ resources/read │ support_gaps_report (staff only) │
└──────────────────────────┘ │ │
┌──────────────────────────┐ │ answerer: Claude or offline │
│ Strands Agents host │ ──────────────────► │ SQLite: FTS5 docs index, tickets, │
│ Bedrock / Anthropic / │ │ per-customer memory, question log │
│ direct tool calls │ └──────────────┬──────────────────────┘
└──────────────────────────┘ │ REST (staff token)
support console: tickets, replies,
publish article, doc gaps, resetMCP surface
Item | Value |
Endpoint |
|
Protocol |
|
Tools |
|
MCP Apps |
|
Results | Spoken text in |
Screen vs voice | If the client negotiated MCP Apps, in-app directions are spoken as a short intro and shown as a guided walkthrough; otherwise the full directions are spoken |
Customer identity |
|
Staff identity |
|
Guided walkthroughs
The brand describes its app once in an app map (demo/app-map.json): its screens, the buttons and rows on each, and which screen each one opens. When an answer contains in-app directions, docdesk/guide.py turns each instruction into a step that points at a real element on a real screen, and adds "Open the app" first when needed. Steps are built only from the cited answer's own words, so the walkthrough never shows a step the help centre did not state. Notes that follow the directions ("every device has to rejoin") are read after the last step.
The card draws the app screen, puts a pulsing glow and a tap ripple on the target, and plays the steps. For each step it sends the host a docdesk/speak request and moves on when the host has finished speaking, so the glow and the voice stay in sync. The host starts playback with a docdesk/notifications/guide-start notification after reading the intro. Back, Next and Replay buttons work without speech, and the glow has a still version for reduced motion.
Rules that keep it trustworthy
The model only sees the retrieved help sections and is told to mark anything else not answerable. An answer without a valid citation is never spoken; it becomes a ticket.
Account-specific questions ("why is my bill higher?") are not answerable from a help centre, so they go to a human.
Customers can only read, add to or close their own tickets. The gaps report needs the staff token.
The voice prompt forbids asking customers to say passwords, PINs, card numbers or one-time codes.
Question text and doc excerpts are treated as untrusted data in the prompt.
Code map
Path | What it is |
| MCP server, tools, MCP App resource, web and staff routes |
| Answering, tickets, automatic re-check, gaps report |
| Tickets and per-customer conversation memory in SQLite |
| Keyless extractive answerer |
| Simulated host brain: rules, or Claude choosing from |
| The MCP App card, including the guided walkthrough |
| Turns in-app directions into steps that point at the brand's app screens |
| The demo brand's app screens and buttons |
| Docs crawler, FTS5 index and cited-answer core, reused from the author's Telegram support bot |
| Simulator, console, |
| Strands Agents SDK host |
| 52 tests, including full MCP sessions against the real Streamable HTTP app |
Strands Agents host (AWS Builder)
hosts/strands/host.py is a second host, built on the Strands Agents SDK. It connects to DocDesk as an MCP client over Streamable HTTP, loads the tools, and handles one utterance:
With AWS credentials, a Strands agent on Amazon Bedrock (default
us.amazon.nova-pro-v1:0) decides which DocDesk tool to call.With only
ANTHROPIC_API_KEY, the same agent runs on Claude.With neither, it routes with DocDesk's offline rules and calls the MCP tool directly through Strands (
agent.tool.ask_support(...)).
Strands pins an older MCP SDK, so it gets its own environment:
python -m venv .venv-strands
.venv-strands\Scripts\pip install -r hosts/strands/requirements.txt
.venv-strands\Scripts\python hosts/strands/host.py --customer ada "Alexa, ask Brightline how do I change my Wi-Fi password?"Tests
pip install -r requirements-dev.txt
python -m pytest -qReal vs simulated
Part | Status |
MCP server, tools, Streamable HTTP, MCP App resource | Real. Tested with the official MCP Python client and with Strands. |
Answering, tickets, memory, re-check, gaps report | Real. |
Strands host | Real Strands MCP client. The Bedrock and Anthropic model paths are written but were not run live, because no credentials were available while building; the direct-call path was run. |
Claude answerer | Inherited from the author's earlier bot, where it ran live. Not run live in this build, for the same reason. Offline mode was run. |
Alexa+ | Simulated. Alexa+ add-on tooling is limited to select partners, as the hackathon FAQ explains, so the browser simulator acts as the host: it is a real MCP client and a real MCP Apps host. |
Customer identity | Simulated with a header. A production add-on would take the linked account from the Alexa+ host. |
Speech | Browser speech synthesis and recognition (Chrome/Edge). |
Open source contribution
The simulator's browser MCP client and MCP Apps host are published separately as mcp-lite under the MIT license: a dependency-free MCP client for the browser over Streamable HTTP that reads both JSON and SSE responses, plus a minimal MCP Apps host for rendering ui:// resources in a sandboxed iframe. It has its own tests and an example page.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Make how-to videos, social clips and help articles from Claude or ChatGPT, and run your help center.
Gives AI assistants read access to your Dedox help centre and knowledge base articles.
1AI support employee for any website: learns the site, answers visitors by chat and voice.
- AskBaseOAuthcom.askbase
Search, write and keep your help centre current. Changes are drafted for a person to approve.
Related MCP Servers
- AlicenseBqualityDmaintenanceTransform your non-existent or unreadable docs into an intelligent, searchable knowledge base that actually answers those 'basic questions' before they're asked.1135MIT
- FlicenseNot gradedqualityBmaintenanceEnables traceable, version-aware question answering over product documentation, combining vector and graph retrieval to return cited evidence and support agentic workflows.-
- AlicenseNot gradedqualityBmaintenanceEnables Alexa+ and other agents to query door events, expected visitor context, quick replies, escalation controls, and accessibility preferences, turning Ring doorbell signals into grounded, consent-aware intelligence for voice and TV interactions.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and retrieve unified product knowledge from documentation, training sessions, resolved support tickets, and curated team answers, with source attribution, and to report gaps that trigger a human review loop.17 npmMIT