MCP A2A AP2 Food Delivery & Payments
Enables AI agents to discover and order food from multiple delivery services (DoorDash, UberEats, Grubhub) using A2A protocol and process payments via Stripe with AP2 protocol mandates for cryptographically signed user authorization.
README
mcp-a2a-ap2-im-hungry šš³
MCP server with A2A protocol (food delivery) + AP2 protocol (payments with Mandates).
Demo

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-hungry | This project |
|---|---|
| A2A only | A2A + AP2 |
| No payments | Stripe 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):
- User asks for cheeseburger š
- Your agent searches restaurants via A2A (discovers DoorDash/UberEats/Grubhub agents)
- Your agent gets menus and delivery estimates
- Your agent decides which restaurant (cheapest/fastest)
- User authorizes payment ā User's authorization service creates mandate (signed with user's private key)
- Your agent requests authorization ā Receives mandate from user
- Your agent sends payment request WITH mandate to Stripe agent (via A2A)
- Stripe agent VERIFIES mandate (signature valid? not expired? amount ok?)
- If valid ā Stripe processes payment ā
- Your agent places order with food delivery agent (DoorDash/UberEats/Grubhub via A2A)
- š 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
| Tool | Description |
|---|---|
search_restaurants |
Search food (A2A) |
get_menu |
Get menu (A2A) |
place_order |
Order food (A2A) |
process_payment |
Pay via Stripe (AP2 + Mandate) |
process_refund |
Refund via Stripe (AP2 + Mandate) |
Connect to Cursor
{
"mcpServers": {
"mcp-a2a-ap2-im-hungry": {
"url": "http://localhost:8000/mcp"
}
}
}
Resources
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.