VisiData MCP Server
Provides data visualization, statistical analysis, and data transformation capabilities through VisiData's Python-based tools, including support for various data formats and advanced analytics features.
Enables advanced statistical analysis and distribution plotting capabilities including histogram, box, violin, and KDE plots through scipy integration.
Enables loading and analyzing data from SQLite database files through VisiData's data access functionality.
Supports loading and processing XML data files for analysis and conversion to other formats.
Enables loading and analyzing YAML data files with support for conversion to other data formats.
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., "@VisiData MCP Server create a correlation heatmap for my sales data"
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.
VisiData MCP Server
A Model Context Protocol (MCP) server that provides access to VisiData functionality with enhanced data visualization and analysis capabilities.
🚀 Features
📊 Data Visualization
create_correlation_heatmap- Generate correlation matrices with beautiful heatmap visualizationscreate_distribution_plots- Create statistical distribution plots (histogram, box, violin, kde)create_graph- Custom graphs (scatter, line, bar, histogram) with categorical grouping support
🧠 Advanced Skills Analysis
parse_skills_column- Parse comma-separated skills into individual skills with one-hot encodinganalyze_skills_by_location- Comprehensive skills frequency and distribution analysis by locationcreate_skills_location_heatmap- Visual heatmap showing skills distribution across locationsanalyze_salary_by_location_and_skills- Advanced salary statistics by location and skills combination
🔧 Core Data Tools
load_data- Load and inspect data files from various formatsget_data_sample- Get a preview of your data with configurable row countanalyze_data- Perform comprehensive data analysis with column types and statisticsconvert_data- Convert between different data formats (CSV ↔ JSON ↔ Excel, etc.)filter_data- Filter data based on conditions (equals, contains, greater/less than)get_column_stats- Get detailed statistics for specific columnssort_data- Sort data by any column in ascending or descending order
Related MCP server: MCP Tabular Data Analysis Server
📦 Installation
🚀 Quick Install (Recommended)
npm install -g @moeloubani/visidata-mcp@betaPrerequisites: Python 3.10+ (the installer will check and guide you if needed)
Alternative: Python Install
pip install visidata-mcpDevelopment Install
git clone https://github.com/moeloubani/visidata-mcp.git
cd visidata-mcp
pip install -e .⚙️ Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"visidata": {
"command": "visidata-mcp"
}
}
}Cursor AI
Create .cursor/mcp.json in your project:
{
"mcpServers": {
"visidata": {
"command": "visidata-mcp"
}
}
}Restart your AI application after configuration changes.
🎯 Example Usage
Data Visualization
# Create a correlation heatmap
create_correlation_heatmap("sales_data.csv", "correlation_heatmap.png")
# Generate distribution plots for all numeric columns
create_distribution_plots("sales_data.csv", "distributions.png", plot_type="histogram")
# Create a scatter plot with categorical grouping
create_graph("sales_data.csv", "price", "sales", "scatter_plot.png",
graph_type="scatter", category_column="region")Skills Analysis
# Parse comma-separated skills into individual columns
parse_skills_column("jobs.csv", "required_skills", "skills_parsed.csv")
# Analyze skills distribution by location
analyze_skills_by_location("jobs.csv", "required_skills", "location", "skills_analysis.json")
# Create skills-location heatmap
create_skills_location_heatmap("jobs.csv", "required_skills", "location", "skills_heatmap.png")
# Comprehensive salary analysis
analyze_salary_by_location_and_skills("jobs.csv", "salary", "location", "required_skills", "salary_analysis.xlsx")Basic Data Operations
# Load and analyze data
load_data("data.csv")
get_data_sample("data.csv", 10)
analyze_data("data.csv")
# Transform data
convert_data("data.csv", "data.json")
filter_data("data.csv", "revenue", "greater_than", "1000", "high_revenue.csv")
sort_data("data.csv", "date", False, "sorted_data.csv")📊 Supported Data Formats
Spreadsheets: CSV, TSV, Excel (XLSX/XLS)
Structured Data: JSON, JSONL, XML, YAML
Databases: SQLite
Scientific: HDF5, Parquet, Arrow
Archives: ZIP, TAR, GZ, BZ2, XZ
Web: HTML tables
🔧 Troubleshooting
Common Issues
"No module named 'matplotlib'"
Make sure you're using the correct MCP server path
For local development:
/path/to/visidata-mcp/venv/bin/visidata-mcpRestart your AI application after configuration changes
"0 tools available"
Verify the MCP server path in your configuration
Check that Python 3.10+ is installed
Restart your AI application completely
Verification
Test your installation:
# Check if server starts
visidata-mcp
# Test with Python
python -c "from visidata_mcp.server import main; print('✅ Server ready')"🎨 Key Features
✅ Complete visualization support with matplotlib, seaborn, and scipy
✅ Advanced skills analysis for job market and HR data
✅ Skills-location correlation analysis and visualization
✅ Salary analysis by location and skills combination
✅ Enhanced error handling with dependency validation
✅ Publication-ready visualizations (300 DPI PNG output)
📈 Use Cases
Job Market Analysis
Skills demand analysis by geographic location
Salary benchmarking across locations and skill sets
Market trend visualization with correlation analysis
Data Science Workflows
Complete statistical analysis pipeline
Publication-ready visualizations
Advanced text processing for categorical data
Business Intelligence
Location-based performance analysis
Skills gap identification
Compensation analysis and benchmarking
🛠 Development
# Install for development
git clone https://github.com/moeloubani/visidata-mcp.git
cd visidata-mcp
pip install -e .
# Build package
python -m build
# Run tests
python -c "from visidata_mcp.server import main; print('✅ Ready')"📄 License
MIT License - see LICENSE for details.
🔗 Links
Available Tools
15 toolsanalyze_dataC
Perform basic analysis on a dataset.
Args: file_path: Path to the data file
Returns: Analysis results including statistics and data types
Inputs: file_path (required). Returns: result
analyze_salary_by_location_and_skillsC
Analyze salary statistics by location and skills combination.
Args: file_path: Path to the data file salary_column: Column name containing salary information location_column: Column name containing location information skills_column: Column name containing comma-separated skills output_path: Optional path to save the analysis results
Returns: Salary analysis by location and skills
Inputs: file_path (required), salary_column (required), location_column (required), skills_column (required), +1 more. Returns: result
analyze_skills_by_locationC
Analyze skills frequency and distribution by location.
Args: file_path: Path to the data file skills_column: Column name containing comma-separated skills location_column: Column name containing location information output_path: Optional path to save the analysis results
Returns: Skills analysis by location
Inputs: file_path (required), skills_column (required), location_column (required), output_path. Returns: result
convert_dataC
Convert data from one format to another using pandas.
Args: input_path: Path to the input data file output_path: Path for the output file output_format: Target format (csv, json, xlsx, etc.)
Returns: Success message or error details
Inputs: input_path (required), output_path (required), output_format. Returns: result
create_correlation_heatmapB
Create a correlation heatmap from numeric columns in the dataset.
Args: file_path: Path to the data file output_path: Path where to save the heatmap image columns: Optional list of specific columns to include (if None, uses all numeric columns)
Returns: Information about the created heatmap
Inputs: file_path (required), output_path (required), columns. Returns: result
create_distribution_plotsC
Create distribution plots for numeric columns.
Args: file_path: Path to the data file output_path: Path where to save the distribution plots columns: Optional list of specific columns to plot (if None, uses all numeric columns) plot_type: Type of distribution plot (histogram, box, violin, kde)
Returns: Information about the created distribution plots
Inputs: file_path (required), output_path (required), columns, plot_type. Returns: result
create_graphB
Create a graph/plot from data using matplotlib/seaborn.
Args: file_path: Path to the data file x_column: Column name for x-axis (must be numeric) y_column: Column name for y-axis (must be numeric) output_path: Path where to save the graph image graph_type: Type of graph (scatter, line, bar, histogram) category_column: Optional categorical column for grouping/coloring
Returns: Information about the created graph
Inputs: file_path (required), x_column (required), y_column (required), output_path (required), +2 more. Returns: result
create_skills_location_heatmapB
Create a heatmap showing skills distribution across locations.
Args: file_path: Path to the data file skills_column: Column name containing comma-separated skills location_column: Column name containing location information output_path: Path where to save the heatmap image top_skills: Number of top skills to include (default: 15) top_locations: Number of top locations to include (default: 10)
Returns: Information about the created skills-location heatmap
Inputs: file_path (required), skills_column (required), location_column (required), output_path (required), +2 more. Returns: result
filter_dataC
Filter data based on a condition.
Args: file_path: Path to the data file column: Column name to filter on condition: Filter condition (equals, contains, greater_than, less_than) value: Value to filter by output_path: Optional path to save filtered data
Returns: Information about the filtered data
Inputs: file_path (required), column (required), condition (required), value (required), +1 more. Returns: result
get_column_statsC
Get statistics for a specific column.
Args: file_path: Path to the data file column: Column name to analyze
Returns: Column statistics in JSON format
Inputs: file_path (required), column (required). Returns: result
get_data_sampleB
Get a sample of data from a file.
Args: file_path: Path to the data file rows: Number of rows to return (default: 10)
Returns: Sample data in JSON format
Inputs: file_path (required), rows. Returns: result
get_supported_formatsA
Get a list of supported file formats in VisiData.
Returns: List of supported formats and their descriptions
Inputs: no named parameters. Returns: result
load_dataC
Load data from a file using VisiData.
Args: file_path: Path to the data file file_type: Optional file type hint (csv, json, xlsx, etc.)
Returns: String representation of the loaded data structure
Inputs: file_path (required), file_type. Returns: result
parse_skills_columnB
Parse comma-separated skills into individual skills and create one-hot encoding.
Args: file_path: Path to the data file skills_column: Column name containing comma-separated skills output_path: Optional path to save the processed data
Returns: Information about the parsed skills data
Inputs: file_path (required), skills_column (required), output_path. Returns: result
sort_dataB
Sort data by a specific column.
Args: file_path: Path to the data file column: Column name to sort by descending: Sort in descending order (default: False) output_path: Optional path to save sorted data
Returns: Information about the sorted data
Inputs: file_path (required), column (required), descending, output_path. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
There is significant functional overlap between tools, particularly among the analysis and visualization tools. For example, 'analyze_data', 'analyze_salary_by_location_and_skills', 'analyze_skills_by_location', 'get_column_stats', and 'create_graph' all perform data analysis with unclear boundaries. However, the descriptions help differentiate some specific use cases like salary analysis or skills parsing.
Most tools follow a consistent verb_noun pattern (e.g., 'analyze_data', 'convert_data', 'filter_data', 'sort_data', 'load_data'). There are minor deviations with tools like 'get_column_stats' and 'get_data_sample' using 'get_' prefix instead of action verbs, and 'parse_skills_column' uses 'parse_' rather than 'analyze_' or 'process_', but overall the naming is readable and predictable.
With 15 tools, the count is slightly high but reasonable for a data analysis server covering loading, conversion, filtering, sorting, analysis, and visualization. It's borderline heavy but each tool appears to serve a specific function in the data workflow, though some redundancy exists.
The toolset provides comprehensive coverage for data analysis workflows including loading, conversion, filtering, sorting, sampling, statistical analysis, and visualization. Minor gaps exist such as no explicit data cleaning or transformation tools beyond parsing skills, and no update/delete operations for datasets, but agents can work around these with the available tools.
Maintenance
Related MCP Connectors
Interactive data visualization and executive PDF dashboards for ChatGPT, Claude, and Cursor.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Ask questions about a CSV in plain English and get answers, charts and cleaned data back.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to preprocess, analyze, and visualize CSV data through comprehensive tools for data manipulation, statistical analysis, and graph generation.3-
- FlicenseAqualityDmaintenanceEnables comprehensive analysis of CSV files and SQLite databases through tools for statistics, correlations, anomaly detection, pivot tables, time series analysis, visualization, and automated insights discovery.16-
- FlicenseNot gradedqualityDmaintenanceEnables conversational analysis of CSV and Parquet files through natural language, providing statistics, summaries, data type information, and comprehensive multi-step data analysis.-
- AlicenseAqualityDmaintenanceEnables loading and statistical analysis of .xlsx and .csv files with visualization capabilities using matplotlib and plotly to generate various graphs and charts.21MIT