Integrations

How do I add UpRock to Cursor?

Add UpRock's MCP server to .cursor/mcp.json with the key read from the UPROCK_API_KEY environment variable, turn it on under Customize, and Cursor's agent can load pages on an opted-in device in the country you choose and search public video. A rule in .cursor/rules tells it when to reach for UpRock, and the same setup works in Cursor's command-line agent.

Updated · Read as markdown

What Cursor's agent gets

UpRock's MCP server runs over streamable HTTP at https://mcp.uprock.ai/mcp, with your API key in an Authorization: Bearer header (clients that can't send headers can use https://mcp.uprock.ai/<API_KEY>/mcp instead). Added as uprock, it gives Cursor's agent six tools. In Cursor's allowlists they're written uprock:<tool>:

ToolWhat it doesTypical prompt
uprock:crawl_fetchLoads a page in a real browser on a desktop or mobile device in the country you pass; returns a summary and links to the stored markdown and HTML"Fetch this pricing page as it looks in Japan"
uprock:resource_fetchReads a stored result in full, such as the markdown crawl_fetch savedUsed right after crawl_fetch
uprock:video_searchFinds moments in public video by meaning"Find a video that shows how to replace this part"
uprock:video_momentDescribes what happens in a stretch of one videoUsed after video_search
uprock:verifyLoads one URL from several regions with status, timings and screenshots"Check our site from Europe and Asia"
uprock:web_researchSearches several engines from chosen countriesUse with care: when we tested on 21 Oct 2026 it returned empty or off-topic results from some countries

Set it up

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for every project):

{  "mcpServers": {    "uprock": {      "url": "https://mcp.uprock.ai/mcp",      "headers": { "Authorization": "Bearer ${env:UPROCK_API_KEY}" }    }  }}

Cursor resolves ${env:UPROCK_API_KEY} from its environment, so the key never sits in the file. Set it in your shell profile (get a key at uprock.ai/app/api-keys), then restart Cursor so it picks the variable up:

export UPROCK_API_KEY=your-key   # in ~/.zshrc or ~/.bashrc

Then open Customize → MCPs and turn uprock on. The tools list at the top of the chat panel lets you switch individual tools on and off, and Output → MCP Logs shows what happened if the server doesn't start.

Approvals and a rule

Cursor asks before running an MCP tool. To let the agent fetch without asking each time, add the fetch tools to .cursor/permissions.json:

{  "mcpAllowlist": ["uprock:crawl_fetch", "uprock:resource_fetch"]}

Then tell the agent when UpRock is the right tool. Project rules live in .cursor/rules/ as .mdc files (a plain .md file there is ignored). With alwaysApply: false, Cursor reads the description and pulls the rule in when it's relevant:

---description: Fetching web pages from a specific country, or when another fetch failsalwaysApply: false---When a web page must be read as it looks in a specific country, or another fetch failedor returned 401/403/429, call uprock crawl_fetch with the url and country, thenresource_fetch on the markdown resource it returns. Ask before fetching more than 100 pages.

Save it as .cursor/rules/uprock.mdc. If you already use the UpRock skill with Claude Code, Cursor loads skills from .claude/skills/ too, so one SKILL.md covers both.

A working call

In the agent chat:

Fetch https://example.com as it looks from Germany with UpRock and tell me the page title.

The agent calls crawl_fetch with {"url": "https://example.com", "country": "DE"} and gets back a summary like this one, from our own call to the same server on 21 Oct 2026 (resource IDs shortened):

{  "status": "success",  "meta": { "url": "https://example.com", "title": "Example Domain", "content_type": "text/html" },  "content": { "markdown": { "resource": "crawl://…/markdown", "size_bytes": 1342 } }}

For the full page it follows up with resource_fetch on the markdown resource.

From a terminal, Cursor's command-line agent (agent) reads the same mcp.json:

agent mcp listagent -p "Fetch https://example.com from Germany with UpRock and give me the title" --approve-mcps --trust

Good to know

  • Restart after changing the key. ${env:…} is read from Cursor's own environment, so a new value in your shell profile needs a restart.
  • The key goes in a header. Cursor sends the headers field with every request, and ${env:UPROCK_API_KEY} keeps the key out of the file. If your Cursor build can't send headers to remote servers, put the key in the URL instead: "url": "https://mcp.uprock.ai/${env:UPROCK_API_KEY}/mcp".
  • Time. A fresh fetch takes 10 to 40 seconds and a recently fetched page about a second; long pages come back through resource_fetch rather than in the first response.

We checked the config format against Cursor's docs and made the same crawl_fetch and resource_fetch calls against the live UpRock server through the official MCP SDK on 21 Oct 2026. We didn't run them inside Cursor itself, which needs a signed-in Cursor account.

FAQ

Does Cursor support environment variables in mcp.json?

Yes. Cursor resolves ${env:NAME} in the command, args, env, url and headers fields, so the URL can read your key from UPROCK_API_KEY. For remote servers, Cursor's docs say to set the variable in your shell profile and restart Cursor after changing it.

Project or global config?

Either. .cursor/mcp.json in a project applies to that project and can be committed if the key comes from an environment variable; ~/.cursor/mcp.json applies everywhere. Cursor merges the two, and the project file wins when both define the same server name.

How do I stop Cursor asking before every UpRock call?

Add "uprock:crawl_fetch" and "uprock:resource_fetch" (or "uprock:*") to mcpAllowlist in .cursor/permissions.json or ~/.cursor/permissions.json. Cursor asks for approval before MCP tools by default.

Can I use the same skill in Cursor and Claude Code?

Yes. Cursor loads skills from .cursor/skills and .agents/skills, and also from Claude's .claude/skills folders, so the UpRock SKILL.md can live in one place for both.

Does the Cursor command-line agent use this config?

Yes. Cursor's CLI, run as agent, reads your mcp.json. agent mcp list shows the servers, and agent -p with --approve-mcps runs a one-shot prompt that can use them.

Other use cases to explore

References

  1. Cursor docs, Model Context Protocol (MCP), checked 21 Oct 2026
  2. Cursor help, MCP setup, checked 21 Oct 2026
  3. Cursor docs, Permissions (MCP allowlist), checked 21 Oct 2026
  4. Cursor docs, Rules, checked 21 Oct 2026
  5. Cursor docs, Skills, checked 21 Oct 2026
  6. Cursor docs, CLI (using MCP), checked 21 Oct 2026
  7. UpRock, setup for every agent, checked 21 Oct 2026
  8. UpRock, everything in one file (API, CLI, MCP, pricing), checked 21 Oct 2026

Get started

Add UpRock in one paste.

Paste this into Claude Code, Codex, Cursor or any agent with a terminal. It reads our docs, sets up the MCP server or CLI, and tells you the cost before it spends anything.

Set up UpRock for me: read https://uprock.ai/agents.md, connect the UpRock MCP server, and run one test crawl. Tell me what it costs before you spend anything.

How do I add UpRock to Cursor? | UpRock AI