name: data-convert
description: Convert between CSV, TSV, Excel, JSONL, Parquet, and other tabular formats
user-invocable: true
argument-hint: " [format]"
allowed-tools: [mcp__qsv__qsv_sniff, mcp__qsv__qsv_count, mcp__qsv__qsv_headers, mcp__qsv__qsv_index, mcp__qsv__qsv_command, mcp__qsv__qsv_to_parquet, mcp__qsv__qsv_list_files, mcp__qsv__qsv_search_tools, mcp__qsv__qsv_get_working_dir, mcp__qsv__qsv_set_working_dir]
Data Convert
Convert tabular data files between formats.
Cowork note: If relative paths don't resolve, call
mcp__qsv__qsv_get_working_dirandmcp__qsv__qsv_set_working_dirto sync the working directory.
Supported Conversions
Input Formats (auto-detected)
- CSV (
.csv), TSV (.tsv/.tab), SSV (.ssv) - Excel (
.xlsx,.xls,.xlsm,.xlsb) - OpenDocument (
.ods) - JSONL/NDJSON (
.jsonl,.ndjson) - Snappy-compressed variants (
.csv.sz, etc.)
Output Formats
| Format | Command | Extension |
|---|---|---|
| CSV | select (identity) or fmt |
.csv |
| TSV | fmt --out-delimiter '\t' |
.tsv |
| JSONL | tojsonl |
.jsonl |
| JSON | slice --json |
.json |
| Parquet | mcp__qsv__qsv_to_parquet (core tool) |
.parquet |
| XLSX | to xlsx (via mcp__qsv__qsv_command) |
.xlsx |
| ODS | to ods (via mcp__qsv__qsv_command) |
.ods |
| SQLite | to sqlite (via mcp__qsv__qsv_command) |
.db |
| PostgreSQL | to postgres (via mcp__qsv__qsv_command) |
N/A |
| Data Package | to datapackage (via mcp__qsv__qsv_command) |
.json |
Steps
Index: Run
mcp__qsv__qsv_indexon the file for fast random access in subsequent steps.Detect source format: Run
mcp__qsv__qsv_sniffto identify the input format, delimiter, and encoding.Convert: Use the appropriate command based on the target format:
To CSV (from Excel/JSONL): The MCP server handles this automatically when you pass non-CSV files to any qsv tool. Use
mcp__qsv__qsv_commandwithexcelfor explicit control over sheet selection.To TSV: Use
mcp__qsv__qsv_commandwithcommand: "fmt",options: {"out-delimiter": "\t"}.To JSONL: Use
mcp__qsv__qsv_commandwithcommand: "tojsonl".To Parquet (single file): Use
mcp__qsv__qsv_to_parquet(core tool) — auto-generates stats cache and Polars schema for optimal type inference.To Parquet (batch): Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "parquet",destination: "output_dir"for batch conversion with explicit compression control.To XLSX: Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "xlsx",destination: "output.xlsx".To ODS: Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "ods",destination: "output.ods".To SQLite: Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "sqlite",destination: "output.db".To PostgreSQL: Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "postgres",destination: "connection_string".To Data Package: Use
mcp__qsv__qsv_commandwithcommand: "to",subcommand: "datapackage",destination: "output.json".
Verify output: Run
mcp__qsv__qsv_counton the output (if CSV-based) to confirm row count matches input.
Notes
- Excel conversion: Use
--sheetto specify which sheet to convert (default: first sheet) - JSONL output respects data types from stats cache - run
stats --stats-jsonlfirst for better type inference - Parquet conversion preserves data types efficiently and produces smaller files
- For CSV -> CSV reformatting (change delimiter, quoting), use
fmtcommand - Large Excel files may take longer to convert - the MCP server handles this transparently
- When converting multiple sheets from Excel, run
excelwith--sheetfor each sheet