claude desktop mcp setup
Claude Desktop MCP setup: add a server in five steps
Claude Desktop MCP setup comes down to five steps: find claude_desktop_config.json, add your server under mcpServers, fully quit and reopen Claude Desktop, check the tools menu, then run one query to confirm the server answers. This walkthrough uses dataset-mcp, a free MCP server that queries 149,673 rows of NFL, rent, Airbnb, and bounty data, as the worked example. Any stdio MCP server follows the same shape.
Step 1: find claude_desktop_config.json
Claude Desktop reads MCP servers from one JSON file. If it does not exist yet, create it:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
You also need Node.js 18 or newer, because the server runs through npx. Check with node --version in a terminal.
Step 2: add the server under mcpServers
Open the file (or create it) and add an entry under mcpServers. Each entry needs a command and args; Claude Desktop launches it over stdio at startup. This is the config from the dataset-mcp README, verbatim:
{
"mcpServers": {
"dataset-mcp": {
"command": "npx",
"args": ["-y", "github:jayjex/dataset-mcp"]
}
}
}
npm 12 refuses git-based installs by default (EALLOWGIT), and the github:jayjex/dataset-mcp form is git-based. If you are on npm 12, use the flag-carrying form the README also ships:
{
"mcpServers": {
"dataset-mcp": {
"command": "npx",
"args": ["--allow-git=all", "-y", "github:jayjex/dataset-mcp"]
}
}
}
Setting allow-git=github.com once in ~/.npmrc makes the plain form work again. npm 10 and 11 need no flag.
Step 3: run the command once in a terminal
Before blaming Claude Desktop for a broken server, prove the command itself runs. In a terminal:
# npm 12+ needs the allow-git flag; npm 10 and 11 work without it
npx --allow-git=all -y github:jayjex/dataset-mcp
The process starts and waits on stdin, which is correct for a stdio server. Ctrl-C out of it. If this step prints an error, Claude Desktop would show the same error, so fix it here first.
Step 4: fully quit Claude Desktop, then check the tools menu
Claude Desktop reads claude_desktop_config.json only at startup. Closing the window is not enough. macOS: Cmd-Q (or quit from the menu). Windows: right-click the tray icon and quit. Reopen it, 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: list_datasets, get_dataset_info, get_sample, query_dataset, and get_stats, each with no error state.
Step 5: run a first query
You never call the tools by hand. Ask in plain language: "What are the FY2026 fair market rents for ZIP code 77002 in Houston?" Claude Desktop picks query_dataset, builds the filter, and reads the rows back into the answer. The tool call looks like this:
query_dataset("hud-fmr-2026", {
where: [{ column: "zip", op: "=", value: "77002" }],
columns: ["zip", "area_name", "state", "fmr_0br", "fmr_1br",
"fmr_2br", "fmr_3br", "fmr_4br"],
limit: 10
})
And here is the real server output, captured live over stdio JSON-RPC on 2026-09-10. The first call downloaded the 51,895-row ZIP file into ~/.cache/dataset-mcp/; later calls re-verify the file's SHA-256 before answering:
total_rows_in_file: 51895 | total_matched: 1 | next_offset: null
sha256: 04ffb4597f37de264a2e3c91d39462b44539f650bd7f30b2938ca73971fbe975
{"zip": "77002",
"area_name": "Houston-The Woodlands-Sugar Land, TX HUD Metro FMR Area",
"state": "TX",
"fmr_0br": "1920", "fmr_1br": "1980", "fmr_2br": "2360",
"fmr_3br": "3170", "fmr_4br": "3960"}
One ZIP matched, the Houston HUD Metro FMR Area, with FY2026 rents from studio ($1,920) to 4-bedroom ($3,960). If the tool call appears in the transcript and the row count looks right, your setup works end to end. Good follow-up queries: get_stats on the NYC Airbnb price column, or query_dataset on 2025 NFL closing lines.
Troubleshooting
The server does not appear in the tools menu. Three usual causes: the JSON does not parse (a stray comma or missing brace breaks the whole file, so validate it), the entry is not nested under mcpServers, or you closed the window instead of quitting. Run the terminal sanity check from step 3, then fully quit and reopen.
EALLOWGIT on npm 12. npm 12 refuses git-based installs by default, and github:jayjex/dataset-mcp is git-based. Either switch the args to the --allow-git=all form from step 2, or put allow-git=github.com in ~/.npmrc.
npx returns 403 from npm. A custom registry line in ~/.npmrc or a corporate proxy that blocks git-hosted packages can answer 403 for the tarball fetch. Check npm config get registry, remove the override or allow github.com, and retry. Also check that the npx cache (~/.npm/_npx) is not half-written from an interrupted install; clearing it forces a clean fetch.
Claude Desktop shows the server with an error state. Open the logs: on macOS ~/Library/Logs/Claude/mcp.log and mcp-server-*.log, on Windows %APPDATA%\Claude\logs\. The log line for a failing launch usually matches what the terminal sanity check printed.
A tool call returns a network error. The server reads from jayjex.github.io, raw.githubusercontent.com, and github.com, and downloads files into a local cache on first use. Make sure those hosts are reachable from your machine; nothing else needs to be open.
Where to go next
The MCP server for Claude Desktop guide stays dataset-mcp-only and shows more verified outputs: 2025 NFL closing lines, NYC Airbnb price stats, and Superteam Earn bounties, plus timing numbers from the same session. The MCP tools for Claude page wires up the other two servers from the same shop, earn-bounty-scanner and solana-research-library, with their config JSON and registry entries. The full tool docs live on the dataset-mcp server page.
FAQ
Where is the Claude Desktop config file on macOS and Windows?
On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows: %APPDATA%\Claude\claude_desktop_config.json. Create the file if it does not exist yet, then add your server under mcpServers.
Do I need the --allow-git=all flag with dataset-mcp?
On npm 12, yes: the install form github:jayjex/dataset-mcp is git-based and npm 12 refuses it by default with EALLOWGIT, so the args become ["--allow-git=all", "-y", "github:jayjex/dataset-mcp"]. Alternatively set allow-git=github.com once in ~/.npmrc. npm 10 and 11 need no flag.
How do I verify an MCP server connected in Claude Desktop?
Fully quit Claude Desktop from the tray (macOS: Cmd-Q) and reopen it, start a new chat, and open the tools menu below the input box: the server should be listed with its tools and no error state. Then ask a question that needs one of the tools and watch the tool call appear in the transcript.