dq-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dq-mcpCheck that order_id is unique and customer_id is not null in fixtures/orders.csv"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dq-mcp
An MCP server that gives a language model real data-quality tools instead of guesses.
Ask an LLM about a dataset it cannot inspect and it will describe the table it expects to see. This server closes that gap: it exposes profiling and assertion tools over the Model Context Protocol, so an agent has to go and look before it says anything about your data.
The checks deliberately mirror the dbt test vocabulary — not_null, unique,
relationships, accepted_values — so the assertions you already enforce in a
pipeline are available to an agent at query time, under the same names.
Tools
Tool | What it does |
| Column names, dtypes, row count. Cheap; run it first. |
| Per-column null rate, distinct count, examples, numeric range |
| Asserts columns are fully populated |
| Asserts a single or composite key is unique |
| Asserts every foreign key exists in the parent |
| Asserts a column stays inside an allowed set |
| Runs several checks in one call, returns a combined report |
There is also a dq://conventions resource holding the rules for reading a
report — most usefully, that a passing test means the assertion held, not that
the data is correct.
Reads CSV, TSV, JSON, JSONL and Parquet. Files above 512 MB are refused rather than silently loaded into memory.
Related MCP server: mix_server
Quickstart
git clone https://github.com/jyoshnagoshika-spec/dq-mcp.git
cd dq-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python dq_server.py # starts on stdio; Ctrl+C to stopThe server speaks MCP over stdio, so running it directly just waits for a client. Nothing will print. That is correct behaviour — connect a client to use it.
Connect it to Claude Desktop
Add this to claude_desktop_config.json:
macOS —
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows —
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dq": {
"command": "/absolute/path/to/dq-mcp/.venv/bin/python",
"args": ["/absolute/path/to/dq-mcp/dq_server.py"]
}
}
}Use the absolute path to the virtual environment's Python, not plain
python. Claude Desktop does not inherit your shell's PATH, so a bare python
will find a system interpreter without mcp or pandas installed. This is the
single most common reason the server fails to appear.
Restart Claude Desktop fully — quit it, don't just close the window.
Try it on the included fixtures
fixtures/ contains 900 orders and 200 customers with four deliberate quality
problems planted in them. Ask Claude:
Profile
fixtures/orders.csv, then check thatorder_idis unique, thatcustomer_idis never null, and that everycustomer_idexists infixtures/customers.csv.
It should find all four:
Problem | Tool that catches it | Result |
5 duplicated |
|
|
5 null |
| 0.56% null rate |
3 orphaned foreign keys |
|
|
2 rows with status |
| outside the allowed set |
Example output
> check_unique(path="fixtures/orders.csv", columns=["order_id"])
{
"status": "fail",
"test": "unique",
"key": ["order_id"],
"duplicate_rows": 5,
"worst_offenders": { "ORD-00013": 3, "ORD-00301": 2 }
}Failures name the worst offenders, because "this column is not unique" is not
actionable and "ORD-00013 appears three times" is.
Compatibility
The MCP Python SDK renamed its high-level server class in 2.0 (FastMCP became
MCPServer). dq_server.py imports whichever is present, so it runs on both
1.x and 2.x without changes.
Roadmap
Warehouse-backed checks (Redshift, Snowflake) rather than files only
Freshness assertions against a timestamp column
Emit results in the dbt
run_results.jsonshape for CI
Licence
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables conversational analysis of CSV and Parquet files through natural language, providing statistics, summaries, data type information, and comprehensive multi-step data analysis.
- Flicense-qualityDmaintenanceEnables AI assistants to interact with local CSV and Parquet data files through natural language queries, facilitating tasks like summarizing datasets or retrieving specific information.5
- AlicenseAqualityAmaintenanceZero-config data quality monitoring as MCP tools. Profiles a warehouse (Postgres, BigQuery, Snowflake, MySQL, DuckDB), detects anomalies, and gates CI — read-only with the connection resolved server-side, never via the model.68MIT
- Alicense-qualityDmaintenanceEnables LLM agents to load, explore, and analyze CSV and Excel files using DuckDB, with tools for SQL querying, statistical analysis, expense optimization, and anomaly detection.MIT
Related MCP Connectors
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jyoshnagoshika-spec/dq-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server