spreadsheet-generator
What this MCP does
Loads, inspects, filters, edits, analyzes, and converts XLSX and CSV files.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'License key from checkout, MCPL1.<payload>.<signature>'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Name of the new column. It must not already exist on the sheet'}, 'path': {'type': 'string', 'description': 'Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified'}, 'sheet': {'type': 'string', 'description': 'Sheet name; default is the first sheet'}, 'values': {'type': 'array', 'description': 'Explicit values, one per data row, instead of a formula. Missing entries are left blank'}, 'formula': {'type': 'string', 'description': 'Expression over the columns of each row, in the same expression language as sheet_query, e.g. "[Qty] * [Unit Price]" or \'[Country] = "PL"\'. Give either formula or values'}, 'decimals': {'type': 'integer', 'maximum': 10, 'minimum': 0, 'description': 'Round numeric formula results to this many decimals. Default: the widest decimal count of the columns the formula reads, capped at 2 when they all hold 2 or fewer (money in, money out); otherwise no rounding beyond float cleanup'}, 'out_path': {'type': 'string', 'description': 'Output file; default <source>-plus-<column>.<same ext>. The source file is left untouched unless this points at it'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'to'], 'properties': {'to': {'enum': ['csv', 'xlsx', 'json'], 'type': 'string', 'description': 'Target format; the default out_path takes this as its extension'}, 'path': {'type': 'string', 'description': 'Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified'}, 'sheet': {'type': 'string', 'description': 'Sheet to convert; default is the first sheet. Only that one sheet is written'}, 'out_path': {'type': 'string', 'description': 'Where to write; default is the source name with the new extension, next to the source. It must differ from the source path'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'text'], 'properties': {'path': {'type': 'string', 'description': 'Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)'}, 'text': {'type': 'string', 'description': 'Text to look for; matched case insensitively anywhere inside a cell. Up to 200 hits are returned'}, 'sheet': {'type': 'string', 'description': 'Sheet name; default searches every sheet'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'description': 'Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'csv': {'type': 'string', 'description': 'Raw CSV or TSV text, including the header row'}, 'url': {'type': 'string', 'description': "url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused"}, 'name': {'type': 'string', 'maxLength': 70, 'minLength': 1, 'description': 'Name to refer to this data by: 1-64 characters of letters, digits, underscore or dash, e.g. "sales" or "sales.csv"'}, 'xlsx_base64': {'type': 'string', 'description': 'Base64-encoded .xlsx workbook'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'as': {'enum': ['table', 'json', 'csv'], 'type': 'string'}, 'path': {'type': 'string', 'description': 'Path to the .xlsx or .csv file'}, 'sort': {'type': 'object', 'required': ['col'], 'properties': {'col': {'type': 'string'}, 'dir': {'enum': ['asc', 'desc'], 'type': 'string'}}, 'description': 'Sort column; may be an aggregate alias such as total_units', 'additionalProperties': False}, 'limit': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Default 100'}, 'sheet': {'type': 'string'}, 'where': {'type': 'string', 'description': 'Filter, e.g. [Qty] >= 5 AND ([Status] = "open" OR [Status] = "new")'}, 'select': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column names to return; default all (with group_by, defaults to the group columns plus the aggregates)'}, 'group_by': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Group rows by these columns before aggregating, e.g. ["Rep"] or ["Region","Rep"]'}, 'aggregate': {'type': 'array', 'items': {'type': 'object', 'required': ['col', 'fn'], 'properties': {'as': {'type': 'string', 'description': 'Output name for this aggregate, e.g. total_units'}, 'fn': {'enum': ['sum', 'count', 'avg', 'min', 'max'], 'type': 'string', 'description': 'sum | count | avg | min | max'}, 'col': {'type': 'string', 'description': 'Column to aggregate, or "*" to count rows'}}, 'additionalProperties': False}, 'description': 'Aggregates per group, e.g. [{"col":"Units","fn":"sum","as":"total_units"}]. Defaults to a row count when group_by is given.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'as': {'enum': ['table', 'json', 'csv'], 'type': 'string', 'description': 'Output format, default table'}, 'path': {'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Rows to return, default 100'}, 'range': {'type': 'string', 'description': 'A1 range such as A1:D50; overrides limit/offset'}, 'sheet': {'type': 'string', 'description': 'Sheet name; defaults to the first sheet'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip, default 0'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string'}, 'sheet': {'type': 'string'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Limit to these columns; default all'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 70, 'minLength': 1}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'rows', 'mode'], 'properties': {'mode': {'enum': ['new_file', 'append', 'overwrite'], 'type': 'string', 'description': 'new_file writes a brand new file and refuses to clobber an existing one; append adds the rows under the existing data; overwrite replaces the file contents'}, 'path': {'type': 'string', 'description': 'Source file for append/overwrite, or the intended file for new_file (~ is expanded)'}, 'rows': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'array'}]}, 'description': 'Array of objects, whose keys become the headers, or an array of arrays with the header row first'}, 'sheet': {'type': 'string', 'description': 'Sheet to write; default is the first sheet of the source, or "Sheet1" for a new file. Other sheets of an existing workbook are kept unchanged'}, 'out_path': {'type': 'string', 'description': 'Where to write; default is a new file next to the source for new_file, or the source itself for append/overwrite. The output format follows this extension: .xlsx, .csv, .tsv or .json. An extension is required'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
AIOProductOS MCP
Combines customer records, support conversations, feedback, product analytics, roadmaps, tasks, experiments, releases, and retent…
Wakatime
Provides WakaTime coding-activity data, including durations, projects, commits, goals, heartbeats, editor usage, leaders, and use…
Timeapi Io
Provides timezone and date utilities, along with routed access to structured research and data sources.
roadflow
Creates and shares roadmap graphs, and manages structured model registers containing parameters, observations, formulas, dictiona…
DeskMonitor
Supports workforce attendance, timesheets, employee management, team hours, productivity reporting, workload alerts, approvals, a…
netcafe-docs
Extracts and validates data from PDFs, invoices, bank statements, tables, and CSVs; also supports web research, document conversi…
SumOffice — real Word and Excel for agents
Reads and edits Word documents and Excel workbooks while preserving document structure, formulas, macros, comments, tracked chang…
Ouro Tools
Creates charts and PDFs, extracts tables and webpage text, manages forms and feeds, and provides temporary document and webhook s…