cloud-a2a-mcp-quickstart

agentic-profile/cloud-a2a-mcp-quickstart

3.3

If you are the rightful owner of cloud-a2a-mcp-quickstart and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Agentic Profile A2A/MCP service is a scalable solution deployed on AWS, designed to handle agentic profiles and task management using A2A and MCP protocols.

Tools
2
Resources
0
Prompts
0

Cloud A2A and MCP Quickstart

Leverages cloud formation scripts and templates to create a scalable server with example A2A and MCP services.

Features

For each cloud infrastructure, scripts can optimize with VPCs, NATs, caches, scalable databases, scalable compute, native security, and different AI model providers.

Demonstrates Universal Authentication using DIDs, JWT, and standard HTTPS headers.

The A2A and MCP services are written in Javascript/Typescript using Node.js and have abstracted storage to map to the cloud native data stores.

Example A2A agents include:

  • Venture: an agent that learns about a startup and helps that startup find the right technology providers, capital partners, teamates, and co-founders.
  • Business Match: an MCP that learns about all the ventures and the people that might want to work with them and suggests connections.
  • Volunteer: an agent that learns about a volunteer and helps them find volunteering opportunities
  • Charity: an agent that learns about a charity and helps them find volunteers
  • Reputation: an MCP that learns about peoples and business reputations
  • Volunteer Match: an MCP that learns about volunteers and charities and suggests matches

The demo website is written using React and converted to a static website which can be deployed to an edge caching service.

Cloud Providers

Support for various cloud providers:

  • AWS: using CloudFormation

Development

Suports local development with these dependencies:

  • git
  • Node.js 22+
  • Redis

Quickstart

  1. Make sure Redis is installed and running
  • Install Redis

  • Start Redis locally

    redis-server
    
  1. Clone the repo and change dir into it
git clone git@github.com:agentic-profile/cloud-a2a-mcp-quickstart.git
cd cloud-a2a-mcp-quickstart
  1. Start the website service locally
cd website
npm install
npm run dev
  1. Start the A2A and MCP server locally
cd service
npm install
npm run dev
  1. Open the website with your browser, visit http://localhost:5173

Example usage:

  • Create an Agentic Profile so your agents can authenticate
    • Click "Settings", then "Manage" on the Digital Identity row
    • Enter your name, then click "Create Digital Identity"
  • Click MCP in the navigation bar
    • Click the "Test" button under Location
    • Click "Update Location"

Cloud Deployment

The /website and /service projects are designed to be generic and easy to deploy on cloud infrastructure.

Currently are available, and other cloud providers such as Google Cloud and Azure should be easy to implement.

Project Structure

ā”œā”€ā”€ aws/                      # AWS deployment scripts and CloudFormation templates
│   ā”œā”€ā”€ agentic-foundation.yaml    # Foundation infrastructure template
│   ā”œā”€ā”€ agentic-service.yaml       # Service deployment template
│   ā”œā”€ā”€ agentic-website.yaml       # Website deployment template
│   ā”œā”€ā”€ deploy-service.sh          # Service deployment script
│   ā”œā”€ā”€ deploy-website.sh          # Website deployment script
│   └── ssh-nat-instance.sh        # NAT instance SSH script
ā”œā”€ā”€ service/                  # A2A and MCP Backend service (Node.js/TypeScript)
│   ā”œā”€ā”€ src/
│   │   ā”œā”€ā”€ index.ts              # Main Lambda function
│   │   ā”œā”€ā”€ index.local.ts        # Local development server
│   │   ā”œā”€ā”€ router.ts             # Express router with all endpoints
│   │   ā”œā”€ā”€ a2a/                  # A2A TaskHandler implementations
│   │   │   ā”œā”€ā”€ hireme/           # HireMe task handlers
│   │   │   ā”œā”€ā”€ venture/          # Venture task handlers
│   │   │   ā”œā”€ā”€ vc/               # VC task handlers
│   │   │   ā”œā”€ā”€ index.ts          # A2A main exports
│   │   │   └── utils.ts          # A2A utilities and middleware
│   │   ā”œā”€ā”€ mcp/                  # MCP protocol implementations
│   │   │   ā”œā”€ā”€ location/         # Location-related MCP methods
│   │   │   ā”œā”€ā”€ match/            # Matching MCP methods
│   │   │   └── utils.ts          # MCP utilities
│   │   ā”œā”€ā”€ json-rpc/             # JSON-RPC protocol handling
│   │   │   ā”œā”€ā”€ auth.ts           # Authentication
│   │   │   ā”œā”€ā”€ index.ts          # JSON-RPC main handler
│   │   │   ā”œā”€ā”€ types.ts          # Type definitions
│   │   │   └── utils.ts          # JSON-RPC utilities
│   │   ā”œā”€ā”€ cache/                # Redis caching layer
│   │   │   └── redis.ts          # Redis client and utilities
│   │   ā”œā”€ā”€ stores/               # Data storage abstractions
│   │   │   └── memory-store.ts   # In-memory storage implementation
│   │   └── __tests__/            # Unit tests
│   ā”œā”€ā”€ www/                      # Static web files for the landing page
│   │   ā”œā”€ā”€ index.html            # Web interface HTML
│   │   └── images/               # Static images and icons
│   ā”œā”€ā”€ docs/                     # Service documentation
│   ā”œā”€ā”€ scripts/                  # Helper scripts
│   ā”œā”€ā”€ examples/                 # Usage examples
│   ā”œā”€ā”€ dist/                     # Compiled JavaScript output
│   ā”œā”€ā”€ package.json
│   ā”œā”€ā”€ tsconfig.json
│   └── jest.config.js
└── website/                  # Frontend React application
    ā”œā”€ā”€ src/
    │   ā”œā”€ā”€ App.tsx               # Main React application
    │   ā”œā”€ā”€ main.tsx              # Application entry point
    │   ā”œā”€ā”€ components/           # Reusable React components
    │   ā”œā”€ā”€ pages/                # Page components
    │   │   ā”œā”€ā”€ agents/           # Agent-related pages
    │   │   └── mcp/              # MCP-related pages
    │   ā”œā”€ā”€ stores/               # State management (Zustand)
    │   ā”œā”€ā”€ assets/               # Static assets (images, etc.)
    │   └── data/                 # Static data files
    ā”œā”€ā”€ public/                   # Public static files
    ā”œā”€ā”€ package.json
    ā”œā”€ā”€ tsconfig.json
    ā”œā”€ā”€ vite.config.ts
    ā”œā”€ā”€ tailwind.config.js
    └── postcss.config.js

Useful CURL commands for local testing

Health Check

curl -X GET http://localhost:3000/status

MCP Location Service

# Tools List
curl -X POST http://localhost:3000/mcp/location \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# Location Update
curl -X POST http://localhost:3000/mcp/location \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":4,"method":"update","params":{"coords":{"latitude":35.6762,"longitude":139.6503}}}'

# Location Query
curl -X POST http://localhost:3000/mcp/location \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":5,"method":"query"}'

A2A Endpoints

# Venture TaskHandler
curl -X POST http://localhost:3000/a2a/venture \
  -H 'Content-Type: application/json' \
  -d '{"id":"1","method":"venture/create","params":{"name":"Test Venture","type":"startup"}}'