"Combine A2A and MCP to create advanced, distributed agentic systems!"
A2A-Go is a framework for building scalable, distributed agentic AI systems. It promotes a microservice architecture where agents and tools operate as independent services, deployable locally or across a network. The framework implements the Agent-to-Agent (A2A) protocol and utilizes the Model Context Protocol (MCP) for standardized tool interaction and data exchange.
a2a‑go is a reference Go implementation of the Agent‑to‑Agent (A2A) protocol by Google, including the proposed interoperability with the Model Context Protocol (MCP).
🚧 Work in progress 🚧 Consider this project a proof of concept at best, and subject to sudden changes.
-
Agent‑to‑Agent (A2A) protocol implementation
- Send Task to send a new task to an agent
- Get Task to retrieve a task by ID
- Cancel Task to cancel a task
- Stream Task to stream the task results
- Set Push Notification to configure push notifications for a task
- Get Push Notification to retrieve the push notification configuration for a task
- Structured Outputs to return structured data from an agent
- Fine‑tuning to fine‑tune an agent on a dataset
- Image Generation to generate images with an agent
- Audio Transcription to transcribe audio
- Text‑to‑Speech to convert text to speech
-
Model Context Protocol (MCP) interoperability
- Tool Calling to call tools and receive the results
- List Prompts to retrieve a list of prompts from an agent
- Get Prompt to retrieve a prompt by ID
- Set Prompt to create or update a prompt
- Delete Prompt to delete a prompt by ID
- List Resources to retrieve a list of resources from an agent
- Get Resource to retrieve a resource by ID
- Set Resource to create or update a resource
- Delete Resource to delete a resource by ID
- Sampling to sample a task from an agent
- Roots to get the root task for a task
-
Built‑in tools
- Browser to browse the web
- Docker to run Docker commands
- GitHub to search GitHub
- Memory to store and retrieve memories
- Qdrant to store and retrieve vectors
- Neo4j to store and retrieve graph data
Use the Makefile
to run a full containerized distributed system, demonstrating A2A and MCP interoperability.
make server
make client