Skip to main content
Glama

Cursor Delegate

Stop burning your frontier agent's limits on boilerplate.

Delegate edits to Cursor's CLI agent โ€” your agent writes the brief and reviews the diff.

npm version npm downloads MCP Registry cursor-delegate-mcp MCP server node license: MIT tests

Use your best coding agent where its judgment matters most: understanding the task, shaping the plan, and reviewing the result.

Cursor Delegate is the MCP bridge that lets Claude Code, ChatGPT/Codex, Copilot โ€” or any MCP client โ€” hand implementation to Cursor's CLI agent, then get a clean, structured result back for review.

Demo

๐Ÿง  Frontier quality, kept

Your assistant does what frontier models are for: understands the task, writes a precise brief, reviews the finished diff. Composer 2.5 runs the implementation loop under that brief. The bundled skill puts the review step in the loop โ€” the agent that scoped the work reads the changed files back before reporting.

Related MCP server: cursor-mcp-server

โšก Done faster

Composer 2.5 is built for throughput on multi-file edits. The whole delegation is one call โ€” brief in, result out โ€” so you review a finished diff instead of babysitting edits landing file by file.

๐Ÿ”‹ Your limits stop being the bottleneck

Composer and Grok run on their own usage allowance on every Cursor plan โ€” separate from the API-priced main quota, and generous enough that most people never reach the ceiling. Your Claude or Codex subscription spends tokens only on the brief and the review, so the 5-hour window and weekly limits go a lot further. Paying per token on API? That grind moves onto Cursor capacity you already have.

You and your agent plan and review; the MCP delegate tool hands the brief to cursor-agent (Composer 2.5), which implements and edits your workspace; a clean result comes back with what changed, which files, and the plan, for your agent to review

Delegate result payload

Features

  • ๐Ÿค Native plugins โ€” install into Claude Code, ChatGPT/Codex, or GitHub Copilot CLI and just say "delegate this to Cursor". The shared skill teaches your agent how to delegate well.

  • ๐Ÿ’ฌ No stalled runs โ€” if Cursor needs to clarify, it ends the turn and returns the question as a normal result. Your agent reads it and answers by resuming the same session โ€” nothing blocks on a modal waiting for input.

  • ๐Ÿ“ฆ Clean, named results โ€” final answer, changed files, session id, and the plan, returned as one compact JSON payload. Nothing to scrape.

  • ๐Ÿ“‹ Plan first โ€” plan mode: Cursor drafts a plan, you review it, then the same session implements it.

  • ๐Ÿ” Ask anything โ€” ask mode: Q&A over your codebase.

  • ๐Ÿฉบ Self-diagnosing โ€” a doctor tool that tells you exactly what's missing if setup isn't right.

  • ๐Ÿ”Œ Portable โ€” plain stdio MCP, so it runs anywhere: VS Code, JetBrains, Windsurf, Visual Studio, OpenCode, Antigravity, and more.

plan and ask are instructions to the agent, and workspace is its working directory โ€” Security and the delegate reference spell out what the bridge enforces and what it reports back.

Install

You need Node.js 20+ and the Cursor CLI, logged in (cursor-agent login).

Claude Code

/plugin marketplace add andreilungeanu/cursor-delegate-mcp
/plugin install cursor-delegate@cursor-delegate-mcp

Then just ask:

Delegate to Cursor: migrate src/api from callbacks to async/await and update the tests, then walk me through what changed.

That's the whole loop โ€” Claude writes the brief, Cursor grinds through the files, Claude walks you through the diff.

ChatGPT desktop / Codex

codex plugin marketplace add andreilungeanu/cursor-delegate-mcp
codex plugin add cursor-delegate@cursor-delegate-mcp

GitHub Copilot CLI

copilot plugin install andreilungeanu/cursor-delegate-mcp

Any other MCP client

{
  "mcpServers": {
    "cursor-delegate": {
      "command": "npx",
      "args": ["-y", "cursor-delegate-mcp"]
    }
  }
}

Client-specific config locations

Install in VS Code Install in VS Code Insiders

Or add it manually:

{
  "servers": {
    "cursor-delegate": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "cursor-delegate-mcp"]
    }
  }
}

Or run Chat: Install Plugin From Source with this repository's URL.

Under Settings โ†’ Tools โ†’ AI Assistant โ†’ Model Context Protocol (MCP), add a server with command npx and arguments -y cursor-delegate-mcp.

