data·vault_
← Catalog

MCP server for Claude Desktop: connect dataset-mcp

Published 2026-09-10. Install steps and config tested against dataset-mcp v1.1.0; the outputs below were captured live on the same day.

What this setup does

dataset-mcp is an MCP server that plugs into Claude Desktop. Once it is connected, you can ask Claude for Texas rent numbers, 2025 NFL closing lines, or NYC Airbnb price stats, and Claude calls the server's tools instead of guessing from training data. The server answers from real files: 149,673 rows across five datasets (NFL games, HUD Fair Market Rents, Airbnb listings, Superteam Earn bounties, and scraping scripts).

There is nothing to configure on the data side and no API key. The first query of a file downloads it from a public GitHub release into ~/.cache/dataset-mcp/, and every later load re-verifies the file's SHA-256 before answering.

Install the server

Claude Desktop starts the server for you, so the only manual step is a one-time sanity check that npx can fetch and run it. You need Node.js 18 or newer.

# run it once to sanity-check (npm 12+ needs the allow-git flag)
npx --allow-git=all -y github:jayjex/dataset-mcp

The process starts and waits on stdin, which is correct; Ctrl-C out of it. On npm 10 or 11 the plain form works: npx -y github:jayjex/dataset-mcp. If npx prints EALLOWGIT, that is npm 12 refusing git-based installs, covered again in the config below.

Add the MCP server to claude_desktop_config.json

Claude Desktop reads its MCP servers from claude_desktop_config.json. On macOS the file lives at ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows at %APPDATA%\Claude\claude_desktop_config.json. Open it (create it if it does not exist) and add dataset-mcp under mcpServers. This is the config from the README, verbatim:

{
  "mcpServers": {
    "dataset-mcp": {
      "command": "npx",
      "args": ["-y", "github:jayjex/dataset-mcp"]
    }
  }
}

On npm 12, use the flag-carrying form instead:

{
  "mcpServers": {
    "dataset-mcp": {
      "command": "npx",
      "args": ["--allow-git=all", "-y", "github:jayjex/dataset-mcp"]
    }
  }
}

Setting allow-git=github.com once in ~/.npmrc removes the need for the flag in both places.

Then fully quit Claude Desktop (macOS: Cmd-Q, not just closing the window; Windows: right-click the tray icon and quit) and reopen it. Claude Desktop launches every server in the config over stdio at startup. To confirm the connection, start a new chat and open the tools menu (the search-and-tools icon below the input box): dataset-mcp should appear with its five tools, and each tool should show no error state. Prefer a single worked walkthrough with one captured output? The Claude Desktop MCP setup page takes the same install in five steps, and two more servers from the same shop, earn-bounty-scanner and solana-research-library, have their own config JSON and registry entries on the MCP tools for Claude page; the MCP server directory maps where servers get indexed across the ecosystem.

If you edit the config later, quit and reopen Claude Desktop again. The file is only read at startup.

What Claude can query once it is connected

ToolWhat it returns
list_datasets()every dataset with row counts, full-query availability, and release sizes
get_dataset_info(slug)file list with rows, bytes, SHA-256, attribution, license, and query tips
get_sample(slug, format)about 22 preview rows per dataset, JSON or CSV
query_dataset(slug, {...})filter and paginate the full file: where clauses with =, contains, gt, lt, column picking, up to 100 rows per call, next_offset paging
get_stats(slug, {...})row count, non-empty and unique counts, numeric min/max/mean, top-N frequencies

You never call these by hand. Ask in plain language ("what is the average 2-bedroom fair market rent in Texas ZIPs?") and Claude Desktop picks the tool, builds the filter, and reads the rows back into the answer.

Verified outputs from a live session

These outputs come from driving dataset-mcp v1.1.0 over raw JSON-RPC stdio on 2026-09-10, the same transport Claude Desktop uses. JSON is abridged to the fields that matter; the counts and values are unchanged.

Texas 2-bedroom rents, 51,895-row ZIP table

query_dataset("hud-fmr-2026",
  { where: [{ column: "state", op: "=", value: "TX" }],
    columns: ["zip", "area_name", "state", "fmr_2br"], limit: 5 })

total_rows_in_file: 51895 | total_matched: 3247 | next_offset: 5
sha256: 04ffb4597f37de264a2e3c91d39462b44539f650bd7f30b2938ca73971fbe975
  {"zip": "76437", "area_name": "Abilene, TX MSA", "state": "TX", "fmr_2br": "1090"}
  {"zip": "76443", "area_name": "Abilene, TX MSA", "state": "TX", "fmr_2br": "1090"}
  {"zip": "76464", "area_name": "Abilene, TX MSA", "state": "TX", "fmr_2br": "1090"}
  {"zip": "76469", "area_name": "Abilene, TX MSA", "state": "TX", "fmr_2br": "1090"}
  {"zip": "79501", "area_name": "Abilene, TX MSA", "state": "TX", "fmr_2br": "1140"}

Every 2025 NFL game with closing lines

