Skip to main content
Glama
demo.py4.83 kB
#!/usr/bin/env python """ CSV MCP Server Demo Demonstrates the full capabilities of the CSV MCP Server. Run this to see all features in action. """ import asyncio import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) from src.csv_editor.tools.io_operations import load_csv_from_content from src.csv_editor.tools.transformations import filter_rows, sort_data from src.csv_editor.tools.analytics import get_statistics, profile_data from src.csv_editor.tools.validation import check_data_quality # Demo data DEMO_CSV = """employee_id,name,department,salary,years_experience,performance_rating 1001,Alice Johnson,Engineering,95000,5,4.5 1002,Bob Smith,Marketing,65000,3,3.8 1003,Charlie Davis,Engineering,105000,7,4.7 1004,Diana Wilson,Sales,72000,4,4.2 1005,Eve Martinez,Engineering,88000,4,4.1 1006,Frank Brown,Marketing,58000,2,3.5 1007,Grace Lee,Sales,78000,5,4.4 1008,Henry Taylor,Engineering,115000,10,4.9 1009,Iris Chen,Marketing,70000,4,4.0 1010,Jack White,Sales,68000,3,3.9 """ class Demo: @staticmethod def header(title: str): print(f"\n{'='*50}") print(f" {title}") print(f"{'='*50}") @staticmethod def success(msg: str): print(f"✅ {msg}") @staticmethod def info(msg: str): print(f"ℹ️ {msg}") @staticmethod def result(label: str, value: any): print(f" {label}: {value}") async def run_demo(): Demo.header("CSV MCP Server - Feature Demo") # Load data Demo.info("Loading employee data...") result = await load_csv_from_content(content=DEMO_CSV) if not result["success"]: print(f"Error loading data: {result.get('error')}") return session_id = result["session_id"] Demo.success(f"Loaded {result['rows_affected']} employees") # Data Quality Check Demo.header("Data Quality Assessment") quality = await check_data_quality(session_id=session_id) if quality["success"]: metrics = quality["quality_results"]["metrics"] Demo.result("Overall Score", f"{quality['quality_results']['overall_score']:.1f}%") Demo.result("Completeness", f"{metrics['completeness']:.1f}%") Demo.result("Uniqueness", f"{metrics['uniqueness']:.1f}%") Demo.result("Consistency", f"{metrics['consistency']:.1f}%") # Statistics Demo.header("Salary Statistics by Department") stats = await get_statistics( session_id=session_id, columns=["salary", "years_experience", "performance_rating"] ) if stats["success"]: salary_stats = stats["statistics"].get("salary", {}) Demo.result("Average Salary", f"${salary_stats.get('mean', 0):,.2f}") Demo.result("Salary Range", f"${salary_stats.get('min', 0):,.0f} - ${salary_stats.get('max', 0):,.0f}") Demo.result("Median Salary", f"${salary_stats.get('50%', 0):,.2f}") # Filter high performers Demo.header("High Performers Analysis") filtered = await filter_rows( session_id=session_id, conditions=[ {"column": "performance_rating", "operator": ">=", "value": 4.0}, {"column": "salary", "operator": ">", "value": 70000} ], mode="and" ) if filtered["success"]: Demo.success(f"Found {filtered['rows_after']} high performers") Demo.info(f"({filtered['rows_after']}/{filtered['rows_before']} = {filtered['rows_after']/filtered['rows_before']*100:.1f}% of employees)") # Profile the data Demo.header("Data Profile Summary") profile = await profile_data( session_id=session_id, include_correlations=True, include_outliers=False ) if profile["success"]: summary = profile["profile"]["summary"] Demo.result("Total Rows", summary["total_rows"]) Demo.result("Total Columns", summary["total_columns"]) Demo.result("Numeric Columns", summary["numeric_columns"]) Demo.result("Text Columns", summary["text_columns"]) # Show correlations if any if "correlations" in profile["profile"]: correlations = profile["profile"]["correlations"] if "significant_correlations" in correlations: Demo.info("\nSignificant Correlations:") for corr in correlations["significant_correlations"][:3]: Demo.result( f"{corr['column1']} ↔ {corr['column2']}", f"{corr['correlation']:.3f}" ) Demo.header("Demo Complete!") Demo.success("All features demonstrated successfully") Demo.info(f"Session ID: {session_id}") print() if __name__ == "__main__": print("\n🚀 Starting CSV MCP Server Demo...\n") asyncio.run(run_demo())

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/santoshray02/csv-editor'

If you have feedback or need assistance with the MCP directory API, please join our Discord server