How do I connect the Cursor agent to Tares over MCP?
Tares connects to the Cursor agent with one entry in an mcp.json file that points at your Tares MCP endpoint. Once you approve the server in Cursor, the agent can read the correlated timeline of your logs, metrics, alerts and findings. Locally the endpoint is http://localhost:8788/mcp.
How it works
Cursor talks to Tares through the Tares MCP server, which proxies to the Tares daemon. Cursor discovers the Tares tools and answers from the correlated timeline, so one question reads across all your sources.
The endpoint depends on where Tares runs:
- Your machine (
tares up):http://localhost:8788/mcp. The daemon alone does not serve/mcp, so you start the MCP server as a second process. - Your own server: your domain with
/mcpon the end, over HTTPS. - Tares Cloud: the endpoint is shown in your console under Connect, and each instance has its own hostname.
On a server or Tares Cloud instance the MCP server is already running, so there is nothing to start. The other clients use a different step: Claude Code uses the Tares plugin or the claude CLI, and Codex uses codex mcp add. See Connecting agents (MCP) for each of them.
Set it up
-
Start Tares on your machine and leave it running.
tares up -
Start the MCP server as a second process with
tares mcp. Use the streamable-http transport on port 8788 and point it at the daemon athttp://localhost:8787. Skip this step on a server or Tares Cloud instance. -
Open
~/.cursor/mcp.jsonfor a global setup, or.cursor/mcp.jsonin a project for a per-project setup. Add the Tares server:{ "mcpServers": { "tares": { "url": "http://localhost:8788/mcp" } } } -
For a server or Tares Cloud instance, replace the URL with your own endpoint. The console’s Connect page generates the exact command for your client with the endpoint and token filled in.
-
In Cursor, open Settings, then MCP, and approve the Tares server.
-
Ask Cursor: Use tares: what are you ingesting right now? The agent calls
catalog_listand answers with your sources, triggers and projects. In the console, Reads lists each read as it happens, taggedclient = mcp.
On an open local instance (plain tares up) no credential is needed. A secured instance, which includes every server and Tares Cloud instance, requires one on the MCP surface. Use an API key with the read scope, sent as an Authorization Bearer header. For an agent that should work inside a single project, use a project key instead. It reads that project and records findings in it, and nothing else.
What you get
- Cursor answers questions such as what happened to api-server in the last 15 minutes? from one correlated, time-ordered timeline.
- The agent can
readany entity on the fly, or usecatalog_listandcatalog_describeto learn what is there. - It can write back.
create_triggerwakes it when something happens again,rememberstores an observation, andrecord_findingrecords a finding in a project. - A key’s scope decides which tools succeed. A
readkey gets the read surface, and writing needs the matching scope. - The setup tools let you configure sources by conversation. Ask Cursor to ingest a Postgres table and it uses
discover_source,test_sourceandcreate_source, against the same validation as the console form.
For the wider picture of how agents fit into incident work, see AI SRE.
When something else fits
- If you work in Claude Code, the Tares plugin is the default path. It wires the MCP read-back and session capture in one install.
- If a client supports only stdio servers, use the stdio transport with
tares-mcp, or bridge to the HTTP endpoint withnpx mcp-remote. Connecting agents (MCP) shows the config for both. - If you would rather not wire up an external client, the console’s Ask is a chat loop hosted inside Tares with the same read tools.