query_dataset("nfl-games",
  { where: [{ column: "season", op: "=", value: 2025 }],
    columns: ["game_id","gameday","away_team","away_score","home_team",
              "home_score","spread_line","total_line"], limit: 3 })

total_rows_in_file: 7548 | total_matched: 285 | next_offset: 3
  {"game_id": "2025_01_DAL_PHI", "gameday": "2025-09-04", "away_team": "DAL",
   "away_score": "20", "home_team": "PHI", "home_score": "24",
   "spread_line": "8.5", "total_line": "47.5"}
  {"game_id": "2025_01_KC_LAC", "gameday": "2025-09-05", "away_team": "KC",
   "away_score": "21", "home_team": "LAC", "home_score": "27",
   "spread_line": "-3", "total_line": "47.5"}
  {"game_id": "2025_01_TB_ATL", "gameday": "2025-09-07", "away_team": "TB",
   "away_score": "23", "home_team": "ATL", "home_score": "20",
   "spread_line": "-1.5", "total_line": "47.5"}

NYC Airbnb price distribution

get_stats("airbnb-six-cities", { file: "airbnb-new-york-city.csv", column: "price" })

rows: 30234 | non_empty: 20331 | empty: 9903 | unique_count: 12114
numeric: min 4.58 | max 31210.79 | mean 267.35
top values: 59.11 x62, 61.01 x45, 209.00 x32, 279.00 x30, 165.93 x28

Superteam Earn bounties over $5,000

query_dataset("earn-bounties",
  { where: [{ column: "rewardAmount", op: "gt", value: 5000 }],
    columns: ["title", "rewardAmount", "token"], limit: 10 })

total_rows_in_file: 51 | total_matched: 6 | next_offset: null
  {"title": "Create Content for Breakpoint 2026", "rewardAmount": 8000, "token": "USDG"}
  {"title": "Solana Summit Serbia Content Bounty: $10,000 for the best summit content",
   "rewardAmount": 10000, "token": "USDG"}
  ... (6 rows: each listing appears once per API page, so 2 unique listings x 3 pages)

Timing from the same session: after the files were cached, the NFL query ran in 306 ms. A cold first call adds the one-time download of the file (the 3.6 MB NYC file took about 1.5 s including parse). Claude Desktop typically shows the tool call and its arguments in the transcript, so you can check the filter it built.

Troubleshooting

EALLOWGIT on startup. npm 12 refuses git-based installs and the server is fetched as github:jayjex/dataset-mcp. Either switch the args to the --allow-git=all form shown above or put allow-git=github.com in ~/.npmrc.

The server does not appear in the tools menu. Check that the JSON parses (a stray comma breaks the whole file), that the entry is nested under mcpServers, and that you fully quit and reopened Claude Desktop rather than closing the window.

A tool returns a network error. The server reads from jayjex.github.io, raw.githubusercontent.com, and github.com; make sure those are reachable from your machine. Nothing else needs to be open.

Suspicious numbers. Unlikely to come from a stale cache: every cached file is re-verified against the manifest SHA-256 on load, and a mismatch triggers one fresh download instead of serving wrong rows.

Get the full pack

Querying covers exploration well, but a real project usually wants the raw CSVs in its own pipeline: pinned snapshots, spreadsheets, scripts that run without a chat client. The complete packs behind these datasets are available as one-off downloads:

Get the full pack

PackRowsWhat you get
NFL games and betting lines 1999-20267,548full CSV zip: scores, spreads, totals, moneylines
HUD Fair Market Rents FY202651,895ZIP, county, and state tables with a data dictionary
Airbnb listings, 6 US cities90,169per-city CSVs, 2026 snapshots
Superteam Earn listings and API routes51 cardscards file plus 186+ reverse-engineered API routes

Details and sample files are on each product page, and the dataset-mcp server page documents the tool API in depth. For the data behind the examples above, see the HUD rent data guide and the NFL games data guide.

FAQ

How do I add an MCP server to Claude Desktop?

Edit claude_desktop_config.json (on macOS: ~/Library/Application Support/Claude/, on Windows: %APPDATA%\Claude\), add an entry under mcpServers with a command and args, save, and fully quit Claude Desktop from the tray or the Cmd-Q menu before reopening it. Claude Desktop then starts the server over stdio and lists its tools in the chat's tools menu.

Why does dataset-mcp fail to start in Claude Desktop with an EALLOWGIT error?

npm 12 refuses git-based installs by default, and the install form github:jayjex/dataset-mcp is git-based. Add --allow-git=all to the npx args in claude_desktop_config.json, or set allow-git=github.com once in ~/.npmrc. npm 10 and 11 need no flag.

What data can Claude Desktop query through dataset-mcp?

Five datasets totalling 149,673 rows: 7,548 NFL games with closing spreads and moneylines (1999-2026), 51,895 HUD Fair Market Rent rows by ZIP for FY2026, 90,169 Airbnb listings across six US cities, Superteam Earn bounty cards, and sample Playwright scraping scripts. The full files download once into a local cache and are verified against SHA-256 hashes on every load.