# harshachakravarthy/automl-mcp-chatbot architecture

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

- Interactive diagram: https://gitdiagram.com/harshachakravarthy/automl-mcp-chatbot
- Repository: https://github.com/harshachakravarthy/automl-mcp-chatbot
- Video tour (about a minute): https://gitdiagram.com/harshachakravarthy/automl-mcp-chatbot/video

## Overview

AI Data Scientist Chatbot lets users select tabular datasets and request inspection, exploratory analysis, plots, or AutoML results through a Streamlit chat. The UI parses commands, loads data for its local analysis paths, and is documented as invoking server tools through the synchronous client. The server separately loads datasets, computes summaries and plots, and runs PyCaret model comparison and tuning. The excerpts omit some UI command-handling code, so uncertain call wiring is not expanded.

Main entry points: [`servers/automl_server.py`](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py) (Tool dispatch), [`app/streamlit_app.py`](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/app/streamlit_app.py) (Streamlit chat), [`datasets`](https://github.com/harshachakravarthy/automl-mcp-chatbot/tree/main/datasets) (Dataset files), [`backend/mcp_client.py`](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/backend/mcp_client.py) (Synchronous tool client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Chat interface"]
  node_ui["Streamlit chat<br/>[streamlit_app.py]"]
  node_intent["LLM intent router<br/>[llm_router.py]"]
  node_client["Synchronous tool client<br/>[mcp_client.py]"]
end

subgraph group_analysis["Data analysis"]
  node_local_analysis["Local analysis<br/>[streamlit_app.py]"]
end

subgraph group_server["Tool server"]
  node_server["Tool dispatch<br/>[automl_server.py]"]
  node_dataset_tools["Dataset tools<br/>[automl_server.py]"]
  node_eda["EDA and summaries<br/>[automl_server.py]"]
  node_plotting["Plot generation<br/>[automl_server.py]"]
  node_automl["Model training<br/>[automl_server.py]"]
end

subgraph group_data["Data and artifacts"]
  node_datasets[("Dataset files")]
  node_artifacts["Plot artifacts<br/>[automl_server.py]"]
end

node_user(("User"))
node_openai(("OpenAI API"))
node_pycaret["PyCaret"]

node_user -->|"sends commands"| node_ui
node_ui -.->|"routes intent"| node_intent
node_intent -.->|"parses metadata"| node_openai
node_ui -->|"calls tools"| node_client
node_client -->|"dispatches tools"| node_server
node_ui -->|"runs local analysis"| node_local_analysis
node_local_analysis -->|"reads files"| node_datasets
node_server -->|"dispatches tools"| node_dataset_tools
node_server -->|"dispatches tools"| node_eda
node_server -->|"dispatches tools"| node_plotting
node_server -->|"dispatches tools"| node_automl
node_dataset_tools -->|"reads files"| node_datasets
node_eda -->|"reads data"| node_datasets
node_plotting -->|"reads data"| node_datasets
node_plotting -->|"saves plots"| node_artifacts
node_automl -->|"reads data"| node_datasets
node_automl -->|"compares and tunes"| node_pycaret
node_client -->|"returns results"| node_ui

click node_ui "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/app/streamlit_app.py"
click node_intent "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/backend/llm_router.py"
click node_client "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/backend/mcp_client.py"
click node_local_analysis "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/app/streamlit_app.py"
click node_server "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"
click node_dataset_tools "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"
click node_eda "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"
click node_plotting "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"
click node_automl "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"
click node_datasets "https://github.com/harshachakravarthy/automl-mcp-chatbot/tree/main/datasets"
click node_artifacts "https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py"

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_ui,node_intent,node_client,node_user toneBlue
class node_local_analysis toneAmber
class node_server,node_dataset_tools,node_eda,node_plotting,node_automl,node_openai toneMint
class node_datasets,node_artifacts toneRose
class node_pycaret toneIndigo
```

## Components

### Chat interface

- [Streamlit chat](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/app/streamlit_app.py): `app/streamlit_app.py`
- [LLM intent router](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/backend/llm_router.py): `backend/llm_router.py`
- [Synchronous tool client](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/backend/mcp_client.py): `backend/mcp_client.py`

### Data analysis

- [Local analysis](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/app/streamlit_app.py): `app/streamlit_app.py`

### Tool server

- [Tool dispatch](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`
- [Dataset tools](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`
- [EDA and summaries](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`
- [Plot generation](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`
- [Model training](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`

### Data and artifacts

- [Dataset files](https://github.com/harshachakravarthy/automl-mcp-chatbot/tree/main/datasets): `datasets`
- [Plot artifacts](https://github.com/harshachakravarthy/automl-mcp-chatbot/blob/main/servers/automl_server.py): `servers/automl_server.py`

### Other components

- **User**
- **OpenAI API**
- **PyCaret**

## Connections

- User → Streamlit chat: sends commands
- Streamlit chat → LLM intent router: routes intent
- LLM intent router → OpenAI API: parses metadata
- Streamlit chat → Synchronous tool client: calls tools
- Synchronous tool client → Tool dispatch: dispatches tools
- Streamlit chat → Local analysis: runs local analysis
- Local analysis → Dataset files: reads files
- Tool dispatch → Dataset tools: dispatches tools
- Tool dispatch → EDA and summaries: dispatches tools
- Tool dispatch → Plot generation: dispatches tools
- Tool dispatch → Model training: dispatches tools
- Dataset tools → Dataset files: reads files
- EDA and summaries → Dataset files: reads data
- Plot generation → Dataset files: reads data
- Plot generation → Plot artifacts: saves plots
- Model training → Dataset files: reads data
- Model training → PyCaret: compares and tunes
- Synchronous tool client → Streamlit chat: returns results
