Local CSV, JSON and Excel conversion. Files are never uploaded and never enter the context.
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
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).
Run
npx -y csvto-mcp
MCP client config
{
"mcpServers": {
"csvto": {
"command": "npx",
"args": [
"-y",
"csvto-mcp"
]
}
}
}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.
claude mcp add csvto -- npx -y csvto-mcp
Or in any MCP client's config:
{
"mcpServers": {
"csvto": { "command": "npx", "args": ["-y", "csvto-mcp"] }
}
}
Requires Node 18+. Full tool list and behaviour: packages/mcp/README.md.
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 12341.23457E+141250.50 keeps its trailing zero instead of becoming 1250.5Verified in tests: 01234 survives a CSV → xlsx → CSV round trip intact.
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.
MIT