Enables querying and analyzing SQLite databases, including executing SQL queries, listing tables and schemas, and performing data analysis operations on database contents.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Tabular Data Analysis Servershow me the top 5 sales categories from sample_sales.csv"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Tabular Data Analysis Server
A Model Context Protocol (MCP) server that provides tools for analyzing numeric and tabular data. Works with CSV files and SQLite databases.
Demo
auto_insights
data_quality_report
analyze_time_series
Features
Core Tools
Tool | Description |
| List available CSV and SQLite files in the data directory |
| Generate statistics for a dataset (shape, types, distributions, missing values) |
| Find outliers using Z-score or IQR methods |
| Calculate correlation matrices between numeric columns |
| Filter data using various operators (eq, gt, lt, contains, etc.) |
| Group data and compute aggregations (sum, mean, count, etc.) |
| Execute SQL queries on SQLite databases |
| List all tables and schemas in a SQLite database |
Analytics Tools
Tool | Description |
| Create Excel-style pivot tables with flexible aggregations |
| Data quality assessment with scores and recommendations |
| Time series analysis with trends, seasonality, and moving averages |
| Create visualizations (bar, line, scatter, histogram, pie, box plots) |
| Join/merge two datasets together (inner, left, right, outer joins) |
| Hypothesis testing (t-test, ANOVA, chi-squared, correlation tests) |
| Discover patterns and insights |
| Export filtered/transformed data to new CSV files |
Installation
Prerequisites
Python 3.10+
uv (recommended) or pip
Install with uv
cd mcp-tabular
uv syncInstall with pip
cd mcp-tabular
pip install -e .Usage
Running the Server Directly
# With uv
uv run mcp-tabular
# With pip installation
mcp-tabularConfigure with Claude Desktop
Locate your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add this configuration (replace
/Users/kirondeb/mcp-tabularwith your actual path):
{
"mcpServers": {
"tabular-data": {
"command": "/Users/kirondeb/mcp-tabular/.venv/bin/python",
"args": [
"-m",
"mcp_tabular.server"
]
}
}
}Restart Claude Desktop (quit and reopen)
Test by asking Claude: "Describe the dataset in data/sample_sales.csv"
See CONNECT_TO_CLAUDE_DESKTOP.md for detailed instructions and troubleshooting.
See TEST_PROMPTS.md for example prompts.
Sample Data
The project includes sample data for testing:
data/sample_sales.csv- Sales transaction datadata/sample.db- SQLite database with customers, orders, and products tables
To create the SQLite sample database:
python scripts/create_sample_db.pyPath Resolution
All file paths are resolved relative to the project root directory:
Relative paths like
data/sample_sales.csvwork from any working directoryAbsolute paths also work as expected
Paths resolve relative to where
mcp_tabularis installed
Tool Examples
List Data Files
List available data files:
list_data_files()Lists all CSV and SQLite files in the data directory with metadata.
Describe Dataset
Generate statistics for a dataset:
describe_dataset(file_path="data/sample_sales.csv")Includes shape, column types, numeric statistics (mean, std, median, skew, kurtosis), categorical value counts, and a sample preview.
Detect Anomalies
Find outliers in numeric columns:
detect_anomalies(
file_path="data/sample_sales.csv",
column="total_sales",
method="zscore",
threshold=3.0
)Supports zscore and iqr methods.
Compute Correlation
Calculate correlations between numeric columns:
compute_correlation(
file_path="data/sample_sales.csv",
method="pearson"
)Includes full correlation matrix and top correlations ranked by strength.
Filter Rows
Filter data based on conditions:
filter_rows(
file_path="data/sample_sales.csv",
column="category",
operator="eq",
value="Electronics"
)Operators: eq, ne, gt, gte, lt, lte, contains, startswith, endswith
Group & Aggregate
Group data and compute aggregations:
group_aggregate(
file_path="data/sample_sales.csv",
group_by=["category", "region"],
aggregations={"total_sales": ["sum", "mean"], "quantity": ["count"]}
)Query SQLite
Execute SQL queries on databases:
query_sqlite(
db_path="data/sample.db",
query="SELECT * FROM customers WHERE lifetime_value > 1000"
)List Tables
List tables and schemas in a SQLite database:
list_tables(db_path="data/sample.db")Advanced Analytics Examples
Create Pivot Table
Create Excel-style pivot tables:
create_pivot_table(
file_path="data/sample_sales.csv",
index=["region"],
columns=["category"],
values="total_sales",
aggfunc="sum"
)Data Quality Report
Generate a data quality assessment:
data_quality_report(file_path="data/sample_sales.csv")Includes completeness score, duplicate detection, outlier analysis, and an overall quality grade (A-F).
Time Series Analysis
Analyze trends and seasonality:
analyze_time_series(
file_path="data/sample_sales.csv",
date_column="order_date",
value_column="total_sales",
freq="M",
include_forecast=True
)Generate Charts
Create visualizations (returned as base64 images):
generate_chart(
file_path="data/sample_sales.csv",
chart_type="bar",
x_column="category",
y_column="total_sales",
title="Sales by Category"
)Supported chart types: bar, line, scatter, histogram, pie, box
Merge Datasets
Join or merge two datasets:
merge_datasets(
file_path_left="data/orders.csv",
file_path_right="data/customers.csv",
on=["customer_id"],
how="left"
)Statistical Testing
Run hypothesis tests:
statistical_test(
file_path="data/sample_sales.csv",
test_type="ttest_ind",
column1="total_sales",
group_column="region",
alpha=0.05
)Supported tests: ttest_ind, ttest_paired, chi_squared, anova, mann_whitney, pearson, spearman
Auto Insights
Discover patterns and insights:
auto_insights(file_path="data/sample_sales.csv")Includes insights about correlations, outliers, skewed distributions, missing data, and more.
Export Data
Export filtered data to a new CSV:
export_data(
file_path="data/sample_sales.csv",
output_name="electronics_sales",
filter_column="category",
filter_operator="eq",
filter_value="Electronics",
sort_by="total_sales",
sort_ascending=False
)Development
Run Tests
uv run pytestProject Structure
mcp-tabular/
├── src/
│ └── mcp_tabular/
│ ├── __init__.py
│ └── server.py # Main MCP server implementation
├── data/
│ ├── sample_sales.csv # Sample CSV data
│ └── sample.db # Sample SQLite database
├── scripts/
│ └── create_sample_db.py
├── pyproject.toml
├── claude_desktop_config.json
└── README.mdLicense
MIT
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.