How do I give Cursor access to production errors?
Connect an error tracker's MCP server. With Runheed, add its URL to .cursor/mcp.json and sign in, and Cursor's agent can list, read and resolve the exceptions your app reports. A project rule then tells it to check those errors before it debugs. Cursor gets no access to your servers.
Connect it
- Install the Runheed SDK in the app that throws the errors and initialize it at startup (setup by framework).
- Create .cursor/mcp.json with the block below. Use ~/.cursor/mcp.json instead to have it in every project.
- Open Customize in the Cursor sidebar, find runheed and click Connect. Sign in and click Allow.
- In the agent chat, ask "List unresolved Runheed errors from the last 24 hours."
{
"mcpServers": {
"runheed": {
"url": "https://runheed.com/api/mcp"
}
}
}The file holds only a URL, so it is safe to commit. The Cursor setup page has a one-click install and the local server with an agent key.
Make it check errors first
Connecting the server does not make the agent use it. A project rule does. Rules live in .cursor/rules and must use the .mdc extension; Cursor skips plain .md files in that folder. With a description and alwaysApply set to false, the agent includes the rule when it judges the description relevant. Set alwaysApply to true to include it in every chat.
---
description: Use when debugging a bug report, a failing request or anything broken in production
alwaysApply: false
---
Production errors from this app are in Runheed, available through the runheed MCP tools.
- Before debugging, call runheed_search_errors or runheed_get_recent and read the
stack trace with runheed_get_error. Don't guess from the code alone.
- Write a failing test that reproduces the error before changing any code.
- After the fix is committed, call runheed_resolve_error with the commit hash.
- Never ignore an error unless I ask you to.Cursor also reads a plain AGENTS.md in the project root, without the metadata. If your repository already has one, the same instructions can go there.
Decide what runs without asking
Cursor asks for approval before it uses an MCP tool by default. In Auto-review mode, allowlisted tools run immediately, and others go through its classifier. Reasonable split:
| Tools | What they do | Suggestion |
|---|---|---|
| runheed_get_recent, runheed_search_errors, runheed_get_error, runheed_get_error_context, runheed_get_trends, runheed_get_project_health | Read errors and health | Allowlist |
| runheed_resolve_error, runheed_ignore_error, runheed_unignore_error | Change an error's status, which can be flipped back | Keep approval |
Prompts to try
- "What broke in production since the last deploy? Fix the top one and resolve it with the commit hash."
- "Show me the stack trace and breadcrumbs for the newest TypeError."
- "Did errors go up after yesterday's release?"
- "Write a failing test for the top error before you change any code."
Cursor Cloud Agents
Cursor's docs say Cloud Agents support MCP servers over HTTP and stdio, with OAuth, and that team servers set under Dashboard > Plugins & MCPs are available to them. They work on a separate branch and push changes for handoff. That fits a fix that arrives as a pull request. We have not run this path, so check the sign-in on your first run.
Questions
- Can Cursor read my production logs this way?
- No. It reads exceptions your app reports to Runheed. Log files stay where they are.
- Does Cursor need a key or access to my servers?
- No. The remote server signs you in with OAuth and has no route to your servers. Its tools read errors and change their status. If you use the local server with an agent key instead, keep that file out of git or use the global file.
- Which languages are covered?
- The SDKs cover Node.js, TypeScript and Python, and any other language can post JSON to the ingest endpoint. Browser-only errors are not captured; there is no browser SDK yet.
- What does it cost?
- Plans start at $29/month for 50,000 events a month, 3 projects and 30 days of history.