Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

jDataMunch MCP

PYPI · JDATAMUNCH-MCP

Tabular data retrieval. Index CSV/Excel, query rows, aggregate. 99%+ savings vs raw file reads.

Available components

+10 this week 77 Trust /100

Last scanned (18 hours ago)

Scores higher than 74% of PyPI servers

Category Data and Analytics

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (LicenseRef-jDataMunch-Dual-Use) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6506 tokens (~162/item across 40 items; 39 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
  • Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_dataset" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 41 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.63 → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Security disclosure: pass → unverified ▼ functional
    • Package version: 1.31.13 → 1.33.0 functional
    • Package version: 1.31.13 → 1.32.0 functional
  • 3 Nov 26 −5
    • Stability: pass → 0.63 functional
  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 0
    • Stability: 0.97 → pass security
  • 27 Oct 26 0
    • Stability: pass → 0.97 functional
  • 25 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 23 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 21 Oct 26 0
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed pypi/jdatamunch-mcp@1.33.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 29 packages
Packages resolved 29
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 39 exposed · ~6,226 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
aggregate ~339

Server-side aggregations (GROUP BY). Saves orders of magnitude in tokens vs returning rows for the LLM to aggregate. Functions: count, sum, avg, min, max, count_distinct, median. limit capped at 1000.

NameTypeReqDescription
aggregationsarrayyesAggregation specs. Use column='*' for COUNT(*).
approximateboolean–Approximate-mode aggregation (C1). Routes count_distinct → HyperLogLog (~2% error), median → t-digest (~1% error), sum/avg → sampled estimator with 95% confidence interval. Whole-dataset only.
datasetstringyesDataset identifier
filtersarray–Pre-filter rows before aggregating (same syntax as get_rows)
group_byarray–Group-by columns. Empty = whole-dataset aggregate.
havingarray–Post-aggregation filter on aggregation aliases (B11). Each item: {"column": <alias>, "op": eq|neq|gt|gte|lt|lte|in|between|is_null, "value": ...}
limitinteger–Max groups returned (default 50)
order_bystring–Column or alias to sort by
order_dirstring––
redactboolean–Scrub PII / credentials from group-by column values (default true). Aggregate values (counts, sums, etc.) are never altered.
redact_patternsarray–Additional Python regex patterns to layer on top of the built-in set.
redact_skip_columnsarray–Group-by column names to exempt from redaction.

No output schema declared.

No examples provided.

analyze_perf ~166

Per-tool latency and cache-hit telemetry. Returns p50/p95/max latency and error rate per tool, the slowest tools by p95, and result-cache hit rates (aggregate / get_correlations / get_data_hotspots are the cached tools). window=session reads the always-on in-memory ring; window=1h/24h/7d/all reads the persistent SQLite sink (requires JDATAMUNCH_PERF_TELEMETRY=1). Sibling of jcodemunch / jdocmunch analyze_perf.

NameTypeReqDescription
toolstring–Restrict the analysis to a single tool name.
topinteger–Max slowest-tools / coldest-caches returned.
windowstring–session = in-memory ring; others read the persistent perf db.

No output schema declared.

No examples provided.

check_column_drop_safe ~135

Composite preflight: is this column safe to drop? Fuses four signals — primary-key status, foreign-key participation, cross-dataset name match, and runtime traffic — into a single verdict plus ranked blockers and a recommended_action. Verdict tiers: pk_blocking, fk_blocking, runtime_observed, cross_dataset_blocking, safe_to_drop. Read-only. The killer feature of the Phase-1 sibling-parity batch.

NameTypeReqDescription
columnstringyesColumn name (case-insensitive).
dataset_idstringyes–
window_daysinteger–Look-back window for runtime traffic. Default 30.

No output schema declared.

No examples provided.

check_embedding_drift ~170

Detect whether the embedding provider has drifted since it was pinned. Column embeddings power semantic search_data and find_similar_columns; if the provider model changes underneath a stored index, saved vectors stop matching the live encoder and semantic ranking quietly degrades. Pins a 16-string canary in <index_path>/embed_canary.json and recomputes it on demand, reporting cosine drift. Call with force=true once to set the baseline, then again after a suspected provider change. Sibling of jcodemunch / jdocmunch check_embedding_drift.

NameTypeReqDescription
forceboolean–Re-embed and re-pin the canary baseline (set once to establish it).
thresholdnumber–Cosine-distance alarm threshold; alarm is true when the worst canary drifts past it.

No output schema declared.

No examples provided.

data_health_radar ~139

Six-axis health radar for a dataset: null_health, type_confidence, cardinality_health, pk_presence, semantic_coverage, schema_stability (omitted when <2 history snapshots). Optional 7th axis runtime_coverage when traces ingested. Returns 0-100 score per axis + composite + A-F grade. Pairs with diff_data_health_radar for snapshot deltas. Mirrors jcm's six-axis health radar.

NameTypeReqDescription
datasetstringyes–
include_runtimeboolean–Fuse runtime_coverage axis when traces exist.
window_daysinteger–Lookback for the runtime axis. Default 30.

No output schema declared.

No examples provided.

delete_dataset ~53

Delete an indexed dataset and its SQLite store. Frees disk space. Irreversible — the dataset must be re-indexed to use again.

NameTypeReqDescription
datasetstringyesDataset identifier to delete (from list_datasets)

No output schema declared.

No examples provided.

describe_column ~244

Deep profile of a single column. Full value distribution for low-cardinality columns, histogram bins for numeric, temporal range for datetime. Default detail='compact' gives counts, range or stats, and top values as [value, count] pairs; detail='full' adds samples, percentages and a summary. top_n capped at 200; histogram_bins capped at 50.

NameTypeReqDescription
columnstringyesColumn name or column ID (e.g. 'lapd-crime::AREA NAME#column')
datasetstringyesDataset identifier
detailstring–compact (default): fewer repeated keys. full: the full profile.
histogram_binsinteger–Bins for numeric histograms (default 10)
redactboolean–Scrub PII / credentials from value_distribution, top_values, and sample_values (default true). Numeric stats and counts are never altered. Set false for raw values when working with data you own.
redact_patternsarray–Additional Python regex patterns to redact on top of the built-in set.
top_ninteger–Top values to return (default 10 compact, 20 full)

No output schema declared.

No examples provided.

describe_dataset ~199

Primary orientation tool. Default detail='compact' returns one row per column: name, type, null%, distinct count, and the min/max (numbers, dates) or most frequent values (text; every value when 10 or fewer), plus date formats and unique columns. detail='full' adds samples, top values with counts, mean, median and summaries. Statistics come from the index, not a re-read of the source. On wide tables (60+ columns), results are auto-paginated — use columns=[] to select specific ones, or columns_offset to page through remaining columns.

NameTypeReqDescription
columnsarray–Filter to specific columns (default: all)
columns_offsetinteger–Pagination offset for wide tables (default 0)
datasetstringyesDataset identifier (from list_datasets or index_local)
detailstring–compact (default): one row per column. full: the full per-column profile.

No output schema declared.

No examples provided.

diff_data_health_radar ~107

Diff two data_health_radar payloads. Pure function — pass the `radar` sub-field from two data_health_radar responses (e.g. yesterday vs today). Returns per-axis deltas, composite delta, grade change, regression and improvement lists (threshold: 3 points), one-line verdict.

NameTypeReqDescription
baselineobjectyesBaseline radar payload (e.g. yesterday's snapshot).
currentobjectyesCurrent radar payload (e.g. today's snapshot).

No output schema declared.

No examples provided.

embed_dataset ~94

Precompute column embeddings for semantic search. Optional warm-up — search_data with semantic=true lazily embeds on first use. Running embed_dataset upfront eliminates that latency. Requires an embedding provider (JDATAMUNCH_EMBED_MODEL, GOOGLE_API_KEY, or OPENAI_API_KEY).

NameTypeReqDescription
datasetstringyesDataset identifier (from list_datasets)
forceboolean–Recompute all embeddings even if cached (default false)

No output schema declared.

No examples provided.

finalize_handoff ~311

Finalize one canonical Markdown handoff for a completed data audit/analysis (jdatamunch.handoff/v1; suite parity with jCodeMunch). The server assembles YOUR sections deterministically, validates every evidence_refs entry against what this session actually retrieved (column ids like '<dataset>::<column>#column' or dataset names served by search_data / describe_dataset / describe_column — unknown refs fail closed), persists the result session-scoped, and returns a compact receipt {handoff_id, resource_uri, sha256, length, canonical:true}. Read the immutable body via the munch://handoff/<id> resource; repeated reads are byte-identical. Appendices are included exactly once; no character limit; never writes to your data.

NameTypeReqDescription
appendicesarray–Optional named appendices, each {name, content, content_type?}; names must be unique.
datasetstringyesDataset the handoff is about.
evidence_refsarrayyesColumn ids or dataset names retrieved this session; validated against the session retrieval record.
profilestring–Handoff profile label (e.g. data_audit).
sectionsarrayyesOrdered report sections, each {heading, content} (markdown). The caller authors these; the server only assembles. Optional per-section claims[] bind evidence to an individual claim instead of one glo…
taskstringyesThe task/question this handoff answers (becomes the title).

No output schema declared.

No examples provided.

find_similar_columns ~199

Multi-signal cross-dataset column consolidation. Fuses name (token Jaccard), type, top-value overlap, cardinality similarity, and (when present) embedding cosine into a composite score. Clusters via union-find and classifies each cluster: near_duplicate, naming_drift, parallel_definition, or overlapping_topic. Use to find duplicate columns across datasets, surface naming drift (`email` vs `email_address`), or detect the same conceptual column spread across multiple datasets. Mirrors jcm's find_similar_symbols. Every signal is heuristic, so a high score means investigate, not merge.

NameTypeReqDescription
datasetsarray–Datasets to scan. Omit to scan every indexed dataset.
min_scorenumber–Composite-score floor for surfacing pairs.
same_type_onlyboolean–Drop pairs where types don't match.
top_ninteger–Max clusters returned. Default 50, capped at 200.

No output schema declared.

No examples provided.

find_unused_columns ~174

Surface columns with zero or stale runtime traffic. Reads runtime_query_calls (populated by ingest_sql_log) and surfaces columns that haven't been queried within `window_days`. Excludes primary-key candidates and audit fields (created_at / updated_at / dbt_*) by default. Refuses to run with explicit error when no runtime data has been ingested — would otherwise trivially flag every column.

NameTypeReqDescription
dataset_idstringyes–
exclude_auditboolean–Skip audit columns (created_at, updated_at, dbt_*, etc). Default true.
exclude_pkboolean–Skip primary-key candidates. Default true.
min_callsinteger–Floor for 'considered used' within window. Default 0.
window_daysinteger–Look-back window. Default 30.

No output schema declared.

No examples provided.

get_correlations ~157

Compute pairwise Pearson correlations between numeric columns. Returns pairs sorted by |r| descending, filtered to significant correlations. Use this to discover relationships in the data without manual exploration. top_n capped at 200.

NameTypeReqDescription
columnsarray–Restrict to specific numeric columns (default: all numeric)
datasetstringyesDataset identifier
methodstring–Correlation method (default 'pearson'). Spearman is rank-based — robust to outliers and monotonic non-linear relationships (B10).
min_abs_correlationnumber–Minimum |r| to include in results (default 0.3)
top_ninteger–Max pairs to return (default 20, max 200)

No output schema declared.

No examples provided.

get_data_hotspots ~167

Return the highest-risk columns in a dataset ranked by a composite score combining: null rate, cardinality anomalies, numeric outlier spread, and (v1.10.0) runtime traffic from runtime_query_calls when traces exist. When include_runtime is true but no traces are ingested, the response carries an honest-hint caveat in _meta.runtime_caveat rather than silently scoring on static signals alone. top_n capped at 50.

NameTypeReqDescription
datasetstringyesDataset identifier
include_runtimeboolean–Fuse traffic signal from runtime_query_calls when available.
top_ninteger–Number of hotspot columns to return (default 10, max 50)
window_daysinteger–Lookback window for the traffic signal. Default 30.

No output schema declared.

No examples provided.

get_dataset_health ~78

Composite quality grade (A–F) for a dataset (B4). Combines null severity, type-confidence, constant-column count, primary-key presence, semantic-typing coverage, and drift history into a single score with a structured breakdown. Grades structure and completeness, not whether the values are right.

NameTypeReqDescription
datasetstringyesDataset identifier

No output schema declared.

No examples provided.

get_dataset_history ~80

Return the last N profile snapshots for a dataset. Snapshots are appended on every successful index_local — use this to detect schema/content drift over multiple ingests of the same dataset. n capped at 50.

NameTypeReqDescription
datasetstringyesDataset identifier
ninteger–Number of snapshots to return (default 10, max 50)

No output schema declared.

No examples provided.

get_distribution ~119

Unified bin-counts for any column type (B8). Numeric → equal-width bins between min/max; datetime → time-bucket bins; categorical / string → top-n + 'other' bucket. Token-cheap way to ask 'what does this column look like?'. Bin counts only (default 20 bins); it never returns the underlying rows.

NameTypeReqDescription
binsinteger–Number of bins / categories to return (default 20, max 100)
columnstringyesColumn name
datasetstringyesDataset identifier

No output schema declared.

No examples provided.

get_redaction_log ~128

Forensic accounting of PII redactions for a dataset. Returns per-pattern counts from runtime_redaction_log (populated by ingest_sql_log with redact=True), so operators can verify the chokepoint is firing on production traffic. Filter by source and lookback window. Empty result with no traces ingested is not an error — it just means no scrubbing has happened yet.

NameTypeReqDescription
dataset_idstringyes–
since_daysinteger–Lookback window for last_seen. Default 30.
sourcestring–Optional source filter. Today: 'sql_log'.

No output schema declared.

No examples provided.

get_rows ~403

Filtered row retrieval via structured filters. All filters are SQL-parameterized (no injection). Operators: eq, neq, gt, gte, lt, lte, contains, in, is_null, between. Use columns=[] to project — reduces tokens significantly on wide tables. Prefer aggregate() for summaries over paginating through rows. Rows come back as arrays under a 'fields' header (row_format='objects' for dicts). Returns at most limit rows (default 50); page with offset instead of raising it.

NameTypeReqDescription
columnsarray–Column projection — reduces tokens (default: all)
datasetstringyesDataset identifier
filtersarray–Filter conditions (ANDed). E.g. [{"column": "AREA NAME", "op": "eq", "value": "Hollywood"}]
limitinteger–Max rows returned (default 50, hard cap 500)
offsetinteger–Pagination offset (default 0)
order_bystring–Column to sort by
order_dirstring–Sort direction (default 'asc')
redactboolean–Scrub PII / credentials (emails, SSNs, Luhn-valid credit cards, JWTs, API keys, PEM blocks, AWS keys, GitHub/Slack tokens) from row cells before return (default true). Numeric cells are never altered…
redact_patternsarray–Additional Python regex patterns to layer on top of the built-in set. Invalid patterns are silently skipped (reported in _meta.redaction.invalid_custom_patterns).
redact_skip_columnsarray–Column names to exempt from redaction (e.g. an `email_hashed` column where the email pattern would false-positive).
row_formatstring–arrays (default): 'fields' once, then one array per row. objects: one dict per row.

No output schema declared.

No examples provided.

get_schema_drift ~114

Compare schema (columns, types, nullability) between two indexed datasets. Detects added/removed columns, type changes, and null-rate shifts. Pure in-memory comparison — no re-reading source files. Useful for detecting schema changes between dataset versions. Assessment: 'identical' | 'additive' (only additions) | 'breaking' (removals or type changes).

NameTypeReqDescription
dataset_astringyesFirst dataset identifier (baseline)
dataset_bstringyesSecond dataset identifier (comparison target)

No output schema declared.

No examples provided.

get_schema_impact ~176

Transitive impact of a column-level schema change (drop_column, rename_column, retype_column). Walks the inferred FK graph to max_depth, surfaces direct + transitive hits across datasets, and normalises blast_score to [0, 1]. For retype_column, also flags type_mismatch entries at FK edges whose partner type wouldn't survive the retype. Read-only.

NameTypeReqDescription
columnstringyesColumn name (case-insensitive).
dataset_idstringyes–
kindstring––
max_depthinteger–BFS depth over the inferred FK graph.
new_namestring–Required for rename_column.
new_typestring–Required for retype_column. e.g. integer / string / float.
window_daysinteger–Runtime traffic look-back.

No output schema declared.

No examples provided.

get_session_stats ~32

Return cumulative token savings and cost avoided across all tool calls. Savings are modelled estimates, not per-call measurements.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

index_local ~264

Index a local data file (CSV, Excel, Parquet, or JSONL). Profiles all columns, detects types, computes statistics, and loads rows into SQLite for fast filtered retrieval. Set incremental=true (default) to skip re-indexing if file is unchanged. CSV, Excel, Parquet and JSONL only; any other format is rejected.

NameTypeReqDescription
delimiterstring–CSV delimiter override (auto-detected if omitted)
depthstring–Profiling depth (B7). 'shallow' caps at 100k rows for fast first-look; 'standard' is the full profile (default); 'deep' additionally precomputes correlations.
encodingstring–File encoding override (auto-detected if omitted)
header_rowinteger–Row number containing column headers, 0-indexed (default 0)
incrementalboolean–Skip re-index if file hash unchanged (default true)
namestring–Dataset identifier override (defaults to filename stem)
pathstringyesAbsolute path to data file (.csv, .tsv, .xlsx, .xls, .parquet, .jsonl, .ndjson)
sheetstring–Excel sheet name to index (default: first sheet)

No output schema declared.

No examples provided.

index_repo ~163

Index data files from a GitHub repository. Discovers CSV, Excel, Parquet, and JSONL files, downloads them, and indexes each via the same pipeline as index_local. Datasets are named {owner}--{repo}--{filename}. Max 50 MB per file, 20 files per repo. Set GITHUB_TOKEN env var for private repos or to avoid rate limits.

NameTypeReqDescription
github_tokenstring–GitHub token override (defaults to GITHUB_TOKEN env var)
incrementalboolean–Skip re-index if HEAD SHA unchanged (default true)
urlstringyesGitHub repo URL or owner/repo string (e.g. 'pandas-dev/pandas' or 'https://github.com/pandas-dev/pandas')

No output schema declared.

No examples provided.

ingest_sql_log ~212

Ingest a SQL log file (pg_stat_statements CSV or generic JSONL, .gz transparently) into the per-dataset runtime tables. Each query is parsed for table + column refs, redacted at the chokepoint (string + numeric literals + cell-PII registry), and rolled up into runtime_query_calls keyed by (fingerprint, table, column). Tables in the log that don't match any indexed dataset count as unmapped. Foundational primitive for find_unused_columns, check_column_drop_safe, and data_health_radar (v1.6.0 sibling-parity Phase 1).

NameTypeReqDescription
file_pathstringyesPath to a CSV / JSONL / .gz log file.
max_rowsinteger–Hard cap on ingested rows. Default 100000.
redactboolean–Scrub PII / literals before persisting. Default true.
sourcestring–pg_stat_statements | jsonl | auto (default — sniff by extension).

No output schema declared.

No examples provided.

jdatamunch_guide ~104

Return the version-current CLAUDE.md / AGENT.md policy snippet for jdatamunch-mcp. Lets an agent keep a one-line CLAUDE.md (e.g. "Call jdatamunch_guide and strictly follow its instructions.") instead of pasting a static snippet that drifts from the installed version. Idempotent, no dataset context required. Sibling of jcodemunch_guide and jdocmunch_guide.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

join_datasets ~289

Join two indexed datasets via SQL JOIN. Uses ATTACH DATABASE to combine two SQLite stores into one query. Supports inner, left, right, and cross joins. Use columns_a/columns_b to project — reduces tokens on wide tables. Row limit capped at 500. Prefer aggregate() on join results for summaries.

NameTypeReqDescription
columns_aarray–Columns to select from dataset_a (default: first 30)
columns_barray–Columns to select from dataset_b (default: first 30)
dataset_astringyesFirst dataset identifier (left side of join)
dataset_bstringyesSecond dataset identifier (right side of join)
filters_aarray–Pre-filter dataset_a rows (same syntax as get_rows filters)
filters_barray–Pre-filter dataset_b rows (same syntax as get_rows filters)
join_column_astringyesColumn from dataset_a to join on
join_column_bstringyesColumn from dataset_b to join on
join_typestring–Join type (default 'inner')
limitinteger–Max rows returned (default 50, hard cap 500)
offsetinteger–Pagination offset (default 0)
order_bystring–Column to sort results by
order_dirstring–Sort direction (default 'asc')

No output schema declared.

No examples provided.

list_datasets ~56

List every indexed dataset with its row count, column count, and source file. Call it first to find the dataset name every other tool needs, and to confirm a file was actually indexed. Lists only datasets under the active storage_path.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_repos ~57

List GitHub repositories indexed via index_repo. Shows repo name, HEAD SHA, dataset count, total rows, and dataset names for each repo. Covers repos indexed with index_repo only; a dataset added by index_local is not listed here.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

plan_query ~100

Map a natural-language intent into a ranked tool-call sequence for the given dataset (B3). Pure routing — no LLM call. Built-in intents: summarize, anomalies, compare, join, filter, trend, correlate.

NameTypeReqDescription
datasetstringyesDataset identifier
intentstring–Natural-language intent (e.g. 'summarize', 'find anomalies', 'join with X', 'trend over time'). Default 'summarize'.

No output schema declared.

No examples provided.

run_sql ~215

Read-only sandboxed SQL escape hatch (B1). Accepts a single SELECT (or WITH … SELECT) statement. The first dataset is the main connection; additional datasets are ATTACHed under schema names (e.g. `<dataset>.rows`). Statement runs under PRAGMA query_only=1 with a 10-second budget and 500-row cap. Use this for HAVING / window functions / CTEs / multi-way joins that the structured tools don't cover.

NameTypeReqDescription
datasetsarrayyesIndexed datasets to attach. Order matters: datasets[0] is the main connection.
limitinteger–Row cap (default 500, hard max 500)
redactboolean–Scrub PII / credentials from result cells before return (default true).
redact_patternsarray–Additional Python regex patterns to layer on top of the built-in set.
redact_skip_columnsarray–Result column names to exempt from redaction.
sqlstringyesSELECT or WITH … SELECT statement

No output schema declared.

No examples provided.

sample_rows ~215

Return a sample of rows. Useful for understanding data shape without prior knowledge. Method: 'head', 'tail', or 'random'. Use columns=[] on wide tables to reduce response size. Pass seed (int) with method='random' for deterministic, reproducible sampling. A sample shows shape, not distribution; use get_distribution when you need the spread.

NameTypeReqDescription
columnsarray–Column projection (default: all)
datasetstringyesDataset identifier
methodstring–Sampling method (default 'head')
ninteger–Rows to sample (default 5, max 100)
redactboolean–Scrub PII / credentials from sampled cells before return (default true).
redact_patternsarray–Additional Python regex patterns to layer on top of the built-in set.
redact_skip_columnsarray–Column names to exempt from redaction.
seedinteger–Deterministic seed for method='random' (omitted = non-deterministic)

No output schema declared.

No examples provided.

search_data ~214

Search across column names and values. Returns column-level results with IDs — tells you where to look, not the data itself. Use before get_rows or describe_column. max_results capped at 50. Set semantic=true for embedding-based search (requires an embedding provider: JDATAMUNCH_EMBED_MODEL, GOOGLE_API_KEY, or OPENAI_API_KEY).

NameTypeReqDescription
datasetstringyesDataset identifier
max_resultsinteger–Maximum results to return (default 10)
querystringyesNatural-language or keyword query
search_scopestring–Limit search to schema only, values only, or all (default 'all')
semanticboolean–Enable semantic search via embeddings (default false). Requires embedding provider.
semantic_onlyboolean–Skip keyword scoring entirely; use only embeddings (default false).
semantic_weightnumber–Weight for semantic score in hybrid ranking. 0.0 = pure keyword, 1.0 = pure semantic (default 0.5).

No output schema declared.

No examples provided.

suggest_joins ~72

Discover FK candidates between this dataset and other indexed datasets (B5). For each non-PK column in the source, scans up to 20 other datasets' PK candidates and proposes joins where containment ≥ 95%. Sample-based (500 distinct values per source column).

NameTypeReqDescription
datasetstringyesSource dataset identifier

No output schema declared.

No examples provided.

suggest_keys ~75

Rank primary-key candidates for a dataset (B5). Each entry carries a confidence score plus the reasons that raised it (integer column, UUID format, no nulls, exact-count unique). Candidates are ranked from profile statistics, so confirm against the source system before treating one as the key.

NameTypeReqDescription
datasetstringyesDataset identifier

No output schema declared.

No examples provided.

summarize_dataset ~73

Generate natural-language summaries for a dataset and all its columns. Works on already-indexed datasets — reads profiles from index.json, generates summaries, and writes them back. No re-parsing of source files. Summaries are also auto-generated during index_local.

NameTypeReqDescription
datasetstringyesDataset identifier (from list_datasets)

No output schema declared.

No examples provided.

tune_weights ~240

Inspect, set, or reset the weight vector search_data uses to rank columns (name/value/type match weights plus the BM25 and semantic blend scales). Omit all args to inspect the effective weights and their source. Pass set_weights (a {weight: number} object) to override, or reset=true to clear. Scope with dataset (per-dataset overrides win over the global default, which wins over built-ins). Honored by search_data at query time. Unlike jcodemunch/jdocmunch, weights are tuned explicitly here (no ranking ledger). Tunable: name_exact, name_substr, name_word, ai_summary_word, value_exact, value_substr, type_boost, bm25_scale, semantic_scale, default_semantic_weight. Affects search_data ranking only; no other tool reads these weights.

NameTypeReqDescription
datasetstring–Tune one dataset. Omit for the global default.
resetboolean–Clear this scope overrides.
set_weightsobject–Weight overrides, e.g. name_exact=30. Unknown names or non-numeric values are rejected; values are clamped to each weight bounds.

No output schema declared.

No examples provided.

validate_index ~93

Verify an indexed dataset's on-disk integrity. Runs SQLite PRAGMA integrity_check, cross-checks row count and column list against index.json, and verifies index.json content hash. Reports stale-lock state from interrupted index_local runs. Returns overall_status: 'ok' | 'warning' | 'error'. Checks the integrity of the index, never the correctness of the underlying data.

NameTypeReqDescription
datasetstringyesDataset identifier

No output schema declared.

No examples provided.

Install

How do I install the jDataMunch MCP server?

jDataMunch MCP runs locally as a PyPI package, launched with uvx jdatamunch-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · jdatamunch-mcp

# add to Claude Code
claude mcp add jgravelle-jdatamunch-mcp -- uvx jdatamunch-mcp
Common questions

What is the jDataMunch MCP server?

jDataMunch MCP is listed in the public MCP registry as io.github.jgravelle/jdatamunch-mcp. Tabular data retrieval. Index CSV/Excel, query rows, aggregate. 99%+ savings vs raw file reads. This page covers its PyPI package (jdatamunch-mcp).

Is the jDataMunch MCP server safe to use?

jDataMunch MCP scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the jDataMunch MCP server expose?

jDataMunch MCP exposes 39 tools: index_local, index_repo, list_datasets, list_repos, describe_dataset, and 34 more. Their descriptions and schemas cost roughly 6,226 tokens of context every time the server is loaded.

Is the jDataMunch MCP server still maintained?

jDataMunch MCP is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the jDataMunch MCP server under?

jDataMunch MCP declares the LicenseRef-jDataMunch-Dual-Use licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.