Same mcpServers block as the generic snippet above. Cascade caps you at 100 tools across all servers.

Same servers + type: "stdio" shape as VS Code. Requires Visual Studio 2026, or 2022 17.14+. Note the top-level key is servers, not mcpServers. Visual Studio also discovers .mcp.json next to the solution, plus .vscode/mcp.json.

OpenCode does not use mcpServers. Local servers go under mcp, with type: "local" and command as one array:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cursor-delegate": {
      "type": "local",
      "command": ["npx", "-y", "cursor-delegate-mcp"],
      "enabled": true
    }
  }
}

Same mcpServers block as the generic snippet above. In the IDE: โ€ฆ on the agent panel โ†’ MCP Servers โ†’ Manage MCP Servers โ†’ View raw config. Antigravity 2.0, IDE, and CLI share the Gemini config file. You may need to approve the server's tools on first run.

Same mcpServers block as the generic snippet above. Workspace file wins when both exist.

Same shape as OpenCode: type: "local" and command as one array. In the VS Code extension: Settings โ†’ MCP โ†’ Add Server โ†’ Local (stdio). On Windows, if npx is not found, use command cmd with arguments /c, npx, -y, cursor-delegate-mcp.

{
  "context_servers": {
    "cursor-delegate": {
      "command": "npx",
      "args": ["-y", "cursor-delegate-mcp"],
      "env": {}
    }
  }
}

Zed's native agent uses this. External ACP agents in Zed read their own MCP config unless you forward Zed's servers.

License

MIT ยฉ Andrei Lungeanu

Technical reference ยท Security ยท Privacy ยท Terms ยท Changelog

Available Tools

3 tools
cancelA
DestructiveIdempotent

