Agentic is a sample system designed to offer intelligent business services through an agent-based architecture. The project consists of multiple services working together using MCP (Model Control Protocol) to provide comprehensive solution.
The system architecture is based on three main components that communicate with each other:
- A central application agent that receives user requests
- A RAG (Retrieval Augmented Generation) service to answer queries with contextual knowledge, exposed via MCP.
- A monitoring service to provide system status information, exposed via MCP.
flowchart TD
subgraph application["application-agent (Port: 8080)"]
app["🤖 Application Agent"]
style app fill:#f0f0f0,stroke:#333,stroke-width:2px
mc1["Monitor MCP Client"]
mc2["RAG MCP Client"]
app --- mc1
app --- mc2
style app font-weight:bold
end
subgraph system-status["Monitor Service (Port: 8081)"]
status["🤖 System Status Service"]
style status fill:#eef7e6,stroke:#333,stroke-width:2px
status-server["Monitor MCP Server"]
status --- status-server
style status font-weight:bold
end
subgraph rag-service["RAG Service (Port: 8082)"]
rag["🤖 RAG Agent"]
style rag fill:#e6f7ff,stroke:#333,stroke-width:2px
rag-server["Rag MCP Server"]
kb["Redis Vector Store"]
rag --- rag-server
rag --- kb
style rag font-weight:bold
end
%% Increased spacing between components using invisible nodes
invisible1[" "]
invisible2[" "]
application ~~~ invisible1 ~~~ rag-service
application ~~~ invisible2 ~~~ system-status
%% Connect with longer edges
mc1 --> rag-server
mc2 --> status-server
%% Hide invisible nodes
style invisible1 fill:none,stroke:none
style invisible2 fill:none,stroke:none
classDef server fill:#f0f0f0,stroke:#666,stroke-width:1px
class rag-server,status-server server
classDef client fill:#f0f0f0,stroke:#666,stroke-width:1px
class mc1,mc2 client
classDef data fill:#f9f9f9,stroke:#999,stroke-width:1px
class kb,api data
Main agent that receives user requests, via rest endpoint, and orchestrates the other services.
Configuration:
- Port: 8080
- Dependencies: Connects to
rag
andmonitor
services via MCP clients
Configuration file: application.yml
Retrieval Augmented Generation (RAG) agent that provides responses based on stored knowledge. Redis vector store is used for efficient indexing and retrieval of information.
Configuration:
- Port: 8081
- Type: MCP Server
- Storage: Redis Vector Store for efficient indexing and retrieval
Configuration file: application.yml
Role: Monitoring service that provides information about the system status.
Configuration:
- Port: 8082
- Type: MCP Server
- Functionality: Collects fict data about system health and performance
Configuration file: application.yml
cd environment;
docker-compose up -d
1. Start the RAG service:
cd rag
mvn spring-boot:run
2. Start the monitor service:
cd monitor
mvn spring-boot:run
3. Start the application agent:
cd application-agent
mvn spring-boot:run
Send requests to the application agent on port 8080. The system will coordinate communication with the RAG and monitor services to retrieve the necessary information and respond accordingly.
Audio is awful. Just watch the video without sound. 🙂