MCP Hub
Back to servers

MCP A2A AP2 Food Delivery & Payments

An MCP server implementing A2A and AP2 protocols for secure food delivery orchestration and cryptographically signed Stripe payment mandates.

Tools
5
Updated
Dec 22, 2025

mcp-a2a-ap2-im-hungry 🍔💳

MCP server with A2A protocol (food delivery) + AP2 protocol (payments with Mandates).

Demo

AP2 Demo

Flow

AP2 Flow

Quick Start

git clone https://github.com/tas1337/mcp-a2a-ap2-im-hungry.git
cd mcp-a2a-ap2-im-hungry
npm start

Services:

  • MCP Server: http://localhost:8000/mcp
  • Registry: http://localhost:8004
  • DoorDash/UberEats/Grubhub: 8001-8003 (A2A)
  • Stripe: http://localhost:8005 (AP2)

What's Different from mcp-a2a-im-hungry?

mcp-a2a-im-hungryThis project
A2A onlyA2A + AP2
No paymentsStripe payments
Mandates (signed authorization)

What is AP2?

Problem: AI agents spending money. Who approved it?

AP2 = Payments with Mandates — cryptographically signed proof of user intent.

MANDATE = { userId, maxAmount, expires, signature }

Flow (matches real-world AP2):

  1. User asks for cheeseburger 🍔
  2. Your agent searches restaurants via A2A (discovers DoorDash/UberEats/Grubhub agents)
  3. Your agent gets menus and delivery estimates
  4. Your agent decides which restaurant (cheapest/fastest)
  5. User authorizes payment → User's authorization service creates mandate (signed with user's private key)
  6. Your agent requests authorization → Receives mandate from user
  7. Your agent sends payment request WITH mandate to Stripe agent (via A2A)
  8. Stripe agent VERIFIES mandate (signature valid? not expired? amount ok?)
  9. If valid → Stripe processes payment ✅
  10. Your agent places order with food delivery agent (DoorDash/UberEats/Grubhub via A2A)
  11. 🍔 Burger incoming!

Key Point: The agent NEVER creates mandates. User authorization creates them. Agent only uses them.

Project Structure

src/
├── a2a-client.ts          # Calls ANY agent (food or Stripe)
├── tools.ts               # Food tools
├── ap2-tools.ts           # Payment tools (requests user authorization)
├── user-authorization.ts  # User creates mandates (real-world: wallet/auth service)

mock-agents/
├── food-delivery/    # DoorDash, UberEats, Grubhub
├── payments/         # Stripe (verifies mandates!)
└── registry/         # Agent discovery

Tools

ToolDescription
search_restaurantsSearch food (A2A)
get_menuGet menu (A2A)
place_orderOrder food (A2A)
process_paymentPay via Stripe (AP2 + Mandate)
process_refundRefund via Stripe (AP2 + Mandate)

Connect to Cursor

{
  "mcpServers": {
    "mcp-a2a-ap2-im-hungry": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Resources

Reviews

No reviews yet

Sign in to write a review