Best-effort cancel of an in-flight delegation by sessionId. session/cancel is advisory โ€” the agent may finish the turn anyway, and the delegate result then carries cancelRequested. Status: cancelled, killed (agent process observed to exit), not-running (turn already ended, still resumable), not-found (id not in this process's recent session history).

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoKill the agent process if the turn is still running after a short grace period.
sessionIdYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's job is to add context beyond that. It does: it discloses the advisory/non-guaranteed nature, notes that a delegate result may still carry cancelRequested, and enumerates the full status space (cancelled, killed, not-running, not-found) including what killed means. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One focused paragraph that front-loads purpose before the caveat and status enumeration. Every clause carries information โ€” the advisory note, the cancelRequested side effect, and four distinct statuses. It is slightly dense, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description effectively documents return semantics by enumerating the four possible statuses and what each means. For a 2-parameter mutating tool, the behavioral guarantees, edge cases (not-running, not-found), and the force parameter are all covered. A minor gap is the lack of guidance on how long the 'short grace period' is for force.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'force' is well-documented in the schema but 'sessionId' has no description there. The description compensates by naming sessionId as the identifier of the in-flight delegation, giving it purpose. It does not add formatting or provenance detail, but for a string id this is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair โ€” 'Best-effort cancel of an in-flight delegation by sessionId' โ€” that names the operation, the target, and the key handle. It also distinguishes itself implicitly from the sibling 'delegate' (which creates the delegation that this tool cancels), so an agent can separate the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys when to use it (to cancel an in-flight delegation) and sets expectations up front with 'best-effort' and 'advisory'. The status list tells the caller what outcomes to anticipate. It does not explicitly name when-not-to-use or recommend an alternative, but against the sibling set (delegate creates, doctor diagnoses) the boundary is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delegateA
Destructive

Delegate a coding task to cursor-agent over ACP. Never shell out to cursor-agent โ€” use this tool only. Auto-approves every permission the agent requests, in any mode and anywhere on disk. Clarifying questions arrive as prose in result โ€” resume with resumeSessionId to answer. Keep model (composer-2.5), fast and effort at their defaults unless the user explicitly asks. See the delegate skill.

ParametersJSON Schema
NameRequiredDescriptionDefault
fastNoFast tier; higher cost โ€” only when the user asks.
modeNoagent implements; plan and ask are instructions to the agent, not limits.agent
specYesTask brief: goal, scope, fixed decisions quoted exactly, acceptance criteria. Sent as written. Point at files to read rather than pasting code, or attach them with contextFiles.
modelNoBare ACP family id, version included: composer-2.5, grok-4.5, claude-opus-5, gpt-5.6-sol. doctor deep:true lists every id.composer-2.5
effortNoExact Cursor thinking-effort value for the selected model. Values differ per model and some expose no effort option; invalid values fail before the prompt and name the accepted set. Pass only when the user asks for Cursor effort โ€” the host's own reasoning setting is unrelated.
contextNoContext window size; gpt-5.x accepts 272k and 1m. Do not pass speculatively.
workspaceYesThe agent's working directory, not a limit. Smallest directory holding the task's files; with no such directory the project root is the floor. Must already exist; never create one for the call.
contextFilesNoPaths to attach instead of pasting contents into spec. Text becomes references the agent may open; images (png/jpg/gif/webp, <5MB) are sent inline. Relative paths resolve against workspace but are not limited to it. Skips are reported in protocolWarnings, never fatal.
resumeSessionIdNoContinue an existing ACP session.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Directly discloses the behavior that makes destructiveHint and openWorldHint true: 'Auto-approves every permission the agent requests, in any mode and anywhere on disk.' It also reveals the clarification interaction pattern (prose in result, resume with resumeSessionId) and that invalid values fail before the prompt while naming the accepted set. This adds genuine context far beyond the bare annotations and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences, each pulling weight: purpose, prohibition, safety warning, interaction contract, defaults policy, skill pointer. The most critical warning (auto-approve anywhere on disk) is front-loaded in the third sentence, not buried. No filler, no restatement of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, 2-required, destructive, open-world tool with no output schema, this is remarkably complete. It covers safety, interaction protocol, defaults policy, per-parameter touch rules, and even the resolution of paths (relative paths resolve against workspace but are not limited to it) and error behavior (invalid effort values fail before the prompt, skips surface in protocolWarnings). Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns a 4 by adding a cross-cutting policy the schema alone can't express โ€” the 'touch nothing unless the user asks' rule that applies across fast, model, effort, and context โ€” and by signaling which params are safe to pass only on explicit request. It doesn't need to restate field meanings since the schema already documents them fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Delegate a coding task to cursor-agent over ACP.' It goes further and distinguishes itself from the naive alternative with 'Never shell out to cursor-agent โ€” use this tool only,' so the agent cannot mistake its scope. Unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-not-to-use guidance: the prohibition on shelling out, the warning that it auto-approves every permission in any mode and anywhere on disk, and a clear defaults policy โ€” 'Keep model, fast and effort at their defaults unless the user explicitly asks.' Multiple params get a 'only when the user asks' qualifier, which is exactly the guardrail an agent needs for a destructive, open-world tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

doctorA
Read-onlyIdempotent

Setup diagnostics: plugin version, MCP client capabilities, cursor-agent launcher resolution. Run when delegation fails or agent.found is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
deepNoRun an ACP handshake (start โ†’ initialize โ†’ newSession) to verify the agent is usable; adds models, modes and the current model's options.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the description only needs to add context beyond that. It adds the operational trigger and the specific diagnostic scope, which is meaningful value on top of the structured data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two terse sentences: the first front-loads the purpose and diagnostic scope, the second gives the trigger condition. Zero waste, efficient, and the critical information is placed first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a diagnostic tool: purpose, scope, and trigger are all stated, the single parameter is fully documented in the schema, and annotations carry the safety profile. Minor omission is that the return/output format isn't characterized, but with no output schema and a simple diagnostic, this is negligible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single 'deep' parameter is fully documented in the schema, including the ACP handshake sequence and what it adds to output. The description text adds no parameter detail, but the schema already carries the full burden, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (diagnose) and resource (delegation setup) plus the exact scope of inspection: plugin version, MCP client capabilities, cursor-agent launcher resolution. This clearly distinguishes it from sibling tools delegate and cancel, and the title reinforces it with 'Diagnose Cursor delegation setup'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition: 'Run when delegation fails or agent.found is false.' This tells the agent precisely when to invoke the tool. It does not explicitly state when not to use it or name alternatives, but the siblings (delegate, cancel) are semantically distinct operations that don't need exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv2.0.0
    • Changedcancel1 field changed
      • changedInput schema / properties / force / description
        Previous value: -"After the cancel notify, wait a short grace period and kill the agent process if the delegation is still running"New value: +"Kill the agent process if the turn is still running after a short grace period."
    • Changeddelegate12 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Context window size. Not offered by every model; gpt-5.x accepts 272k and 1m."New value: +"Context window size; gpt-5.x accepts 272k and 1m. Do not pass speculatively."
      • changedInput schema / properties / contextFiles / description
        Previous value: -"Paths to attach instead of pasting file contents into spec. Text files are passed as references the agent may open; images (png, jpg, gif, webp, under 5MB) are sent inline. Relative paths resolve against workspace, and paths outside it are allowed โ€” attach only files the agent should read. Anything skipped is reported in protocolWarnings, never fatal."New value: +"Paths to attach instead of pasting contents into spec. Text becomes references the agent may open; images (png/jpg/gif/webp, <5MB) are sent inline. Relative paths resolve against workspace but are not limited to it. Skips are reported in protocolWarnings, never fatal."
      • addedInput schema / properties / effort
        Added value: +{
        +  "description": "Exact Cursor thinking-effort value for the selected model. Values differ per model and some expose no effort option; invalid values fail before the prompt and name the accepted set. Pass only when the user asks for Cursor effort โ€” the host's own reasoning setting is unrelated.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / fast / description
        Previous value: -"Fast speed tier โ€” higher cost; enable only when the user asks"New value: +"Fast tier; higher cost โ€” only when the user asks."
      • changedInput schema / properties / mode / description
        Previous value: -"Requested agent mode. plan and ask are passed to the agent as instructions, not enforced by the bridge โ€” the agent may write in any of them, so review the git diff after every run. ask held on every model tested while plan compliance varies by model, so prefer ask when you need the stricter read-only instruction."New value: +"agent implements; plan and ask are instructions to the agent, not limits."
      • addedInput schema / properties / model / description
        Added value: +"Bare ACP family id, version included: composer-2.5, grok-4.5, claude-opus-5, gpt-5.6-sol. doctor deep:true lists every id."
      • removedInput schema / properties / reasoning
        Removed value: -{
        -  "description": "Reasoning effort. Not offered by every model; gpt-5.x accepts none, low, medium, high, extra-high.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / resumeSessionId / description
        Previous value: -"Resume an existing ACP session instead of a new one"New value: +"Continue an existing ACP session."
      • changedInput schema / properties / spec / description
        Previous value: -"Inline task brief (default): goal, scope, decisions already made (constraints and fixed choices โ€” quote the user's exact values verbatim), acceptance criteria. Point at files to read or mimic rather than pasting code. Optional file path if the user wants a persisted spec."New value: +"Task brief: goal, scope, fixed decisions quoted exactly, acceptance criteria. Sent as written. Point at files to read rather than pasting code, or attach them with contextFiles."
      • changedInput schema / properties / workspace / description
        Previous value: -"Working directory for the agent (defaults to cwd). Must be an existing directory; the call fails rather than creating it."New value: +"The agent's working directory, not a limit. Smallest directory holding the task's files; with no such directory the project root is the floor. Must already exist; never create one for the call."
      • addedInput schema / properties / workspace / minLength
        Added value: +1
      • changedInput schema / required
        Previous value: -[
        -  "spec"
        -]New value: +[
        +  "spec",
        +  "workspace"
        +]
    • Changeddoctor1 field changed
      • changedInput schema / properties / deep / description
        Previous value: -"When true, run a lightweight ACP handshake (start โ†’ initialize โ†’ newSession) to verify the agent is usable"New value: +"Run an ACP handshake (start โ†’ initialize โ†’ newSession) to verify the agent is usable; adds models, modes and the current model's options."
  2. 3 tool updatesv1.18.0
    • First observedcancel
    • First observeddelegate
    • First observeddoctor

TDQS

A4.6/5.0
Disambiguation5/5

Each tool has a distinct, non-overlapping purpose: delegate for initiating/resuming tasks, cancel for stopping in-flight work, and doctor for diagnostic checks. No ambiguity between tools.

Naming Consistency5/5

All three tool names are lowercase verbs (delegate, cancel, doctor), following a clean, consistent single-word verb pattern. Perfectly predictable.

Tool Count5/5

With exactly three tools, the server is tightly scoped to its core workflow: delegate, cancel, and diagnose. Every tool earns its place and the count feels appropriate for the purpose.

Completeness5/5

The tool set covers the full lifecycle of a delegation: starting/resuming (delegate), terminating (cancel), and troubleshooting setup (doctor). No obvious gaps for the stated domain.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andreilungeanu/cursor-delegate-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server