mcp-csv-analyst
Click on "Deploy 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-csv-analystShow me the total revenue grouped by region in /data/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-csv-analyst
MCP server for querying and analyzing CSV files
Give Claude (or any MCP client) the ability to load, query, filter, aggregate, and analyze CSV data.
Features
csv_describe - Load a CSV and get schema, row count, column types, and statistics
csv_filter - Filter rows by column conditions (eq, gt, lt, contains, etc.)
csv_aggregate - Compute sum, avg, min, max, count, median on numeric columns
csv_group_by - Group by a column and aggregate another
csv_sample - Get sample rows with offset/limit
csv_unique - Get unique values and their counts for any column
Quick Start
With Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"csv-analyst": {
"command": "npx",
"args": ["-y", "mcp-csv-analyst"]
}
}
}With Claude Code
claude mcp add csv-analyst npx mcp-csv-analystManual Install
npm install -g mcp-csv-analystTools
csv_describe
Load a CSV file and get an overview of its structure.
Parameters:
file_path(string) - Absolute path to CSV file
csv_filter
Filter rows by a column condition.
Parameters:
file_path(string) - Path to CSVcolumn(string) - Column to filter onoperator(enum) -eq,neq,gt,gte,lt,lte,contains,starts_withvalue(string) - Value to comparelimit(number, optional) - Max rows to return (default 50)sort_by(string, optional) - Column to sort bysort_dir(enum, optional) -ascordesc
csv_aggregate
Compute an aggregate on a numeric column.
Parameters:
file_path(string) - Path to CSVcolumn(string) - Numeric columnoperation(enum) -sum,avg,min,max,count,median
csv_group_by
Group rows and compute an aggregate.
Parameters:
file_path(string) - Path to CSVgroup_column(string) - Column to group byagg_column(string) - Column to aggregateoperation(enum) -sum,avg,count,min,max
csv_sample
Get sample rows from a CSV.
Parameters:
file_path(string) - Path to CSVcount(number, optional) - Number of rows (default 10)offset(number, optional) - Starting row offset
csv_unique
Get unique values with counts.
Parameters:
file_path(string) - Path to CSVcolumn(string) - Column namelimit(number, optional) - Max values (default 50)
Example Conversation
You: Analyze the sales data in /data/sales.csv
Claude: Let me look at the structure of your CSV first... Uses csv_describe to examine the file
The file has 10,000 rows with columns: date, product, region, quantity, price, total. Let me compute some key metrics... Uses csv_group_by to sum total by region Uses csv_aggregate to get the overall average price
License
MIT
Available Tools
6 toolscsv_aggregateB
Compute an aggregate (sum, avg, min, max, count, median) on a numeric column
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file | |
| column | Yes | Numeric column to aggregate | |
| operation | Yes | Aggregation function |
csv_describeB
Load a CSV file and return its schema, row count, and column statistics
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file |
csv_filterB
Filter CSV rows by a column condition. Returns matching rows as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file | |
| column | Yes | Column name to filter on | |
| operator | Yes | Comparison operator | |
| value | Yes | Value to compare against | |
| limit | No | Max rows to return (default 50) | |
| sort_by | No | Column to sort results by | |
| sort_dir | No | Sort direction | asc |
csv_group_byC
Group rows by a column and compute an aggregate on another column
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file | |
| group_column | Yes | Column to group by | |
| agg_column | Yes | Numeric column to aggregate | |
| operation | Yes | Aggregation function |
csv_sampleB
Get a sample of rows from a CSV file
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file | |
| count | No | Number of sample rows (default 10) | |
| offset | No | Row offset to start from |
csv_uniqueB
Get unique values in a column with their counts
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the CSV file | |
| column | Yes | Column name | |
| limit | No | Max unique values to return |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
csv_aggregate - First observed
csv_describe - First observed
csv_filter - First observed
csv_group_by - First observed
csv_sample - First observed
csv_unique
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no ambiguity: describe for metadata, filter for row selection, sample for sampling, unique for value analysis, aggregate for column calculations, and group_by for grouped aggregations. The descriptions make it easy to differentiate between similar-sounding tools like aggregate and group_by.
All tools follow a perfect 'csv_verb' pattern with consistent snake_case naming. The verbs (describe, filter, sample, unique, aggregate, group_by) are all action-oriented and clearly indicate what each tool does, creating a predictable and readable naming convention throughout.
Six tools is an ideal number for a CSV analysis server - enough to cover essential operations without being overwhelming. Each tool serves a distinct, valuable purpose in the data analysis workflow, making the count well-scoped and appropriate for the domain.
The toolset covers most essential CSV analysis operations well: inspection (describe), filtering (filter), sampling (sample), value analysis (unique), and aggregation (aggregate, group_by). A minor gap exists in transformation operations (like sorting, merging, or column manipulation), but agents can work around this with the provided tools for core analysis tasks.
Related MCP Connectors
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
ParseHub.dev is a hosted document-to-records service with a remote MCP server. Agents can upload a CSV, PDF, or Word file, summarize and analyze CSV data (filter, sort, group_by, and more), read text from PDF and Word files, extract attendees, agenda items, and action items from meeting notes, ask a question about an uploaded document, and store files as database records to list and read later. Each account sees only its own files and records. **Endpoint:** `https://parsehub.dev/mcp` (Streamable HTTP, stateless) **Auth:** API key in the `X-API-Key` header (keys start with `mcp_`), or `Authorization: Bearer <API key or JWT>`. Every request without credentials returns 401. **Plans:** Free (100 API requests/month, 1 document upload), or 5,000 requests/month on the $9/month or $42/year plan. Every MCP request counts toward the allowance. **Tools:** upload_csv, summarize_csv, analyze_csv, upload_document, read_document, extract_meeting_notes, ask_document, database_status, list_database_documents, get_database_document, store_document, extract_stored_meeting_notes, export_database (administrators only). Not affiliated with ParseHub (parsehub.com), the web-scraping tool. ParseHub.dev does not scrape websites. By Poietes LLC. Docs: https://parsehub.dev/guide#connect-via-mcp
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
MCP server that lets AI assistants use all OneSchema features exposed via the public API.