# csvto-mcp [Health: Active]

**Category:** 🏢 Workplace & Productivity  
**Repository:** https://github.com/Bishop81/csvto  
**GitHub Stars:** 0  
**npm Downloads (last month):** 351  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/csvto-mcp

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

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

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

## Documentation & README

# csvto

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

- **[`csvto-mcp`](https://github.com/Bishop81/csvto/blob/HEAD/packages/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`](https://github.com/Bishop81/csvto/blob/HEAD/packages/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](https://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](https://github.com/Bishop81/csvto/blob/HEAD/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

