MCP server for Claude Desktop: connect dataset-mcp
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
| Tool | What 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:
| Pack | Rows | What you get |
|---|---|---|
| NFL games and betting lines 1999-2026 | 7,548 | full CSV zip: scores, spreads, totals, moneylines |
| HUD Fair Market Rents FY2026 | 51,895 | ZIP, county, and state tables with a data dictionary |
| Airbnb listings, 6 US cities | 90,169 | per-city CSVs, 2026 snapshots |
| Superteam Earn listings and API routes | 51 cards | cards 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.