"Combine A2A and MCP to create advanced agentic systems!"
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 🔜
Run the docker-compose.yml
for a full distributed system, demonstrating
A2A and MCP interoperability.
docker compose up
To run individual, more contained examples, use the example
cli command.
a2a-go example <example-name>
Add the --interactive
flag to run the example in interactive mode.
a2a-go example <example-name> --interactive
All example code lives in the examples
directory.