# sushruth3002/mcp architecture

> Architecture diagram of the GitHub repository sushruth3002/mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sushruth3002/mcp
- Repository: https://github.com/sushruth3002/mcp

## Overview

Trip Planner is a conversational trip-planning PoC. Its principal workflow accepts a request through the multi-agent chatbot, routes work to Team, Food, and Travel agents, accesses organizational and preference data plus travel services through MCP tools, and returns a synthesized answer. The single-agent chatbot and simulated orchestrator are alternative entry points. Agent routing and MCP tool calls are visible in sampled source; some advertised recommendation details and integrations are documented in the README but their full implementation was not sampled.

Main entry points: [`src/mcp_server.py`](https://github.com/sushruth3002/mcp/blob/main/src/mcp_server.py) (MCP tool server), [`src/a2a_chatbot.py`](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py) (Orchestrator agent), [`src/chatbot.py`](https://github.com/sushruth3002/mcp/blob/main/src/chatbot.py) (Single-agent chatbot), [`src/orchestrator.py`](https://github.com/sushruth3002/mcp/blob/main/src/orchestrator.py) (Simulated orchestrator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_conversation["Chat interfaces"]
  node_a2a["Multi-agent chatbot<br/>[a2a_chatbot.py]"]
  node_single["Single-agent chatbot<br/>[chatbot.py]"]
  node_basic["Simulated orchestrator<br/>[orchestrator.py]"]
end

subgraph group_agents["Agent coordination"]
  node_route["Orchestrator agent<br/>[a2a_chatbot.py]"]
  node_team["Team agent<br/>[a2a_chatbot.py]"]
  node_food["Food agent<br/>[a2a_chatbot.py]"]
  node_travel["Travel agent<br/>[a2a_chatbot.py]"]
end

subgraph group_tools["MCP tools"]
  node_mcp["MCP tool server<br/>[mcp_server.py]"]
  node_dbutils["Database connections<br/>[db_utils.py]"]
end

subgraph group_services["Data and services"]
  node_neo4j[("Neo4j organization graph<br/>[neo4j_init.cypher]")]
  node_postgres[("Postgres trip data<br/>[postgres_init.sql]")]
  node_gemini{{"Gemini API"}}
  node_weather{{"OpenWeatherMap"}}
  node_countryapi{{"RestCountries API"}}
end

node_traveler(("Traveler"))
node_answer["Trip plan response"]

node_traveler -->|"asks"| node_a2a
node_traveler -.->|"asks"| node_single
node_traveler -.->|"starts mission"| node_basic
node_a2a -->|"runs"| node_route
node_single -->|"opens MCP session"| node_mcp
node_basic -.->|"opens MCP session"| node_mcp
node_route -->|"analyzes and routes"| node_gemini
node_route -->|"dispatches"| node_team
node_route -->|"dispatches"| node_food
node_route -->|"dispatches"| node_travel
node_team -->|"calls Cypher tool"| node_mcp
node_food -->|"calls SQL tool"| node_mcp
node_travel -->|"calls travel tools"| node_mcp
node_mcp -->|"gets connections"| node_dbutils
node_mcp -->|"queries"| node_neo4j
node_mcp -->|"queries"| node_postgres
node_mcp -->|"fetches forecast"| node_weather
node_mcp -->|"fetches country info"| node_countryapi
node_route -->|"synthesizes"| node_answer
node_single -->|"presents"| node_answer
node_basic -.->|"prints plan"| node_answer
node_answer -->|"returns"| node_traveler

click node_a2a "https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py"
click node_single "https://github.com/sushruth3002/mcp/blob/main/src/chatbot.py"
click node_basic "https://github.com/sushruth3002/mcp/blob/main/src/orchestrator.py"
click node_route "https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py"
click node_team "https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py"
click node_food "https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py"
click node_travel "https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py"
click node_mcp "https://github.com/sushruth3002/mcp/blob/main/src/mcp_server.py"
click node_dbutils "https://github.com/sushruth3002/mcp/blob/main/src/db_utils.py"
click node_neo4j "https://github.com/sushruth3002/mcp/blob/main/data/neo4j_init.cypher"
click node_postgres "https://github.com/sushruth3002/mcp/blob/main/data/postgres_init.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_a2a,node_single,node_basic toneBlue
class node_route,node_team,node_food,node_travel toneAmber
class node_mcp,node_dbutils toneMint
class node_neo4j,node_postgres,node_gemini,node_weather,node_countryapi toneRose
class node_traveler,node_answer toneIndigo
```

## Components

### Chat interfaces

- [Multi-agent chatbot](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py): `src/a2a_chatbot.py`
- [Single-agent chatbot](https://github.com/sushruth3002/mcp/blob/main/src/chatbot.py): `src/chatbot.py`
- [Simulated orchestrator](https://github.com/sushruth3002/mcp/blob/main/src/orchestrator.py): `src/orchestrator.py`

### Agent coordination

- [Orchestrator agent](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py): `src/a2a_chatbot.py`
- [Team agent](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py): `src/a2a_chatbot.py`
- [Food agent](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py): `src/a2a_chatbot.py`
- [Travel agent](https://github.com/sushruth3002/mcp/blob/main/src/a2a_chatbot.py): `src/a2a_chatbot.py`

### MCP tools

- [MCP tool server](https://github.com/sushruth3002/mcp/blob/main/src/mcp_server.py): `src/mcp_server.py`
- [Database connections](https://github.com/sushruth3002/mcp/blob/main/src/db_utils.py): `src/db_utils.py`

### Data and services

- [Neo4j organization graph](https://github.com/sushruth3002/mcp/blob/main/data/neo4j_init.cypher): `data/neo4j_init.cypher`
- [Postgres trip data](https://github.com/sushruth3002/mcp/blob/main/data/postgres_init.sql): `data/postgres_init.sql`
- **Gemini API**
- **OpenWeatherMap**
- **RestCountries API**

### Other components

- **Traveler**
- **Trip plan response**

## Connections

- Traveler → Multi-agent chatbot: asks
- Traveler → Single-agent chatbot: asks
- Traveler → Simulated orchestrator: starts mission
- Multi-agent chatbot → Orchestrator agent: runs
- Single-agent chatbot → MCP tool server: opens MCP session
- Simulated orchestrator → MCP tool server: opens MCP session
- Orchestrator agent → Gemini API: analyzes and routes
- Orchestrator agent → Team agent: dispatches
- Orchestrator agent → Food agent: dispatches
- Orchestrator agent → Travel agent: dispatches
- Team agent → MCP tool server: calls Cypher tool
- Food agent → MCP tool server: calls SQL tool
- Travel agent → MCP tool server: calls travel tools
- MCP tool server → Database connections: gets connections
- MCP tool server → Neo4j organization graph: queries
- MCP tool server → Postgres trip data: queries
- MCP tool server → OpenWeatherMap: fetches forecast
- MCP tool server → RestCountries API: fetches country info
- Orchestrator agent → Trip plan response: synthesizes
- Single-agent chatbot → Trip plan response: presents
- Simulated orchestrator → Trip plan response: prints plan
- Trip plan response → Traveler: returns
