MCP server: One MCP server.

Csvto

@bishop81Run by its publisher: served from their own domain, namespace checked by the registry.MCP server · External

Local CSV, JSON and Excel conversion. Files are never uploaded and never enter the context.

Spreadsheetsv0.1.2MITTypeScript
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

npmcsvto-mcpv0.1.2

Run

npx -y csvto-mcp

MCP client config

{
  "mcpServers": {
    "csvto": {
      "command": "npx",
      "args": [
        "-y",
        "csvto-mcp"
      ]
    }
  }
}
README1 min read

CSV, JSON and Excel conversion that runs where your data already is.

  • csvto-mcp — an MCP server. Point your AI assistant at a file path; it converts locally and writes the result beside it. Nothing is uploaded, and file contents never pass through the model's context.
  • @csvto/core — the conversion engine. No DOM, no fs, no network, so the same tested code runs in a browser, in a local MCP process, or on a server.

The same engine powers the browser tools at csvtosite.com, where conversion happens client-side and files are likewise never uploaded.

Install the MCP server

claude mcp add csvto -- npx -y csvto-mcp

Or in any MCP client's config:

json
{
  "mcpServers": {
    "csvto": { "command": "npx", "args": ["-y", "csvto-mcp"] }
  }
}

Requires Node 18+. Full tool list and behaviour: packages/mcp/README.md.

Types are inferred per column, not per cell

This is the part that matters, and where most converters quietly corrupt data. A column converts to numbers only if every value in it survives the round trip exactly. If one value would change, the whole column stays text:

  • 01234 keeps its leading zero instead of becoming 1234
  • A 16-digit account number stays itself instead of becoming 1.23457E+14
  • 1250.50 keeps its trailing zero instead of becoming 1250.5
  • A column never ends up as a mix of numbers and strings

Verified in tests: 01234 survives a CSV → xlsx → CSV round trip intact.

Develop

npm install
npm test          # 49 tests
npm run build

packages/core must stay environment-free — no window, no fs, no fetch. That constraint is what lets one tested engine serve every surface.

Licence

MIT

Similar modules

Browse Spreadsheets