Obligate
MCP server for Alexa+ that listens for spoken commitments in meetings and turns them into tracked obligations with an owner, deadline, and risk level. Exposes voice-first tools for capturing a meeting transcript, adding/listing/completing/assigning obligations, ranking high-risk items, and giving a daily briefing, each returning a spoken-response line plus structured data. Also uses Amazon Bedrock's Converse API for structured commitment extraction from messy transcripts, with a rules-engine fallback.
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., "@ObligateWrap up the meeting and tell me what could go wrong"
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.
Obligate
Say it in a meeting, Obligate tracks it.
▶ Watch the demo video (2:42) · Devpost project · Friction log

Obligate is an MCP server for Alexa+ that listens for the promises people make in meetings ("I'll send the contract by Friday", "we need to renew the SOC 2 report") and turns them into tracked obligations with an owner, a deadline and a risk level. It catches the commitments nobody owns, the ones that were asked but never confirmed, and the ones that touch contracts, audits, privacy, security or money, before they turn into costly mistakes.
Built for the Alexa+ track of Build, Ship, Shape: Amazon Developer Hackathon 2026.
MCP server, Streamable HTTP transport, MCP spec 2025-11-25 (also negotiates newer versions)
7 voice-first tools, each returning a
speechline written to be read aloud, plus structured dataLive dashboard for screens (Echo Show, laptop, team TV)
Voice console (
/voice) that simulates the Alexa+ experience in the browser over real MCP callsAmazon Bedrock (Converse API) extraction for messy transcripts, with an offline rules engine as fallback
Why
Most meeting tools give you a transcript or a summary. Neither one tells you that the invoice nobody volunteered to pay is now a day late, or that "I'll try to update the incident policy, maybe" isn't really a commitment. The cost of a dropped promise isn't the task itself. It's the missed renewal, the failed audit, the breached SLA.
Obligate treats every spoken commitment as an obligation and scores its risk:
Signal | Example | Why it matters |
Nobody owns it | "Someone needs to pay the Q3 invoice" | Classic diffusion of responsibility |
Asked, never confirmed | "Sam, can you send the deck?" (no reply) | The asker thinks it's handled; Sam doesn't |
Soft commitment | "I'll try to update the policy, maybe" | Hedged promises slip first |
Compliance-sensitive | contracts, audits, GDPR/HIPAA, security, invoices, renewals | Slipping these costs money or trust |
Overdue / due within 48h | "it's already late" | Needs action today |
Related MCP server: Follow-Through
Talk to it
You: Alexa, wrap up the meeting. Alexa: I captured 8 commitments from the vendor review. 3 are high risk. Most urgent: Raj needs to send the renewal contract to legal, due tomorrow. That one is compliance-sensitive (contract, legal, renewal). 2 have no owner. Want me to assign them?
You: Give the SOC 2 report to Priya by November 14. Alexa: Done. Priya needs to renew the SOC 2 report before the customer audit, due November 14. Risk dropped from high to medium.
You: What could go wrong? Alexa: 2 high-risk items. First, nobody owns: pay the Q3 invoice to Acme, 1 day overdue…
Architecture
flowchart LR
A[Alexa+ / any MCP client] -- Streamable HTTP /mcp --> S[Obligate MCP server]
V[Voice console /voice] -- JSON-RPC over Streamable HTTP --> S
S --> E{Extractor}
E -- OBLIGATE_LLM=bedrock --> B[Amazon Bedrock Converse API]
E -- default / fallback --> R[Rules engine]
S --> K[Risk scorer]
S --> D[(SQLite)]
D --> W[Live dashboard /]Path | What it is |
| MCP endpoint (Streamable HTTP) |
| Live dashboard, refreshes every 3 s |
| Alexa+ simulation: speak or type, it calls the MCP tools and speaks the answer |
| Health check |
| JSON of all obligations |
MCP tools
Tool | Voice example | What it does |
| "Wrap up the meeting" | Extracts every commitment from a transcript, dedupes, scores risk |
| "Remind me I promised Dana the NDA by Monday" | Tracks one commitment |
| "What does Raj owe?" / "What has no owner?" | Filter by owner, due window, risk |
| "What could go wrong?" | Ranks the most dangerous obligations and says why |
| "Give me my briefing" | Overdue, due today, coming up |
| "Raj sent the renewal contract" | Fuzzy-matches what you said, marks it done |
| "Give the SOC 2 report to Priya by Nov 14" | Fixes unowned / undated risks |
Read-only tools carry readOnlyHint annotations; write tools are marked non-destructive. Resource: obligate://obligations/open.
Quick start
git clone <this repo> && cd obligate
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
OBLIGATE_DEMO=1 python3 -m obligate.serverDashboard: http://localhost:8000/
Voice console: http://localhost:8000/voice (use Chrome for voice input). Click Play sample meeting, then Wrap up the meeting.
MCP endpoint: http://localhost:8000/mcp
Run the tests (with the server running for the end-to-end test):
python -m pytest -q tests/test_extract.py # extraction, dates, risk scoring
python tests/test_e2e.py # real MCP client over Streamable HTTP, calls every toolInspect with MCP Inspector
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: http://localhost:8000/mcpMake it reachable by Alexa+ (public HTTPS)
Alexa+ needs a public HTTPS URL. The quickest way for a demo is a tunnel:
cloudflared tunnel --url http://localhost:8000 # or: ngrok http 8000
# then restart the server allowing that hostname (DNS-rebinding protection is on by default):
OBLIGATE_ALLOWED_HOSTS=your-subdomain.trycloudflare.com python -m obligate.serverRegister https://<your-host>/mcp as the server URL in the Alexa+ developer tooling.
For something that stays up, the included Dockerfile runs on AWS App Runner or ECS Fargate:
docker build -t obligate . && docker run -p 8000:8000 -e OBLIGATE_ALLOWED_HOSTS=<your-domain> obligateAmazon Bedrock extraction
The rules engine handles clear speech well ("I'll…", "X, can you…", "X will…", "we need to…"). For real-world transcripts with crosstalk, turn on Bedrock:
export OBLIGATE_LLM=bedrock
export AWS_REGION=us-east-1
export OBLIGATE_BEDROCK_MODEL=us.amazon.nova-lite-v1:0 # any Converse-compatible model
python -m obligate.serverObligate calls the Bedrock Converse API with a structured-extraction prompt, resolves relative dates against the meeting date, and then runs the same risk scorer. If Bedrock errors or isn't configured, it falls back to the rules engine, so a meeting is never lost. See obligate/extract.py.
Configuration
Variable | Default | Purpose |
|
| Bind address ( |
|
| Port |
|
| SQLite file |
| Comma-separated public hostnames allowed through DNS-rebinding protection | |
|
| Set to |
|
| Bedrock model or inference profile |
| today | Pin "today" for reproducible demos |
|
|
Project layout
obligate/
server.py MCP server: tools, resource, routes, Streamable HTTP app
extract.py commitment extraction (rules + Amazon Bedrock)
dates.py "by Friday", "next week", "end of month" → dates
risk.py risk scoring + compliance tagging
store.py SQLite persistence
dashboard.py live dashboard
static/voice.html Alexa+ voice simulation
examples/ sample meeting transcript
tests/ unit tests + end-to-end MCP client testWhat's next
Speaker diarization straight from Alexa+ meeting audio
Proactive Alexa+ notifications the morning an obligation is due
Calendar, Jira and Slack sync so obligations land where teams already work
DynamoDB + per-team auth for multi-tenant deployment
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- AttroveOAuthcom.attrove
Catch conversations going quiet — watch outcomes and search Gmail, Slack, and meetings. One MCP.
Compliance frameworks (SOC 2, ISO 27001, CMMC, NIST, more) delivered to AI agents as MCP tools.
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables management of PMO entities such as actions, risks, issues, projects, deliverables, decisions, KPIs, and objectives through natural language from any MCP-compatible agent.133 npmServer Side Public , v 1
- FlicenseAqualityDmaintenanceTracks meeting commitments, verifies completion via Slack/email/Linear, and sends escalating nudges with manager escalation when deadlines slip.14-
- FlicenseNot gradedqualityBmaintenanceExtracts and structures executive meeting action items and decision accountability into JSON, enabling automated tracking and telemetry through MCP-compatible AI agents.8-
- FlicenseBqualityBmaintenanceScans your Microsoft 365 Outlook, Teams, and calendar to surface conversations still waiting on you, and drafts reply messages you can approve and send without leaving your MCP client.8-