Inspiration

Household bills arrive as PDFs, photos and emails. Asking "when is the electricity due?" should not need a spreadsheet. Alexa+ is where people already ask quick questions at home, so the answer should live there.

What it does

Paperwork Pal is a self-hosted MCP server for Alexa+. You give it the text of a bill or receipt; it extracts the vendor, amount, currency and due date and stores the record. Then you can ask:

  • "What bills are due this week?" (list_due)
  • "How much is the electricity bill?" (get_document)
  • "I paid it, mark it as paid." (mark_paid)
  • "How much did I spend this month?" (monthly_total)

If a field is not written in the document, it comes back null. The server never guesses a vendor, an amount or a due date. In the demo, a pharmacy receipt has no due date, and Paperwork Pal says so instead of inventing one.

How we built it

  • Python + the official MCP SDK (FastMCP), MCP spec 2025-11-25, Streamable HTTP transport at /mcp
  • Five tools: add_document, list_due, get_document, mark_paid, monthly_total
  • Field extraction is delegated to a document-extraction HTTP API that returns null for missing fields
  • SQLite for storage, so due-this-week and monthly totals are plain SQL
  • Deployed on my own server behind nginx + Let's Encrypt; 7 pytest tests; the live endpoint is open to any MCP client

Challenges we ran into

Newer FastMCP rejects unknown Host headers (DNS-rebinding protection), so the reverse proxy has to forward a trusted Host. Spoken answers also need to be short, so every tool returns compact JSON that a voice assistant can summarise in one sentence.

Accomplishments that we're proud of

Every call in the demo video is a real MCP call to the live server, including the "no due date" case.

What we learned

MCP keeps the assistant side thin: Alexa+ only needs the tool descriptions, and all of the paperwork logic stays on a server the user controls.

What's next

Accept PDFs and photos directly (OCR before extraction), reminders the day before a bill is due, and per-household accounts.

Try it

MCP endpoint: https://paperwork.157-173-122-86.sslip.io/mcp (connect with MCP Inspector, transport "Streamable HTTP"). The demo video uses an MCP client standing in for Alexa+; the server and the calls are real.

Built With

Share this project:

Updates

Submission history