csv-mcp
The csv-mcp server provides a comprehensive set of tools for safely reading, analyzing, validating, and transforming CSV/TSV files within a sandboxed workspace directory. It offers the following capabilities:
List files (
list_csv_files): Recursively discover all CSV and TSV files in the workspace.Inspect (
inspect_csv): Auto-detect encoding, delimiter, headers, column types, and preview sample rows; report malformed rows.Preview/Read (
preview_csv/read_csv): Read a bounded slice of rows with optional column selection, offset, and limit.Query (
query_csv): Filter rows using operators (e.g., =, !=, >, contains, is_null, in), select columns, and sort results.Summarize (
summarize_csv): Group by columns and compute aggregations (count, sum, mean, min, max, median, unique_count).Validate (
validate_csv): Check schemas, data types, required fields, uniqueness, allowed values, and row structure.Compare (
compare_csv): Diff two CSV files by key columns to find added, removed, or changed rows.Create (
create_csv): Atomically create new CSV/TSV files with validated rows, column types, and formula injection protection.Append (
append_rows): Add validated rows to an existing file, with optional new output file.Update (
update_rows): Modify rows matching filters, with dry-run preview and output file support.Delete (
delete_rows): Remove rows matching filters, with dry-run option and mandatory non-empty filter.Clean (
clean_csv): Trim whitespace, change case (upper/lower), and deduplicate rows on selected columns.Merge (
merge_csv): Concatenate multiple files or join two files on keys (inner, left, right, outer).Custom Parsing: Control encoding, delimiter, quote character, decimal separator, null handling, column names/types, and date formats.
Safety and configuration features: All operations are restricted to a configured root directory, with path traversal and symlink protections; writes use atomic transactions with temporary files and SHA-256 verification; formula injection protection modes (escape, reject, preserve); configurable limits for file size, rows, columns, field length, and returned rows.
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., "@csv-mcplist CSV files in the workspace"
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.
CSV and Filesystem MCP
Stdio MCP servers for safely working with CSV/TSV files and general UTF-8 text files.
Run
uv sync
CSV_MCP_ROOT=/absolute/path/to/csv-workspace uv run csv-mcp
FILESYSTEM_MCP_ROOT=/absolute/path/to/workspace uv run filesystem-mcpMCP client configuration:
{
"mcpServers": {
"csv": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/csv-mcp", "run", "csv-mcp"],
"env": {"CSV_MCP_ROOT": "/absolute/path/to/csv-workspace"}
},
"filesystem": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/csv-mcp", "run", "filesystem-mcp"],
"env": {"FILESYSTEM_MCP_ROOT": "/absolute/path/to/workspace"}
}
}
}Related MCP server: Files MCP Server
LangChain agent
Set an OpenAI API key and point the agent at the CSV workspace:
export OPENAI_API_KEY=your-key
export CSV_MCP_ROOT=/absolute/path/to/csv-workspace
export FILESYSTEM_MCP_ROOT=/absolute/path/to/workspace
uv run csv-agentThis starts an interactive chat; use /quit to exit. For a single request:
uv run csv-agent "List the CSV files and summarize the sales data"The agent loads both MCP servers. If FILESYSTEM_MCP_ROOT is unset, it uses
CSV_MCP_ROOT so both toolsets operate on the same workspace.
The default model is openai:gpt-4o-mini. Override it with CSV_AGENT_MODEL, using a
LangChain provider:model identifier whose provider integration is installed.
A useful workspace layout is:
csv-workspace/
├── input/
├── output/
├── temporary/
└── backups/All paths are resolved below CSV_MCP_ROOT. Absolute paths, traversal, symlink escapes, URLs, and extensions other than .csv/.tsv are rejected.
Tools
Tool | Purpose |
| List available CSV/TSV files recursively |
| Detect encoding/delimiter and report structure, samples, inferred types, and warnings |
| Read a bounded page and optional columns |
| Backward-compatible alias for |
| Select, filter, and sort with controlled operators |
| Group and aggregate with whitelisted functions |
| Check schemas, types, required values, uniqueness, categories, and malformed rows |
| Compare two files by unique key columns |
| Create validated atomic output |
| Append rows to a new output by default |
| Preview or write filtered changes |
| Preview or write filtered deletions |
| Trim, change case, and deduplicate |
| Concatenate matching files or join two files |
Filesystem tools are list_directory, read_text_file, write_text_file, and
replace_text. Writes are atomic, refuse existing files by default, create parent
directories, and cannot escape FILESYSTEM_MCP_ROOT through traversal or symlinks.
Query operators are =, !=, >, >=, <, <=, contains, starts_with, ends_with, is_null, not_null, and in. Aggregations are count, sum, mean, minimum, maximum, median, and unique_count.
Parsing options
Tools accept an optional options object:
{
"encoding": "windows-1252",
"delimiter": ";",
"decimal_separator": ",",
"quotechar": "\"",
"escapechar": "\\",
"doublequote": true,
"header_mode": "first_row",
"null_values": ["", "NULL", "N/A"],
"keep_empty_strings": false,
"column_types": {"amount": "decimal"},
"date_formats": {"created_at": "%Y-%m-%d"}
}Supported encodings are UTF-8, UTF-8 with BOM, UTF-16, Latin-1, and Windows-1252. Supported delimiters are comma, semicolon, tab, and pipe. With header_mode: "none", pass column_names or generated names such as column_1 are used.
Safe writes
Append, update, delete, and clean produce a file below output/ unless output_file is supplied. Update and delete default to dry_run: true. Existing destinations require overwrite: true.
Writes:
Validate columns, rows, paths, and formula policy.
Serialize mutations inside the server process.
Write a temporary file beside the destination.
Parse and validate the temporary file.
Calculate SHA-256.
Atomically replace the destination.
spreadsheet_formula_policy accepts escape (default), reject, or preserve. Negative values are preserved only for columns explicitly typed as integer or decimal.
Resources
csv://files
csv://file/{name}/metadata
csv://file/{name}/schema
csv://file/{name}/previewLimits
Limits are configurable with environment variables:
Variable | Default |
| 50 MiB |
| 1,000,000 |
| 500 |
| 1 MiB |
| 1,000 |
| 10,000 |
The bounded in-memory engine is intentional for this version. Use chunked pandas, PyArrow, DuckDB, or Parquet when files must exceed these limits.
Test
uv run pytestAvailable Tools
14 toolsappend_rowsC
Append validated rows to a new output file by default.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| rows | Yes | ||
| dry_run | No | ||
| options | No | ||
| overwrite | No | ||
| output_file | No | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions 'validated' and 'new output file' but does not explain whether the tool modifies existing files (overwrite behavior), what validation entails, or if it is safe/read-only. The ambiguity about output file creation and overwriting is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but not optimally structured. It front-loads 'Append validated rows' but lacks sufficient detail to be valuable. Every word should earn its place, and here the phrase 'by default' adds little clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, an output schema, sibling variety) and zero annotations/param descriptions, the description is severely incomplete. It omits return value info, side effects, error conditions, and validation specifics, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 8 parameters with 0% description coverage, yet the description adds no meaning to any parameter. It does not mention path, rows, dry_run, options, overwrite, output_file, column_types, or spreadsheet_formula_policy, leaving the agent to infer solely from names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Append validated rows to a new output file by default.' It identifies a verb and resource but is vague about what 'append' means compared to siblings like 'update_rows' or 'create_csv'. The phrase 'validated' suggests validation occurs but is not explained, and 'by default' hints at configurable behavior without clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Siblings such as 'create_csv', 'update_rows', and 'delete_rows' exist, but the description does not distinguish use cases, prerequisites, or context for append vs. update or create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_csvC
Trim, change case, and deduplicate selected columns.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| dry_run | No | ||
| options | No | ||
| overwrite | No | ||
| operations | Yes | ||
| output_file | No | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only mentions operations but omits key behaviors like the ability to overwrite files (overwrite parameter), perform a dry run (dry_run), or specify an output file. It also doesn't mention that the tool can modify the original file or that it uses CSV parsing options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is too brief. While concise, it omits critical context (like input/output files). It lacks structure and doesn't front-load the most important information (e.g., that it modifies a CSV file).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (8 parameters, nested objects, output schema), the description is extremely incomplete. It doesn't mention the output schema, parsing options, or the ability to specify column types and date formats. The agent cannot use the tool effectively based on this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning to the parameters. With a schema coverage of 0%, the agent must rely on the description, but it only lists operations. It doesn't explain that 'path' is the input file, 'operations' is an array of objects, or the role of 'overwrite', 'dry_run', or 'output_file'. This is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's actions: trim, change case, and deduplicate selected columns. This directly distinguishes it from sibling tools like read_csv, query_csv, or merge_csv, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool or when alternatives are better. It does not mention prerequisites, context, or exclusions. For example, it doesn't indicate that this tool modifies files (as opposed to read-only tools like inspect_csv) or that it should be used for data cleaning rather than data extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_csvC
Compare two CSV files by unique key columns.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | ||
| left_path | Yes | ||
| right_path | Yes | ||
| key_columns | Yes | ||
| sample_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description does not disclose behavioral traits such as whether the tool is read-only, destructive, or requires authentication. It only states 'compare' without indicating side effects or access needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short sentence). While not verbose, it is under-specified for a tool with 5 parameters and no schema descriptions. Conciseness is good, but at the cost of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (comparing two CSV files with key columns) and the presence of an output schema, the description should at least hint at the output format or comparison logic. It fails to provide enough context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema parameter description coverage is 0% (none of the main parameters have descriptions). The description only clarifies 'key_columns' by mentioning 'unique key columns'. It does not explain 'left_path', 'right_path', 'sample_limit', or 'options', leaving the agent guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (compare) and resource (CSV files) with the method (by unique key columns). This distinguishes it from siblings like merge_csv or validate_csv, but lacks specificity on the output (e.g., differences or summary).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, excluded scenarios, or comparison with sibling tools like merge_csv or validate_csv.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_csvC
Create a CSV/TSV file with atomic output and formula-injection handling.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| columns | Yes | ||
| options | No | ||
| overwrite | No | ||
| output_file | Yes | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adds value by noting atomic output and formula-injection handling, but omits other behaviors like overwrite policy (which is in the schema). Could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. However, it could benefit from brevity with more structure (e.g., bullet points for features).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and 13 siblings, the description is too sparse. It doesn't explain 'atomic output' or how formula injection is handled, missing critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not explain any parameters; schema coverage is 0%. The mention of formula-injection handling vaguely relates to the spreadsheet_formula_policy parameter, but no specifics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool creates a CSV/TSV file and mentions two key features (atomic output and formula-injection handling). It distinguishes from sibling tools like read_csv or query_csv, though the name only mentions CSV.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like append_rows or validate_csv. Lacks context for when creation is preferred over other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rowsB
Delete filtered rows, requiring a non-empty filter and defaulting to dry-run.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| match | Yes | ||
| dry_run | No | ||
| options | No | ||
| overwrite | No | ||
| output_file | No | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses two important behaviors: filter requirement and dry-run default. However, it does not explain other aspects like overwrite, output, or the destructive nature, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words, but it may be too brief given the tool's complexity (8 parameters). It is efficient but borderline under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no schema descriptions, no annotations, and 13 siblings, the description fails to cover essential context like path, match structure, output, or return value. Very incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description only mentions 'filtered rows' and 'dry-run' but does not explain most parameters (path, match as Filter array, options, overwrite, etc.). Significant lack of parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete filtered rows', which is a specific action on a specific resource, distinguishing it from sibling tools like update_rows or append_rows. It also adds key constraints: requires non-empty filter and defaults to dry-run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when deleting rows matching a filter, but does not explicitly say when not to use it or mention alternatives like update_rows. The dry-run default hints at cautious usage, but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_csvB
Inspect encoding, dialect, columns, types, malformed rows, and samples.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| options | No | ||
| sample_rows | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. While 'inspect' implies read-only, the description does not explicitly state that no modifications are made, nor does it disclose any other behavioral traits like file locking or resource usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at one line, listing key inspection areas without redundancy. However, it lacks any structural formatting (e.g., bullet points) that could improve readability for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (context signal), the description does not need to explain return values. It adequately enumerates the inspection scope (encoding, dialect, columns, types, malformed rows, samples), making the tool's capabilities clear despite no parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to parameters. It does not mention 'path', 'options', or 'sample_rows'. The schema itself describes 'CsvOptions' sub-properties, but the description fails to explain top-level parameters or how they influence inspection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'inspect' and specifies the resource 'csv', listing concrete aspects (encoding, dialect, columns, types, malformed rows, and samples). This distinguishes it from sibling tools like 'read_csv' or 'preview_csv', which have different verbs and purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives. It does not mention context, prerequisites, or exclusion criteria relative to siblings like 'validate_csv' or 'summarize_csv'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_csv_filesA
List CSV and TSV files below CSV_MCP_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states the action without disclosing behavior like recursion depth, permissions, or output format. Fails to compensate for missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is trivial (no params, list files). Description is sufficient but could mention if listing is recursive or in root only. Output schema exists, so return type is known.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100%. Description adds no parameter info, which is acceptable. However, could hint at optional filtering (e.g., by extension). Score baseline 4 for zero params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List', resource 'CSV and TSV files', and scope 'below CSV_MCP_ROOT'. Distinguishes from sibling tools like read_csv or inspect_csv by specifying listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives guidance. Implies usage for listing files, but does not clarify when to prefer this over other tools like query_csv or summarize_csv.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_csvC
Concatenate matching files or join exactly two files by keys.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| files | Yes | ||
| options | No | ||
| left_key | No | ||
| join_type | No | inner | |
| overwrite | No | ||
| right_key | No | ||
| output_file | Yes | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fails to disclose key behaviors: it does not mention file preservation, potential overwriting, error conditions, or constraints like the requirement for exactly two files in join mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it could benefit from structured formatting to separate modes and clarify usage. It is front-loaded with core purpose, which is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, 3 required, two modes), the description is incomplete. It does not explain how concatenation works with multiple files, the required keys for join, or the output behavior. The presence of an output schema helps but is not visible here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds minimal parameter insight. It mentions 'by keys' but does not explain the 'mode' parameter, the 'options' subobject, or the purpose of other parameters like 'column_types' or 'spreadsheet_formula_policy'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states two operations: concatenation and joining by keys. It distinguishes the tool's purpose from siblings like 'append_rows' and 'compare_csv'. However, 'matching files' is vague and could be clarified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use concatenate vs join, nor does it reference sibling tools for alternative operations like appending rows. No prerequisites or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_csvC
Read a bounded page and optional subset of columns.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| offset | No | ||
| columns | No | ||
| options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It implies a read operation but does not explicitly state read-only behavior, side effects, or permissions. The phrase 'bounded page' hints at limited data retrieval but lacks specificity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence that front-loads the core action. Every word is purposeful with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, nested options object, no annotations or schema descriptions), the description is too brief. It lacks context on how to use options, what the output contains, and when to choose this tool over others. The output schema exists but is unmentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description only vaguely references 'bounded page' and 'optional columns', which map to limit/offset and columns. It does not explain the complex options object or parameter usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read' and resource 'bounded page and optional subset of columns', which indicates previewing a limited portion of a CSV. However, it does not explicitly distinguish from sibling tools like read_csv or inspect_csv, which may have similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention scenarios where a full read or query might be more appropriate, nor does it provide any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_csvC
Select, filter, and sort rows with controlled operators.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| sort | No | ||
| limit | No | ||
| select | No | ||
| filters | No | ||
| options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavioral traits. It does not state whether the tool is read-only, modifies the file, or has any side effects. 'Select, filter, and sort' implies querying but lacks explicit assurance of non-destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise. However, it sacrifices substance for brevity, leaving out important details that could be included without much length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested objects, multiple operators), the description is incomplete. It does not explain the return format (though output schema exists), nor does it provide needed context about the 'controlled operators' or how to construct queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters. It mentions 'select, filter, and sort' which correspond to parameters 'select', 'filters', and 'sort', but provides no details on allowed operators, value formats, or how to use them. The schema itself lacks descriptions for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs select, filter, and sort operations on CSV rows, distinguishing it from sibling tools like read_csv (reading without filtering) or preview_csv (first few rows). The phrase 'controlled operators' is somewhat vague but acceptable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not indicate that for simple reading, read_csv is sufficient, or that for aggregation, summarize_csv is appropriate. This omission is critical given the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_csvD
Backward-compatible alias for preview_csv.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| offset | No | ||
| columns | No | ||
| options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses no behavioral traits. Given the absence of annotations, the agent is left uninformed about side effects, mutability, or operational characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While single-sentence descriptions can be efficient, this one is critically under-specified. It prioritizes brevity over substance, achieving conciseness at the expense of useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, including a nested options object) and the presence of many sibling tools, the description fails to provide any completeness. It does not explain the tool's relation to preview_csv or its role in the broader context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain parameter meanings. However, it provides no clarification for any of the five parameters (path, limit, offset, columns, options), leaving the agent to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description only states it is a backward-compatible alias for preview_csv, without defining what preview_csv itself does. This leaves the purpose vague and forces the agent to seek additional information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use read_csv versus its sibling tools (e.g., preview_csv, inspect_csv). The description lacks any context for appropriate usage or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_csvC
Group and aggregate with a fixed set of functions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| options | No | ||
| group_by | No | ||
| aggregations | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description is too brief to reveal any traits: it does not state whether the tool is read-only, modifies data, requires permissions, or has performance implications. With zero annotations, this is a critical gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is short (one sentence), it is not effectively front-loaded and omits critical details such as the resource (CSV file) and the available aggregation functions. Every word should earn its place, but here the brevity sacrifices clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (per context), but the description does not mention what the tool returns (e.g., aggregated table). Given the complexity of parameters (4, with nested options) and the richness of sibling tools, the description is insufficient for an agent to understand the tool's full behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no parameters have descriptions in the schema. The description only vaguely hints at grouping and aggregation but does not clarify the role of 'path', 'options', or 'group_by'. The 'aggregations' structure is not explained in the description, leaving the agent to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Group and aggregate with a fixed set of functions' indicates a summarizing operation, but it does not mention that the tool operates on CSV files, which is essential given sibling tools like read_csv and query_csv. The verb 'summarize' is implied by the name, but the description lacks specificity about the resource (CSV data) and the exact nature of aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings like 'query_csv' or 'group_csv' (if existed). The description does not mention prerequisites, ideal scenarios, or situations where other tools are preferable. This leaves the agent without decision support for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_rowsC
Update filtered rows, returning a bounded change preview before optional output.
| Name | Required | Description | Default |
|---|---|---|---|
| set | Yes | ||
| path | Yes | ||
| match | Yes | ||
| dry_run | No | ||
| options | No | ||
| overwrite | No | ||
| output_file | No | ||
| column_types | No | ||
| spreadsheet_formula_policy | No | escape |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions a 'bounded change preview', which hints at the dry_run parameter, but omits disclosure of destructive nature, authentication needs, error handling, or impact on data. The preview behavior is the only behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It communicates the core action and a key behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, nested filters and CSV options, output schema), the description is far too sparse. It does not explain how to use the output, handle CSV options, or interpret the preview. The agent would need additional context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention any of the 9 parameters (path, match, set, etc.), leaving the agent without guidance on their meaning or usage. The description adds no value beyond what the schema structure already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update'), the resource ('filtered rows'), and a distinctive behavioral promise ('returning a bounded change preview before optional output'). This distinguishes it from sibling tools like delete_rows or append_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, such as delete_rows, append_rows, or query_csv. It does not mention prerequisites, context, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_csvB
Validate columns, row widths, types, required values, uniqueness, and categories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| schema | Yes | ||
| options | No | ||
| issue_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It fails to mention that the tool is read-only, whether it modifies data, or any side effects. The description only lists validation types but no behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It effectively lists the validation areas but could be improved by front-loading the primary action (e.g., 'Validate a CSV file against rules'). Still, it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, nested objects, output schema exists), the description is somewhat incomplete. It does not mention the key 'schema' parameter that defines rules, nor the return format. However, the output schema likely covers return values, reducing the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for top-level parameters. The description adds no specific meaning beyond what the schema provides. It mentions validation types that relate to the 'schema' parameter but does not explain how parameters like 'path', 'options', or 'issue_limit' are used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly lists validation aspects (columns, row widths, types, required values, uniqueness, categories), clearly stating what the tool does. It distinguishes from sibling tools which handle other CSV operations like reading, querying, or cleaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, scenarios, or when not to use it. The sibling names provide context but the description itself offers no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v0.2.0- First observed
append_rows - First observed
clean_csv - First observed
compare_csv - First observed
create_csv - First observed
delete_rows - First observed
inspect_csv - First observed
list_csv_files - First observed
merge_csv - First observed
preview_csv - First observed
query_csv - First observed
read_csv - First observed
summarize_csv - First observed
update_rows - First observed
validate_csv
TDQS
Each tool has a distinct purpose: listing, inspecting, previewing, querying, summarizing, validating, comparing, creating, appending, updating, deleting, cleaning, and merging CSV files. The only potential overlap is preview_csv and read_csv, but the description clarifies read_csv is a backward-compatible alias.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_csv_files, inspect_csv, query_csv). No mixed conventions or irregular naming.
14 tools is well within the ideal 3-15 range for a focused domain. Each tool addresses a specific CSV operation without redundancy, except the alias read_csv which is minimal.
Covers full CRUD lifecycle (create, read, query, update, delete) plus validation, comparison, cleaning, merging, and appending. Only minor gaps like renaming columns or exporting to other formats, but core CSV tasks are well-covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
MCP server for Superserve sandboxes: create, exec, and manage Firecracker microVMs
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables comprehensive CSV file management including creating, editing, analyzing, and transforming CSV data anywhere in the filesystem. Provides statistical analysis, data validation, filtering, and grouping capabilities through MCP protocol over stdio transport.15-
- AlicenseNot gradedqualityDmaintenanceStdio MCP server for sandboxed file access — read files, search content, safely edit with checksums, and manage file structure.16ISC
- FlicenseNot gradedqualityDmaintenanceA local MCP server for analyzing CSV files from your filesystem, particularly suited for chatbot conversation logs. Allows listing, reading, filtering, merging, and statistical analysis of CSV data via natural language.-
- AlicenseAqualityDmaintenanceA Model Context Protocol server for exploring and analyzing CSV files, providing tools for inspection, sampling, schema inference, statistics, filtering, and more.1215MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/meysam-kazemi/csv-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server