Agentum
by BulloRosso
Agentum is a scalable, multi-component system designed for agent-to-agent (A2A) communication and interaction with large language models (LLMs) through the Anthropic Model Context Protocol (MCP). It provides a comprehensive framework for building and deploying AI agents with tools, resources, and real-time updates.
Last updated: N/A
Multi-Component System with A2A and MCP Server Integration
This project is a scalable, multi-component system built with modern web technologies.
Architecture Overview
The system consists of several decoupled components that work together:
- Frontend: React/TypeScript application with Material-UI, built using Vite
- Backend API: Python/FastAPI service providing API endpoints
- Proxy Server: Node.js proxy that routes requests to the appropriate services
- A2A Server: Agent-to-Agent server implementation following the Google A2A protocol
- MCP Server: Anthropic Model Context Protocol server providing tools, resources, and prompts
Architecture Diagram
Components
Frontend
- Modern React application with TypeScript
- Material-UI for component styling
- State management with Zustand
- Responsive dashboard UI
- Client implementations for both A2A and MCP protocols
Backend API
- FastAPI (Python) backend
- Health check endpoints
- API documentation with Redoc at
/api/doc
- API methods listing at
/api/api/v1/methods
Proxy Server
- Node.js-based reverse proxy
- Routes requests to appropriate services:
- Frontend requests → Vite development server
- API requests → FastAPI backend
- A2A requests → A2A server
- MCP/SSE requests → MCP server
- WebSocket support for real-time communication
A2A Server
- Implementation of the Google A2A protocol
- Enables agent-to-agent communication
- Provides task management and messaging capabilities
- Supports both direct requests and streaming updates
MCP Server (Python)
- Python/FastAPI implementation of the Anthropic Model Context Protocol
- Provides tools, resources, and prompts for agents
- Supports Server-Sent Events (SSE) for real-time updates
- Dual path structure (
/endpoint
and/sse/endpoint
)
Server Integrations
A2A Server Integration
The A2A server is integrated with the main application via the proxy server. Requests to the following endpoints are routed to the A2A server:
/.well-known/agent.json
: Agent information and capabilities/tasks
: Task management endpoint for JSON-RPC requests/agent-card/*
: All requests to this path (any HTTP method) are routed to the A2A server
See the A2A server documentation for more details on implementation and usage.
MCP Server Integration
The MCP (Anthropic Model Context Protocol) server is integrated with the main application via the proxy server. Requests to the following endpoints are routed to the MCP server:
/sse/*
: All SSE endpoints (status, tools, resources, prompts)/sse
: The SSE event stream endpoint
The MCP server provides:
- Tools API: Functions that can be called to perform actions
- Resources API: Static files and data that can be downloaded
- Prompts API: Templates for generating LLM prompts
- Server-Sent Events (SSE): Real-time updates and streaming
See the MCP server documentation and MCP client documentation for more details.
Development
Prerequisites
- Node.js 20+
- Python 3.11+
- npm or yarn
Running the Application
The application is divided into multiple services, each running in its own process:
-
API Backend:
cd api pip install -r requirements.txt python main.py
-
Frontend Development Server:
cd frontend npm install npm run dev
-
Proxy Server:
node proxy-server.js
-
A2A Server:
cd a2a-server node simple-server.js # JavaScript implementation # or for TypeScript implementation (if compiled) # node dist/main.js
-
MCP Server:
cd mcp-server pip install -r requirements.txt python mcp_server.py
Running Tests
Integration tests are available for the A2A server:
cd tests
node run-tests.js # Runs all A2A server tests
API Endpoints
Backend API
GET /health
: Health check endpointGET /api/v1/methods
: List of available API methodsGET /api/doc
: API documentation (Redoc)
A2A Server
GET /.well-known/agent.json
: Agent card informationPOST /tasks
: JSON-RPC endpoint for task operations:tasks/send
: Send a message to the agenttasks/sendSubscribe
: Send a message with streaming updatestasks/get
: Get task information by IDtasks/cancel
: Cancel a running task
MCP Server
GET /status
orGET /sse/status
: Server status and available resourcesGET /tools
orGET /sse/tools
: List of available toolsPOST /tools/{name}
orPOST /sse/tools/{name}
: Execute a toolGET /resources
orGET /sse/resources
: List of available resourcesGET /resources/{name}
orGET /sse/resources/{name}
: Get a specific resourceGET /prompts
orGET /sse/prompts
: List of available prompt templatesPOST /prompts/{name}
orPOST /sse/prompts/{name}
: Generate a promptGET /sse
: Server-Sent Events (SSE) connection for real-time updates