stats-compass-mcp
by oogunbiyi21
README.md
<!-- mcp-name: io.github.oogunbiyi21/stats-compass -->
<div align="center">
<img src="./assets/logo/logo1.png" alt="Stats Compass Logo" width="200"/>
# stats-compass-mcp
**Turn your LLM into a data analyst.** Multiple data science tools via MCP.
[](https://badge.fury.io/py/stats-compass-mcp)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
</div>
<img src="./assets/demos/stats_compass_mcp_1.gif" alt="Demo: Loading and exploring data" width="800"/>
## Quick Start
```bash
pip install stats-compass-mcp
```
### Claude Desktop
```bash
stats-compass-mcp install --client claude
```
### VS Code (GitHub Copilot)
```bash
stats-compass-mcp install --client vscode
```
### Claude Code (CLI)
```bash
claude mcp add stats-compass -- uvx stats-compass-mcp run
```
> **Note:** The first connection may fail while `uvx` downloads the package. If this happens, disable and re-enable Stats Compass in your MCP settings — subsequent connections will be instant.
Restart your client and start asking questions about your data.
## What Can It Do?
<img src="./assets/demos/stats_compass_mcp_2.gif" alt="Demo: Cleaning and transforming data" width="800"/>
| Category | Examples |
|----------|----------|
| **Data Loading** | Load CSV/Excel, sample datasets, list DataFrames |
| **Cleaning** | Drop nulls, impute, dedupe, handle outliers |
| **Transforms** | Filter, groupby, pivot, melt, encode, add columns |
| **EDA** | Describe, correlations, hypothesis tests, data quality |
| **Visualization** | Histograms, scatter, bar, ROC curves, confusion matrix |
| **ML Workflows** | Classification, regression, time series forecasting |
| **Sales** | Is this week expected, a real change or noise? What does each month usually bring? What did a promotion add, and did sales dip after it? Daily or weekly sales, per retailer or product, with a promotion calendar |
Run `stats-compass-mcp list-tools` to see all available tools.
## How to Prompt
Start your message with **"Use stats compass to..."** — this tells the AI to use the Stats Compass tools instead of trying to write code or use other methods.
```
Use stats compass to load ~/Downloads/sales.csv and run EDA on it
Use stats compass to find my CSV files in Downloads
Use stats compass to clean the dataset and handle missing values
Use stats compass to create a histogram of the price column
Use stats compass to test if there's a significant difference in scores between group A and B
Use stats compass to train a classification model to predict churn
Use stats compass to load sell_out.xlsx and tell me if last week's sales at each retailer were unusual, leaving out the promotions in promo_calendar.csv
Use stats compass to measure what the June promotion added at Tesco, using promo_calendar.csv
```
> **Tip:** Without this prefix, some AI clients may try to write Python code or use shell commands instead of the Stats Compass tools — especially for tasks like finding files on your machine.
## Loading Files
**Local mode:** Start with "Use stats compass to load..." and provide the file path or folder.
```
Use stats compass to load the CSV at ~/Downloads/sales.csv
Use stats compass to find my data files in ~/Documents
```
**Remote/HTTP mode:** Use the upload feature (see below).
## Remote Server Mode
For Docker deployments or multi-client setups:
```bash
stats-compass-mcp serve --port 8000
```
`serve` binds `127.0.0.1` by default. To accept connections from other machines,
set a bearer token of at least 16 characters and bind a public address:
```bash
export STATS_COMPASS_AUTH_TOKEN="$(openssl rand -hex 24)"
export STATS_COMPASS_SECRET_KEY="$(openssl rand -hex 32)" # encrypts upload/download links
stats-compass-mcp serve --host 0.0.0.0 --port 8000
```
Clients send `Authorization: Bearer <token>`. Without a token the server refuses
a public address; `--no-auth` overrides that, with a warning, for a network you
trust. Each session reads only its own uploads and writes only its own exports.
Upload and download links carry an encrypted token that expires (downloads after
24 hours, `STATS_COMPASS_DOWNLOAD_TTL_SECONDS`), never the session id.
A session idle for 24 hours is removed, with its data, models and exported files
(`STATS_COMPASS_SESSION_IDLE_HOURS`; `0` turns it off). A session in the middle of
a tool call is never removed. A server that embeds the tools runs its own sweep
with `SessionManager.evict_idle(max_idle)`.
### File Uploads
When running remotely, users can upload files via browser:
<img src="./assets/demos/upload_screenshot.png" alt="File Upload Interface" width="500"/>
```
You: I want to upload a file
AI: Open this link to upload: http://localhost:8000/upload?session_id=abc123
[Upload in browser]
You: I uploaded sales.csv
AI: ✅ Loaded sales.csv (1,000 rows × 8 columns)
```
### Downloading Results
Export DataFrames, plots, and trained models:
```
You: Save the cleaned data as a CSV
AI: ✅ Saved. Download: http://localhost:8000/exports/.../cleaned_data.csv
```
### Connect Clients to Remote Server
**VS Code** (native HTTP support):
```json
{
"servers": {
"stats-compass": { "url": "http://localhost:8000/mcp" }
}
}
```
**Claude Desktop** (via [mcp-proxy](https://github.com/sparfenyuk/mcp-proxy)):
```json
{
"mcpServers": {
"stats-compass": {
"command": "uvx",
"args": ["mcp-proxy", "--transport", "streamablehttp", "http://localhost:8000/mcp"]
}
}
}
```
## Docker
```bash
docker run -p 8000:8000 -e STATS_COMPASS_SERVER_URL=https://your-domain.com stats-compass-mcp
```
## Client Compatibility
| Client | Status |
|--------|--------|
| Claude Desktop | ✅ Recommended |
| VS Code Copilot | ✅ Supported |
| Claude Code CLI | ✅ Supported |
| Cursor | ✅ Supported |
| GPT / Gemini | ⚠️ Partial |
## Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| `STATS_COMPASS_PORT` | `8000` | Server port |
| `STATS_COMPASS_SERVER_URL` | `http://localhost:8000` | Base URL for upload/download links |
| `STATS_COMPASS_MAX_UPLOAD_MB` | `50` | Max upload size |
## Development
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup.
## 🙏 Credits
Landing page template by **ArtleSa** (u/ArtleSa)
## License
MIT
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessUnresponsive