jDataMunch MCP

io.github.jgravelle由 GitHub 账号 jgravelle 发布v1.33.0更新于 Nov 5, 2026

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

概览

AI 生成的概览

将本地 CSV、Excel、Parquet 和 JSONL 文件索引到本地 SQLite,让助手无需把行读入上下文即可剖析、筛选、聚合和关联表格数据。

可以做什么
  • 索引与管理数据集:索引本地文件或 GitHub 仓库,列出数据集和仓库,删除或校验索引,生成摘要并记录剖析历史
  • 快速了解陌生数据:描述数据集或单个字段,抽样行,查看分布、相关性和高风险字段
  • 不加载行即可查询:带条件取行、服务端聚合、跨数据集关联,以及只读沙箱 SQL 查询
  • 评估数据质量与结构风险:健康评分与雷达图、结构漂移、主键与关联建议、删列前检查与结构影响分析
  • 搜索与调优:按字段名和值做关键词或向量搜索、相似字段识别、权重调整、向量漂移检查
  • 运维与报告:导入 SQL 日志并做 PII 脱敏、查看脱敏日志、性能遥测、节省 token 统计和 Markdown 交接文档
适用场景
适合助手需要回答关于大型表格或数据文件的问题、而把行贴进提示词代价过高时,也适合对多个数据集反复做剖析、质量检查和结构变更前评估。对小文件意义不大,README 也说明此时节省可以忽略。
运行要求
以 stdio 方式在本地运行的 Python 3.10+ 包,通常用 uvx 启动,或用 uv tool、pipx、pip 安装;Excel 和 Parquet 支持需要额外可选依赖。默认无需任何凭据。可选:私有仓库需 GITHUB_TOKEN;语义搜索需配置向量提供方(JDATAMUNCH_EMBED_MODEL 配合 GOOGLE_API_KEY 或 OPENAI_API_KEY)。
安装前请注意
商业用途需一次性付费许可,个人及非商业用途免费。delete_dataset 不可撤销。基础包默认发送匿名节省统计(随机 ID 加汇总 token 数),可用 JDATAMUNCH_SHARE_SAVINGS=0 关闭。index_repo 会使用提供的令牌访问 GitHub,向量提供方仅在配置后才会调用。抽样统计存在误差范围。

安装

在 SourceWeft 中

  1. 打开 控制台中的 jDataMunch MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

jDataMunch MCP: Tabular Data Retrieval for AI Agents

jDataMunch is an MCP server for coding agents and analysts that answers questions about CSV, Excel, Parquet, and JSONL files without pasting the rows into the context window.

Index a dataset once, then retrieve column profiles, filtered rows, server-side aggregations, and cross-dataset joins — so a million-row file costs thousands of tokens instead of millions.

Install · Quickstart · Benchmarks · Commercial licensing

[PyPI version] [PyPI - Python Version] [License] [MCP] [Local-first]

Free for personal use. Commercial use requires a paid license — terms below.


Why jDataMunch?

The problem. The default way an agent explores a spreadsheet is to paste it into the prompt. A 255 MB CSV with a million rows costs roughly 111 million tokens that way, and the model still has to reason through a million rows to answer "what columns are in here?"

The mechanism. jDataMunch profiles the file once — columns, types, cardinality, null rates, distributions — and stores that locally. Queries then run against the data, not against a copy of it in the prompt: filters, aggregations, and joins execute server-side and return only results.

The outcome. Orientation questions are answered from the profile. Row-level questions return matching rows. The raw file never enters the context window.


Evidence

Measured on a real public dataset, not estimated. Full harness and per-query results in benchmarks/.

Corpus: LAPD crime records — 1,004,894 rows, 28 columns, 255 MB Baseline: 111,028,360 tokens to paste the raw file describe_dataset: ~892 tokens, schema plus one column ~1,200: a 99,059× reduction (mean of five per-task ratios) Methodology & harness · Full results

TaskWithout jDataMunchWith jDataMunchReduction
Understand a dataset's shapePaste 111M tokensdescribe_dataset → ~892 tokens~124,000×
Schema + one column deep-divePaste 111M tokensdescribe_dataset + describe_column → ~1,200 tokens~93,000×
Filter to matching rowsLoad all 1M rowsget_rows with filters → matching rows only~99%+
Count by categoryReturn all rows, aggregate in the modelaggregate(group_by=[...]) → 21 rows~99.9%

What these numbers are and are not. The reduction is measured against pasting the complete file, which is what a naive agent does and what the token bill reflects. It is not measured against a competent human analyst who would never paste a 255 MB CSV. The multiple scales with file size: a 200-row spreadsheet has far less to save, and the honest figure there is closer to "no meaningful difference."

Typical latencies from the same run: describe_dataset plus describe_column on a single column, 22 to 40 ms; describe_column alone is 223 to 387 tokens.


Install

Requirements: Python 3.10+, any MCP-compatible client.

There is no install step. jdatamunch-mcp is a stdio MCP server with no CLI subcommands, so nothing needs to land on your PATH — point your client at uvx and it fetches and runs the server on demand.

Claude Code setup:

bash
claude mcp add jdatamunch -- uvx jdatamunch-mcp

Nothing else. Don't have uv yet?

Reading Excel or Parquet? Those pull optional extras, which uvx takes on the --from argument:

bash
claude mcp add jdatamunch -- uvx --from "jdatamunch-mcp[excel,parquet]" jdatamunch-mcp
Prefer a persistent install?
CommandUse it when
uv tool install jdatamunch-mcpYou want it resolved once instead of per-launch
pipx install jdatamunch-mcpYou already standardise on pipx
pip install jdatamunch-mcpInside a virtualenv you manage yourself. ⚠ Refused on PEP 668 distros (Ubuntu 24.04+, Debian 12+) — use one of the two above.

Extras take the usual bracket form here: uv tool install "jdatamunch-mcp[excel,parquet]". Registering the server still works the same way; substitute jdatamunch-mcp for uvx jdatamunch-mcp in the claude mcp add line above.

Restart Claude Code, then type /mcp — jdatamunch should be listed. That listing is the verification step; running the server directly just waits on stdin.

Full per-client setup, including Claude Desktop, Cursor, and Windsurf: QUICKSTART.md.


Quickstart

Assumes: jDataMunch installed and registered with your client, and a CSV to hand.

Everything happens inside your agent — there is no separate indexing command. Ask it to index:

Using jdatamunch, index ./data/sales.csv

It calls index_local, which returns the dataset name, row and column counts, and detected types. Then:

Using jdatamunch, describe the sales dataset and tell me which columns have missing values.

The agent calls describe_dataset, which returns column names, inferred types, cardinality, null rates, and sample values — without reading a single row into context. _meta.tokens_saved reports what that cost against loading the file.

Next step: describe_column for a distribution on one column, or aggregate to group and count server-side.


What you can do

  • Orient in a dataset you have never seen. describe_dataset, describe_column, sample_rows, get_distribution, get_correlations.
  • Query without loading rows. get_rows with filters, aggregate with group_by, run_sql, and plan_query to preview cost before running.
  • Work across datasets. suggest_joins, suggest_keys, join_datasets.
  • Find data-quality problems. get_dataset_health, data_health_radar, get_data_hotspots (null rate, cardinality anomalies, outlier spread), get_schema_drift, find_unused_columns.
  • Preflight schema changes. check_column_drop_safe and get_schema_impact before you drop or rename.
  • Search semantically. search_data and find_similar_columns when you know what you mean but not what it is called.
  • Index from GitHub. index_repo pulls CSV, Excel, Parquet, and JSONL straight from a repository, incrementally by HEAD SHA, private repos included.

39 tools in total. Full reference: USER-MANUAL.md.


How it works

Everything runs locally. The dataset is profiled on your machine and the index is stored on your machine; no hosted service is involved in indexing or querying.

text
data.csv ──► profiler ──► column stats + local index                                    │              MCP client ◄── query ─┘   (filters, aggregates, joins                                         execute server-side)

Aggregations and filters run against the stored data rather than being simulated in the model, which is why the row count barely affects the token cost of an answer. Sampling-based statistics report their error bounds (roughly 2% standard error) rather than presenting an estimate as exact.


Supported formats

FormatExtensionsInstall extra
CSV / TSV.csv, .tsvbuilt in
JSON Lines.jsonlbuilt in
Excel.xlsx, .xlspip install "jdatamunch-mcp[excel]"
Parquet.parquetpip install "jdatamunch-mcp[parquet]"

Security and privacy

Local-first. Your data is profiled and indexed on your machine and is not uploaded.

The base package's only default network behavior is an anonymous savings counter — a random ID plus aggregate token counts. No data, no column names, no file paths, no PII. Opt out completely:

bash
JDATAMUNCH_SHARE_SAVINGS=0

index_repo reaches GitHub only when you invoke it, using a token you supply. Embedding providers are called only when you configure one. There is no scheduler and no background reporting.

Full detail, including what each optional extra pulls in: SECURITY.md.


Limitations

  • Savings scale with file size. On a small spreadsheet the difference is negligible; the benchmark figures come from a 255 MB file.
  • Sampled statistics are sampled. Distribution and correlation figures on very large files carry a stated error bound rather than being exact.
  • Excel and Parquet need optional extras, which pull additional dependencies.
  • A default describe_column will not be labelled offloadable. jDataMunch does not assert index freshness it cannot prove, so the cheap freshness reading answers unknown and the annotation fails closed. That is deliberate — see the annotation section.
  • jDataMunch does not read code or prose. Code symbols belong to jcodemunch-mcp; documentation sections to jdocmunch-mcp.

Offloadable-work annotation

JMUNCH_OFFLOADABLE=1 (suite-wide) or JDATAMUNCH_OFFLOADABLE=1 (this server only) makes describe_column carry an advisory _meta.offloadable block marking whether the answer is simple and self-contained enough to hand to a cheaper model.

It is a label and nothing else. jDataMunch never calls another model, never routes the request, and never touches your API keys. Off by default; you decide what happens next.

