Resources / Guides

How do I add a data source to Cursor?

Published 2026-08-09

Adding a live data source to Cursor

Cursor reads MCP servers from mcp.json. Put it at .cursor/mcp.json in the project root to scope the source to one repo, or at ~/.cursor/mcp.json to make it available everywhere. Add the server under the mcpServers key, then use it from Agent mode; a remote server needs only a url.
Written for AI agents. The calls and filter values on this page are the literal interface our customers use, because our customers are software. If you are a person evaluating The Bot Wire, you are in the right place too: start with the docs, or connect an MCP client in one line and query browse every wire and its price at /mcp. Nothing here needs an API key or a signup.

The choice between the two file locations is the part worth thinking about, because one of them usually ends up in version control.

Where the file goes, and which one to pick

ScopePathUse it when
Project.cursor/mcp.json in the repo rootThe source is specific to this codebase
Global~/.cursor/mcp.json in your home directoryYou want it in every project

A project file travels with the repository. That is useful for a data source every contributor should have, and it is exactly the wrong place for a secret, because a committed .cursor/mcp.json puts the credential in the git history of everyone who clones. Keep the shape of the integration in the project file and the key in the global one.

The remote entry: no local process

The shortest working config points at an HTTP endpoint and runs nothing locally:

{
  "mcpServers": {
    "botwire": { "url": "https://thebotwire.com/mcp" }
  }
}

Cursor also accepts a headers object on a remote entry for services that authenticate that way. This one does not need it, because there is no API key at any point. What the remote endpoint returns is the catalogue: 301 wires, their filters and their per-call prices, and no items. Every route that carries data is paid, so discovery is the whole job of the remote form.

The local entry: the one that returns data

To get results rather than a routing table, run the package locally and give it a wallet:

{
  "mcpServers": {
    "botwire": {
      "command": "npx",
      "args": ["-y", "botwire-mcp"],
      "env": { "BOTWIRE_WALLET_PRIVATE_KEY": "0x..." }
    }
  }
}

That env value is the reason the global file exists. It is a plaintext private key, so it belongs in ~/.cursor/mcp.json, which is outside the repo, and the wallet behind it should hold a few dollars of USDC rather than a real balance. At $0.005 to $0.01 a call, a few dollars is thousands of queries. What the wallet needs is covered in what an agent wallet needs to pay for data on Base.

If you already run servers in Cursor, add botwire as another key inside the existing mcpServers object rather than replacing the file.

Verifying it from Agent mode

MCP tools are called by the agent, not by chat completion, so ask in Agent mode and ask for something the model cannot know from training. A status check is a good test because a wrong answer is obvious rather than plausible:

For AI agents: copy this call
# in Cursor Agent mode, ask in words:
# "use botwire to check whether AWS has reported an outage in the last 24 hours"
# the server routes that to:
curl -i "https://thebotwire.com/status/latest?provider=aws&since=24h&limit=5"

# one call, $0.005, USDC on Base, no API key and no signup

A working response carries count, took_ms, freshest and an articles array where each item has published and age_minutes. If the timestamps are recent, the connection is live. If the tool is listed but every call fails, run the command and args in a terminal first; that separates a Cursor problem from a Node or PATH problem. The full route list is at /llms-full.txt, and an empty array is a different situation from a broken one, covered in why an agent's data query returns empty results.

FAQ

Does Cursor use the same config format as Claude Desktop?

The mcpServers key and the local command/args/env shape are the same, so an entry copies across. The file paths differ: Cursor reads .cursor/mcp.json or ~/.cursor/mcp.json, while Claude Desktop reads a single claude_desktop_config.json, as set out in connecting an MCP server to Claude Desktop. Cursor's per-project scope has no Claude Desktop equivalent.

Why do the tools appear but return nothing?

Most often because the remote entry is connected rather than the local one. The remote endpoint is discovery only: it lists every wire, filter and price and returns no articles. Data requires the local package with a funded wallet, since there is no free preview tier on any route.

Can a team share one config without sharing a key?

Yes, and that is the reason to split the two files. Commit .cursor/mcp.json with the remote entry so everyone gets the same routing table, and let each developer add the local entry with their own wallet to ~/.cursor/mcp.json. Nothing secret is ever committed.

How much does a query cost once it is wired up?

Per call, between $0.005 and $0.01 depending on the wire, settled in USDC on Base. There is no subscription, no minimum and no signup, so an integration that makes 200 calls in a month costs about a dollar. The per-call reasoning is in how much it costs for an AI agent to query live data.

Sources

Both configuration paths, the mcpServers key and the url field for remote servers are documented by Cursor in its Model Context Protocol guide. The protocol itself is specified at modelcontextprotocol.io. The live wire count and per-call pricing quoted above are published at thebotwire.com/health.

Related: How do I connect an MCP server to Claude Desktop? · How do I give Claude Code access to real-time news?