Last Tuesday we finished verifying the Anyshift plugin on Cursor 3.15.6 on Linux. Codex was already working. Cursor was still marked unverified in the README, so we ran the install against our own graph until OAuth, tool discovery, and one authenticated read all passed.

The path that worked was the plugin package, not a marketplace click. We cloned it into ~/.cursor/plugins/local, reloaded the window, completed browser OAuth when Cursor asked, and consented to one Anyshift project.

Stephane's announcement is the product post. This is the Cursor walkthrough: install the plugin, finish OAuth, and use the prompts that returned production evidence.

Install the plugin

Clone the current package into Cursor's local plugin directory:

git clone --depth 1 \
  https://github.com/anyshift-io/agent-plugin.git \
  ~/.cursor/plugins/local/agent-plugin

Reload the Cursor window (Developer: Reload Window). Cursor discovers plugins from ~/.cursor/plugins/local. Do not symlink a checkout from outside that directory into it. Cursor 3.15.6 skips out-of-tree symlink targets.

Open Customize and confirm that the plugin, the packaged skill, and the Graph MCP server are enabled. Cursor then challenges you to authenticate: in our verification that showed up as needsAuth plus a client-side mcp_auth helper, which is Cursor's helper, not one of the Graph tools. After the Anyshift consent page, we started a new Agent chat so the skill and tools loaded.

The plugin already connects Graph MCP. Do not also add https://graph.anyshift.io/mcp to ~/.cursor/mcp.json. Installing both registers two Cursor MCP clients against the same endpoint, and removing one of them can clear stored OAuth credentials. We did that once while testing uninstall and had to consent again.

The Graph tools are read-only. The OAuth grant is scoped to the project you pick. The open-source package contains no token, no project id, and no database name.

You need an Anyshift project that already has production graph data. If you don't, talk to us before you expect these prompts to return anything useful.

Cursor Marketplace one-click install is still unverified for this package. A cursor.directory listing is the cleaner public path once it is live. Until then, the local plugin directory is the install we actually ran.

What we asked it

After OAuth, Cursor discovered six Graph tools: resolve_resource, get_dependencies, get_blast_radius, get_recent_changes, get_operational_impact, and query_graph. get_exposure is on the current Graph surface: we have not re-run the Cursor compatibility check against it, so we're not claiming that tool here.

The first authenticated call we made was get_recent_changes: it came back with structured production evidence and an evidence timestamp, which was the bar we set for "this actually works."

Then we used this prompt against our graph before deploying graph-api-production:

Before deploying graph-api-production, what should I check?

That name matched three resources: the declared service, the ECS service actually running, and its log group. The agent kept the ECS service and followed its current relationships: two upstream, two downstream, and 23 signal events from the previous 24 hours, including the task definition bump from revision 61 to 62.

Two other prompts that fit a Cursor session:

Review my current Terraform changes. Resolve the affected production resources, then report their direct dependencies, bounded blast radius, recent related changes, post-deployment checks, and explicit unknowns.

checkout-worker started restarting. What changed around it in the last two hours, and what could be affected downstream?

If a name is overloaded, start with resolve_resource and pass that candidate's stable id into later tools. An unqualified name is still deterministic, but it can pick a different resource kind that happens to share the name.

An empty result is not proof that nothing exists: Anyshift reports what its connected sources observed, and when they observed it.

How do you install it in Cursor?

Clone the package into ~/.cursor/plugins/local/agent-plugin, reload the window, confirm the plugin in Customize, complete browser OAuth, and start a new Agent chat. Cursor 3.15.6 or newer is the verified client. The installation guide covers Codex, VS Code, Claude Code, and the other clients.

Why did the OAuth tokens disappear?

The plugin already loads Graph MCP. Adding the same URL in ~/.cursor/mcp.json registers two Cursor MCP clients against the same endpoint. Removing one of them can clear stored OAuth credentials. Use the plugin, not both.

To uninstall, delete ~/.cursor/plugins/local/agent-plugin and reload the window. If you also added a standalone MCP entry, remove the agent-plugin entry from ~/.cursor/mcp.json (or the matching entry created by cursor --add-mcp).

You can revoke the grant from Authorized Apps on your Anyshift profile if you need to consent to a different project.

Which tools should you expect?

The Cursor 3.15.6 verification found resolve_resource, get_dependencies, get_blast_radius, get_recent_changes, get_operational_impact, and query_graph. get_exposure is on the current Graph surface, but that Cursor row has not been re-checked against it.

The package source, releases, and compatibility table live in `anyshift-io/agent-plugin`.