The verdict is tri-state and reason-coded: not_evaluated ("we did not assess it") is not not_offloadable ("this is not simple work"). It fails closed — any unknown bearing on the answer disqualifies, because a false offloadable sends real work to a model that will confabulate over the gap. verify_with names the call that would adjudicate a cheaper model's answer.

Identical field contract across all three jMunch servers, with a pinned contract digest that fails the build in any one of them that drifts.


Documentation

DocWhat it covers
QUICKSTART.mdZero-to-indexed in three steps
USER-MANUAL.mdFull guide for analysts, ops, and non-developers
SECURITY.mdData handling, network behavior, vulnerability reporting
benchmarks/METHODOLOGY.mdHow the benchmark is run and what it measures
CONTRIBUTING.mdDevelopment setup and the CLA requirement
CHANGELOG.mdRelease history

Licensing and commercial use

Released under the jDataMunch-MCP Dual-Use License (full terms). Free for non-commercial use. Commercial use requires a paid license, one-time, sold by jMunch LLC.

jDataMunch only: Builder, $39 (1 developer) · Studio, $149 (up to 5) · Platform, $499 (org-wide internal deployment)

Full jMunch suite (code + docs + data): Trio Builder, $99 · Trio Studio, $449 · Trio Platform, $2,499

Personal and other non-commercial use is free. Work use at a for-profit company, or for client or paid work, needs a license, paid once.


Support and project status

Actively maintained. Issues and bug reports: GitHub Issues. Commercial licensing questions go through jcodemunch.com.

Part of the jMunch suite alongside jcodemunch-mcp (code symbols) and jdocmunch-mcp (documentation sections). All three implement jMRI, the open retrieval interface spec — same response envelope, same token accounting.

来源:README.md,提交 d830600

工具

39

index_local

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.

输入参数namepath必填depthsheetencodingdelimiterheader_rowincremental

index_repo

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.

输入参数url必填incrementalgithub_token

list_datasets

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.

无需输入参数。

list_repos

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.

无需输入参数。

describe_dataset

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.

输入参数detailcolumnsdataset必填columns_offset

describe_column

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.

输入参数top_ncolumn必填detailredactdataset必填histogram_binsredact_patterns

search_data

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).

输入参数query必填dataset必填semanticmax_resultssearch_scopesemantic_onlysemantic_weight

get_rows

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.

输入参数limitoffsetredactcolumnsdataset必填filtersorder_byorder_dirrow_formatredact_patternsredact_skip_columns

aggregate

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.

输入参数limithavingredactdataset必填filtersgroup_byorder_byorder_dirapproximateaggregations必填redact_patternsredact_skip_columns

sample_rows

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.

输入参数nseedmethodredactcolumnsdataset必填redact_patternsredact_skip_columns

get_schema_drift

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).

输入参数dataset_a必填dataset_b必填

get_data_hotspots

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.

输入参数top_ndataset必填window_daysinclude_runtime

get_correlations

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.

输入参数top_nmethodcolumnsdataset必填min_abs_correlation

join_datasets

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.

输入参数limitoffsetorder_bycolumns_acolumns_bdataset_a必填dataset_b必填filters_afilters_bjoin_typeorder_dirjoin_column_a必填另有 1 个

summarize_dataset

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.

输入参数dataset必填

delete_dataset

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

输入参数dataset必填

embed_dataset

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).

输入参数forcedataset必填

get_session_stats

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

无需输入参数。

validate_index

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.

输入参数dataset必填

get_dataset_history

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.

输入参数ndataset必填

get_dataset_health

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.

输入参数dataset必填

suggest_keys

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.

输入参数dataset必填

suggest_joins

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).

输入参数dataset必填

get_distribution

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.

输入参数binscolumn必填dataset必填

plan_query

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.

输入参数intentdataset必填

run_sql

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.

输入参数sql必填limitredactdatasets必填redact_patternsredact_skip_columns

get_schema_impact

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.

输入参数kindcolumn必填new_namenew_typemax_depthdataset_id必填window_days

check_column_drop_safe

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.

输入参数column必填dataset_id必填window_days

find_unused_columns

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.

输入参数min_callsdataset_id必填exclude_pkwindow_daysexclude_audit

ingest_sql_log

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).

输入参数redactsourcemax_rowsfile_path必填

find_similar_columns

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.

输入参数top_ndatasetsmin_scoresame_type_only

data_health_radar

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.

输入参数dataset必填window_daysinclude_runtime

diff_data_health_radar

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.

输入参数current必填baseline必填

get_redaction_log

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.

输入参数sourcedataset_id必填since_days

tune_weights

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.

输入参数resetdatasetset_weights

check_embedding_drift

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.

输入参数forcethreshold

analyze_perf

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.

输入参数toptoolwindow

finalize_handoff

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.

输入参数task必填dataset必填profilesections必填appendicesevidence_refs必填

jdatamunch_guide

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.

无需输入参数。

版本历史

2
  1. v1.33.0最新Nov 4, 2026
  2. v1.31.13Sep 16, 2026

评分

已满足适用检查项的 80%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。