MCP File Analyzer
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 File AnalyzerSummarize sales.csv and show the first 5 rows"
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 File Analyzer: Complete Setup & Usage Guide
This guide will walk you through setting up a Model Context Protocol (MCP) server that can analyze CSV and Parquet files, and connecting it to Claude Desktop for natural language data analysis.
๐ฏ What You'll Build
A powerful data analysis tool that allows Claude to:
๐ Read and analyze CSV/Parquet files
๐ Generate statistical summaries
๐ Show data previews and structure
๐ง Create sample datasets
๐ฌ Answer natural language questions about your data
Table of Contents
What is MCP?
Model Context Protocol (MCP) is a standardized way to connect AI assistants like Claude to external tools and data sources. It allows you to:
๐ Give Claude access to your local files (securely)
๐ ๏ธ Create custom tools that Claude can use
๐ Build reusable AI workflows
๐ Keep your data secure and local (no API keys needed!)
Quick Start
โก For the Impatient
# Clone or create project directory
mkdir mcp-file-analyzer && cd mcp-file-analyzer
# Set up virtual environment
python3 -m venv .venv && source .venv/bin/activate
# Install dependencies
pip install mcp>=1.0.0 pandas>=2.0.0 pyarrow>=10.0.0
# Create and test the server (copy main.py and client.py from this repo)
python main.py # Start server (Ctrl+C to stop)
python client.py # Test the connection
# Configure Claude Desktop (see detailed steps below)Prerequisites
Before you begin, make sure you have:
Python 3.8 or higher installed
pip (Python package manager)
Claude Desktop installed (download here)
macOS, Windows, or Linux (Claude Desktop support varies)
Check your Python version:
python3 --version # Should be 3.8+Project Setup
Step 1: Create Project and Virtual Environment
# Create project directory
mkdir mcp-file-analyzer
cd mcp-file-analyzer
# Create virtual environment
python3 -m venv .venv
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activateStep 2: Install Dependencies
Create requirements.txt:
# Core dependencies for MCP File Analyzer
mcp>=1.0.0
pandas>=2.0.0
pyarrow>=10.0.0
# HTTP client dependencies (optional)
httpx>=0.27.0
# Development dependencies (optional)
# pytest>=7.0.0
# black>=23.0.0
# flake8>=6.0.0Install dependencies:
pip install -r requirements.txtStep 3: Create Project Files
Your project needs these core files:
main.py - The MCP server
client.py - Testing client
requirements.txt - Dependencies
run_mcp_server.sh - Launcher script for Claude Desktop
claude_desktop_config.json - Claude Desktop configuration
Step 4: Create Helper Scripts
Create activate_env.sh for easy environment activation:
#!/bin/bash
echo "๐ Activating virtual environment..."
source .venv/bin/activate
echo "โ
Virtual environment activated!"
echo "๐ฆ Installed packages:"
pip list --format=columns
echo ""
echo "๐ฏ Quick start commands:"
echo " - Run MCP server: python main.py"
echo " - Run demo client: python client.py"
echo " - Interactive client: python client.py interactive"Make it executable:
chmod +x activate_env.shClaude Desktop Integration
๐ฏ Method 1: Direct Integration (Recommended)
Step 1: Create Launcher Script
Create run_mcp_server.sh:
#!/bin/bash
# MCP Server Launcher for Claude Desktop
# Get the directory where this script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# Change to the script directory
cd "$SCRIPT_DIR"
# Activate the virtual environment
source .venv/bin/activate
# Run the MCP server
python main.pyMake it executable:
chmod +x run_mcp_server.shStep 2: Create Claude Desktop Configuration
Create claude_desktop_config.json:
{
"mcpServers": {
"file_analyzer": {
"command": "/ABSOLUTE/PATH/TO/YOUR/PROJECT/run_mcp_server.sh",
"args": []
}
}
}Important: Replace /ABSOLUTE/PATH/TO/YOUR/PROJECT with your actual project path. Get it with:
pwd # Copy this outputStep 3: Install Configuration in Claude Desktop
Copy the configuration to Claude Desktop:
macOS:
cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
copy claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.jsonLinux:
cp claude_desktop_config.json ~/.config/claude/claude_desktop_config.jsonStep 4: Restart Claude Desktop
Quit Claude Desktop completely
Relaunch the application
Look for the tool icon (๐จ) in the interface
๐ Method 2: HTTP Server (Alternative)
For web-based testing and debugging, you can also run an HTTP version:
# Install additional dependencies
pip install uvicorn fastapi
# Start HTTP server
python http_server.py
# Test with HTTP client
python http_client.py
# Access web interface
open http://localhost:8000/docsUsage Examples
๐ Getting Started with Claude
Once integrated, try these commands in Claude Desktop:
Basic Commands
Check available tools:
What MCP tools do you have available?List data files:
What data files do I have available?Analyze a CSV file:
Can you summarize the sample.csv file?Advanced Analysis
Data exploration:
Show me the first 5 rows of sample.csv and tell me about the data structureStatistical analysis:
Give me statistical information about sample.csv - what are the data types and any interesting patterns?Create new data:
Create a new CSV file called "customer_data.csv" with 50 rows of sample customer dataComprehensive analysis:
List all my data files, pick the most interesting one, and give me a complete analysis including:
- File structure and dimensions
- Data types for each column
- First few rows as examples
- Statistical summary for numeric columns๐ Expected Results
Claude should respond with actual data from your files:
File summaries: "CSV file 'sample.csv' has 5 rows and 4 columns. Columns: id, name, email, signup_date"
Data previews: Formatted tables showing your actual data
Statistical analysis: Mean, median, standard deviation for numeric columns
Data insights: Observations about patterns in your data
๐งช Sample Data Included
Your MCP server automatically creates sample data:
sample.csv:
id,name,email,signup_date
1,Alice Johnson,alice@example.com,2023-01-15
2,Bob Smith,bob@example.com,2023-02-22
3,Carol Lee,carol@example.com,2023-03-10
4,David Wu,david@example.com,2023-04-18
5,Eva Brown,eva@example.com,2023-05-30Testing & Verification
๐ง Test the Server Directly
# Activate environment
source .venv/bin/activate
# Test server and client
python client.pyExpected output:
๐ Starting MCP File Analyzer Client Demo
==================================================
โ
Connected to MCP server successfully!
๐ง Available tools:
- list_data_files
- summarize_csv_file
- summarize_parquet_file
- analyze_csv_data
- create_sample_data
๐ Listing data files:
๐ Result: Available data files: sample.csv, sample.parquet
๐ Summarizing CSV file:
๐ Result: CSV file 'sample.csv' has 5 rows and 4 columns...๐ฎ Interactive Mode
python client.py interactiveTry these commands:
list_filessummarize sample.csvanalyze sample.csv headcreate test_data.csv 10
โ Verify Claude Integration
In Claude Desktop, you should see:
Tool icon (๐จ) in the interface
Available tools when you ask "What MCP tools do you have?"
Successful responses to data analysis questions
Troubleshooting
๐ Common Issues
1. No Tool Icon in Claude Desktop
Symptoms: Claude Desktop starts but no MCP tools appear
Solutions:
# Check config file location
ls -la ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Verify JSON syntax
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Test launcher script
./run_mcp_server.sh
# Check permissions
chmod +x run_mcp_server.sh2. "Server Not Found" Error
Symptoms: Claude shows error about server connection
Solutions:
# Verify absolute path in config
pwd # Make sure this matches your config
# Test server independently
source .venv/bin/activate
python main.py
# Check virtual environment
which python # Should show .venv path3. "Module Not Found" Error
Symptoms: Import errors when starting server
Solutions:
# Reinstall dependencies
source .venv/bin/activate
pip install -r requirements.txt
# Verify installation
pip list | grep mcp
pip list | grep pandas
pip list | grep pyarrow4. Tools Appear But Don't Work
Symptoms: Tools listed but return errors
Solutions:
# Check data directory
ls -la data/
# Recreate sample data
rm -rf data/
python main.py # Will recreate sample files
# Test with client
python client.py๐ Debug Steps
Test each component independently:
# Test server python main.py # Test client (in another terminal) python client.py # Test launcher ./run_mcp_server.shCheck file permissions:
ls -la *.py *.sh chmod +x run_mcp_server.shValidate configuration:
# Check JSON syntax python -c "import json; print(json.load(open('claude_desktop_config.json')))"Check Claude Desktop logs:
Look for error messages in Claude Desktop
Check system logs for permission issues
Extending the Server
๐ ๏ธ Adding New Tools
Create custom tools with the @mcp.tool() decorator:
@mcp.tool()
def analyze_excel_file(filename: str) -> str:
"""
Analyze an Excel file and return summary information.
Args:
filename: Name of the Excel file (e.g., 'data.xlsx')
Returns:
A string describing the file's contents.
"""
import pandas as pd
file_path = DATA_DIR / filename
# Read Excel file
df = pd.read_excel(file_path)
return f"Excel file '{filename}' has {len(df)} rows and {len(df.columns)} columns"๐ Adding Resources
Provide static information to Claude:
@mcp.resource("data://file-formats")
def get_supported_formats() -> str:
"""List supported file formats."""
formats = {
"supported_formats": ["CSV", "Parquet", "Excel", "JSON"],
"max_file_size": "100MB",
"encoding": "UTF-8"
}
return json.dumps(formats, indent=2)๐ Adding Database Support
Connect to databases:
import sqlite3
@mcp.tool()
def query_database(query: str) -> str:
"""
Execute a SQL query on the local database.
Args:
query: SQL query to execute
Returns:
Query results as formatted text.
"""
conn = sqlite3.connect('data/database.db')
df = pd.read_sql_query(query, conn)
conn.close()
return df.to_string()Project Structure
Your complete project should look like this:
mcp-file-analyzer/
โโโ .venv/ # Virtual environment
โโโ data/ # Data files (auto-created)
โ โโโ sample.csv # Sample CSV data
โ โโโ sample.parquet # Sample Parquet data
โ โโโ ... # Your data files
โโโ main.py # MCP server (stdio)
โโโ client.py # Test client (stdio)
โโโ http_server.py # HTTP MCP server (optional)
โโโ http_client.py # HTTP test client (optional)
โโโ requirements.txt # Python dependencies
โโโ activate_env.sh # Environment activation script
โโโ run_mcp_server.sh # Claude Desktop launcher
โโโ claude_desktop_config.json # Claude Desktop config
โโโ .gitignore # Git ignore file
โโโ README.md # This file๐ Key Files Explained
main.py: MCP server that provides file analysis tools
client.py: Test client to verify server functionality
run_mcp_server.sh: Launcher script for Claude Desktop integration
claude_desktop_config.json: Configuration for Claude Desktop
requirements.txt: Python package dependencies
data/: Directory containing your data files
Next Steps
๐ After Setup
Add your own data - Copy CSV/Parquet files to the
data/directoryExperiment with Claude - Try complex data analysis questions
Create custom tools - Build tools specific to your workflow
Explore advanced features - Add database connections, web APIs, etc.
๐ก Ideas for Enhancement
Excel support - Add tools for .xlsx files
Data visualization - Generate charts and graphs
Database integration - Connect to SQL databases
API connections - Fetch data from web APIs
Machine learning - Add prediction and analysis tools
File monitoring - Watch directories for new data files
๐ Useful Resources
Claude Desktop Integration
To use this MCP server from Claude Desktop (macOS):
Make the launcher script executable:
chmod +x /Users/gaohan/Downloads/file_analyzer-main/run_mcp_server.sh
Natural Language Interaction Testing with Claude Desktop
File listing
Prompt:
โPlease list all available data files from thefile_analyzerMCP server.โBehavior:
Claude called thelist_data_filestool and returned the same set of files as the Python client:client_generated.csv,generated_test.csv,sample.csv,sample.parquet.
CSV summarization
Prompt:
โSummarize the structure ofsample.csv(row count, column count, column names, and data types).โBehavior:
Claude invokedsummarize_csv_filewith{"filename": "sample.csv"}and replied that the file has 5 rows and 4 columns (id,name,email,signup_date) with dtypes matching the pandas output:idโint64, the others โobject.
This matches exactly what I see when runningpython client.py.
Data analysis (describe / head / info)
Prompts (asked in separate turns):
โRun a describe analysis on
sample.csv.โ
โShow me the first 5 rows ofsample.csv.โ
โGive me the pandas info summary forsample.csv.โBehavior:
Claude mapped these toanalyze_csv_datawithoperation="describe","head", and"info"respectively.
The numeric summary forid(count 5, mean 3, std โ 1.58, min 1, max 5) and the printed head/info are the same as the outputs from the interactive Python client.
Data creation
Prompt:
โCreate a new sample CSV callednew_sample.csvwith 5 rows of data.โBehavior:
Claude usedcreate_sample_datawith{"filename": "new_sample.csv", "rows": 5}and confirmed that the file was created under thedata/directory. The path and row count match what I see on disk and in the command-line client.
Error handling / edge cases
Prompts:
โSummarize a CSV file named
missing.csv.โ
โAnalyzesample.csvwithout specifying the operation.โBehavior:
For the missing file, Claude surfaced the serverโs error message:Error: CSV file 'missing.csv' does not exist in data directory.For the incomplete analyze command, it reported the usage hint
(analyze <filename> <operation>) and listed the supported operations (describe,head,info,columns).
This matches the edge-case behavior tested intest.py.
3. Performance Analysis and Comparison
3.1 Response time: direct client vs. Claude Desktop
For simple operations on the small sample dataset (5 rows, 4 columns), the
direct Python client (python client.py / python test.py) returns almost
instantly โ typically within a fraction of a second for:
list_data_filessummarize_csv_file("sample.csv")analyze_csv_data("sample.csv", "head" | "info" | "describe")create_sample_data(..., rows=5)
When the same operations are triggered via Claude Desktop, there is a small but noticeable overhead. Claude has to:
parse the userโs natural-language request,
decide which MCP tool to call and with which arguments,
send the request over the MCP stdio connection, and
render the response back into a chat-style answer.
In practice this adds a few hundred milliseconds to around a second, depending on the complexity of the prompt and Claudeโs own model latency. Because all file I/O and pandas work happen locally, the extra delay is dominated by the LLM and message-passing overhead, not by the MCP server itself.
3.2 Natural language vs. programmatic tool invocation
Programmatic calls (via client.py or the automated tests in test.py) are:
Deterministic โ arguments are explicit (
filename,operation),Strictly validated โ the client prints usage errors such as
Usage: analyze <filename> <operation>when the user forgets an argument,Easy to automate โ suitable for CI or regression tests.
Natural-language use through Claude Desktop is more flexible but also a bit less predictable:
It is much easier for a non-technical user to type
โSummarize the structure ofsample.csvโ
than to remember the exact CLI syntax.However, ambiguous prompts can lead to small misunderstandings. For example, a request like โsummarize fileโ does not specify the extension, and the server correctly responds with an error asking for โ.csv or .parquetโ.
For well-phrased prompts, Claude reliably maps questions to the right tools (
list_data_files,summarize_csv_file,analyze_csv_data, etc.), and the outputs line up with what the Python client shows.
3.3 User experience and practical applications
From a user-experience perspective:
The Python client is ideal for developers: it exposes exact tool names, arguments, and raw outputs (JSON or plain tables).
The Claude integration is better for โconversationalโ analysis:
A user can ask a high-level question (e.g., โWhat does this CSV look like? Any obvious patterns?โ), and Claude will combine MCP tool results with its own narrative explanation.
Multi-step interactions like โlist files โ pick a file โ show head โ describe columnsโ feel natural inside a chat thread.
In a real-world workflow, a typical pattern would be:
Use Claude + MCP for initial exploration and quick questions.
Switch to direct Python or notebooks when building more complex pipelines or when results need to be scripted and version-controlled.
3.4 Limitations and potential improvements
A few limitations of the current system and ideas for improvement:
Dataset size: the tools assume relatively small CSV/Parquet files that fit in memory. For larger datasets, the server would need chunked reading, sampling, or out-of-core processing.
Limited operations: current tools focus on listing files, summarization, and basic pandas analysis. In the future, it would be useful to add:
filtering and simple query tools,
group-by/aggregation helpers,
basic visualization (e.g., histograms or scatter plots exported as files).
Error reporting: error messages are clear but minimal. More structured error codes and suggestions (e.g., โdid you mean
sample.csv?โ) could make the Claude interaction smoother.Claude integration robustness: on some runs, Claude Desktop logs show unrelated CSP/UI warnings. Although the MCP server and Python clients work correctly, the integration could be hardened by:
adding more logging around MCP startup and shutdown,
providing clearer instructions for regenerating the config and troubleshooting local desktop issues.
๐ Congratulations!
You now have a fully functional MCP server that can:
โ
Analyze CSV and Parquet files
โ
Respond to natural language queries through Claude
โ
Create and manipulate data files
โ
Provide detailed statistical analysis
โ
Work entirely offline (no API keys required!)
Happy data analyzing! ๐๐ค
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CindyGao8/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server