data-cleaner-agent
MCP server for cleaning messy CSV data via a single clean_csv tool. Uses an agentic workflow with rule-based or LLM planners to transform data safely.
README
<!-- mcp-name: io.github.wesseltl/data-cleaner-agent -->
data-cleaner-agent
Clean a messy CSV with an agentic workflow. An LLM decides which cleaning steps the data needs, and tested Python functions do the actual work. The model plans the cleanup, it never touches your data values, so nothing gets hallucinated or silently rewritten.
Works offline out of the box (no API key). Can be driven by an LLM, and other AI agents can call it as an MCP tool.
Before / after
Full Name , Country, Signup Date, Amount Paid full_name country signup_date amount_paid
Alice ,Netherlands,2023-01-05,"€1.200,50" Alice Netherlands 2023-01-05 1200.5
Bob,nederland,05/01/2023,"$900" ─────▶ Bob Netherlands 2023-01-05 900.0
Alice ,NL,2023-01-05,"€1.200,50" Carol Germany 2023-02-10 1000.0
Carol , Germany ,2023-02-10,1000 Dan Belgium 2023-03-01 750.0
Dan,belgie,2023/03/01,"€ 750,00"
In one pass it fixed the headers, trimmed whitespace, parsed three different date formats to ISO,
turned €1.200,50 / $900 / € 750,00 into numbers, standardized the country names, and dropped the
duplicate Alice row.
Install & run
pip install agentic-csv-cleaner
clean-csv messy.csv cleaned.csv # clean a file
clean-csv messy.csv # or just print the result
No API key needed. The default planner is a set of offline heuristics.
The idea
An "agentic workflow" is just software with a few parts:
look at the data -> planner picks the steps -> run the steps -> report
(rules, or an LLM) (tested code)
The decision that makes it safe to trust:
The planner decides which tool runs on which column. The tools do the transformation. A language model is good at judgment ("this column looks like money") and bad at being a reliable calculator. So the LLM only ever picks operations from a fixed set. It never reads a value and writes back a "cleaned" one, which is where LLM data-cleaning usually goes wrong.
Two planners, one loop
| Planner | What it is | Needs |
|---|---|---|
RuleBasedPlanner |
Offline heuristics from a quick data profile. The default. | nothing |
LLMPlanner |
Sends the profile + tool list to an LLM, gets back a JSON plan. | pip install "agentic-csv-cleaner[llm]" + ANTHROPIC_API_KEY |
Both return the same list of steps, so the loop is identical. You swap the brain, not the plumbing.
Use it from other code or agents
from cleaner.api import clean_csv_text
result = clean_csv_text(open("messy.csv").read())
print(result["cleaned_csv"])
print(result["steps"])
As an MCP tool
Other AI agents (Claude Desktop, or any MCP client) can call the cleaner as a tool, so they can clean a CSV properly instead of reformatting it token by token in the prompt:
pip install "agentic-csv-cleaner[mcp]"
python -m cleaner.mcp_server
This exposes one tool, clean_csv, that takes CSV text and returns the cleaned CSV plus the steps.
What's in the box
cleaner/tools.py holds the transformations: snake_case_headers, strip_whitespace,
coerce_numeric, standardize_dates, standardize_categorical, drop_duplicate_rows.
Take standardize_dates. 2023-01-05 (year first, month in the middle) and 05/01/2023 (day first)
need opposite parsing rules, and one global setting corrupts one or the other, so the tool decides per
value. Mixed dates are genuinely ambiguous, and this handles them explicitly instead of guessing.
Tests
python -m unittest discover -s tests
License
MIT.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.