{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ks662j4r9kmb","handle":"csv-ingest-mcp","url":"https://wellknown.network/agents/csv-ingest-mcp","links":{"self":"https://wellknown.network/agents/csv-ingest-mcp/record.json","html":"https://wellknown.network/agents/csv-ingest-mcp","markdown":"https://wellknown.network/agents/csv-ingest-mcp/record.md","api":"https://wellknown.network/api/v1/agents/csv-ingest-mcp","status":"https://wellknown.network/api/v1/agents/csv-ingest-mcp/status","claim":"https://wellknown.network/agents/csv-ingest-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/csv-ingest-mcp/claim.json","badge":"https://wellknown.network/agents/csv-ingest-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/csv-ingest-mcp/history","tools":"https://wellknown.network/api/v1/agents/csv-ingest-mcp/tools"},"ard":{"identifier":"urn:air::server:csv-ingest-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"csv-ingest-mcp","summary":"MCP server that ingests CSV/TSV/Parquet/Excel/JSON files into any SQLAlchemy database","description":"# csv-ingest-mcp\n\n[![PyPI](https://img.shields.io/pypi/v/csv-ingest-mcp.svg)](https://pypi.org/project/csv-ingest-mcp/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nMCP server for ingesting **CSV / TSV / Parquet / Excel / JSON / JSONL** files into any SQLAlchemy-supported database (Postgres, MySQL, SQLite, MSSQL, ...). Plug into Claude Desktop, Cursor, Cline, or Continue and let the LLM load tabular data on demand.\n\n## Install\n\n```bash\nuvx csv-ingest-mcp        # one-shot, no global install\n# or\npip install csv-ingest-mcp\n```\n\n## Quick start (Claude Desktop)\n\n`~/.config/Claude/claude_desktop_config.json` (Linux) / `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"csv-ingest\": {\n      \"command\": \"uvx\",\n      \"args\": [\"csv-ingest-mcp\"],\n      \"env\": {\n        \"CSV_MCP_ALLOWED_DIRS\": \"/home/you/data\",\n        \"CSV_MCP_DB_URL\": \"postgresql://user:pass@localhost/mydb\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. The model now has six tools.\n\n## Tools\n\n| Tool | Purpose |\n|------|---------|\n| `ingest_file(path, table, if_exists, sheet, auto_alter, dry_run)` | Load file into table |\n| `upsert_file(path, table, key_columns, sheet, dedupe_source)` | Key-based replace + insert |\n| `list_tables()` | Database table names |\n| `describe_table(table)` | Schema + row count |\n| `ingest_async(path, table, if_exists, auto_alter)` | Queue large file via Celery |\n| `job_status(job_id)` | Poll Celery job |\n\n## Configuration\n\n| Env var | Default | Purpose |\n|---------|---------|---------|\n| `CSV_MCP_ALLOWED_DIRS` | (required) | `:`-separated path allowlist |\n| `CSV_MCP_DB_URL` | `sqlite:///./csv_ingest.db` | SQLAlchemy DSN |\n| `CSV_MCP_MAX_ROWS` | `1000000` | Per-file row cap |\n| `CSV_MCP_CHUNK_SIZE` | `50000` | Streaming chunk rows |\n| `CSV_MCP_BROKER_URL` | `redis://localhost:6379/0` | Celery broker |\n| `CSV_MCP_RESULT_BACKEND` | `redis://localhost:6379/1` | Celery backend |\n| `CSV_MCP_WAT…","publisher":{"name":"priyak.salot","url":null},"homepage":null,"repository":null,"version":"0.1.0","license":"MIT","protocols":["mcp"],"tags":["mcp","model-context-protocol","csv","ingest","sqlalchemy","claude","llm"],"pricing":null,"endpoints":[{"url":"pypi:csv-ingest-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","summary":"pypi","version":"pypi","description":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"declared"},{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"}],"categories":["data","documents"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"csv-ingest-mcp","registry":"pypi","observedAt":"2026-10-27T22:27:57.491Z","publishedAt":"2026-05-26T07:13:42.666936Z","latestVersion":"0.1.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"csv-ingest-mcp","url":"https://pypi.org/project/csv-ingest-mcp/","firstSeenAt":"2026-09-09T13:20:59.121Z","fetchedAt":"2026-10-27T22:27:17.508Z","normalizedAt":"2026-10-27T22:27:17.508Z"}]},"firstSeenAt":"2026-09-09T13:20:59.121Z","updatedAt":"2026-10-27T22:27:57.491Z"}