Cursor
Cursor has two independent Bifrost integrations:
| Integration | Process | Surface |
|---|---|---|
| Bifrost editor extension | bifrost --root <workspace> --lsp | Definitions, references, hover, rename, diagnostics, workspace symbols, RQL, and Rune editor features |
| Bifrost agent plugin | Bifrost MCP server | Bifrost tools that Cursor agents can call |
Install either integration for its own surface or install both. They use separate Bifrost processes even when both resolve the same managed release. Never point the agent plugin at the extension’s LSP process.
Install the Editor Extension
Section titled “Install the Editor Extension”Install the Bifrost extension from Open VSX,
or open Cursor’s Extensions view and search for brokk.bifrost-vscode.
Confirm that the publisher is brokk, choose Install, and open a supported
source workspace. With the default auto launch mode, choose Install when
Cursor asks to install the Bifrost version pinned by the extension.
Open Output > Bifrost and retain the lines showing the release download and
the installed version and path. The managed installer downloads the platform
archive and its .sha256 sidecar from the matching GitHub Release, requires
the sidecar checksum to equal the hash pinned into the extension package,
checks the downloaded archive bytes against that hash, and runs
bifrost --version before launching the language server. A visible Bifrost
status item by itself does not prove those checks or the active workspace.
To upgrade, choose Update for Bifrost in Cursor’s Extensions view, fully quit and reopen Cursor, and confirm that the installed extension version and the managed Bifrost version match the intended release. If the managed binary is stale or cannot run, accept Update or Reinstall when prompted.
Validate the Editor Extension
Section titled “Validate the Editor Extension”Use a normal workspace rather than a Cursor agent worktree for this smoke. Add a temporary, uniquely named declaration and usage in a supported language. For example, in Rust:
pub fn cursor_bifrost_lsp_probe_4f6f2b7() {}
pub fn call_cursor_bifrost_lsp_probe_4f6f2b7() { cursor_bifrost_lsp_probe_4f6f2b7();}From the usage, verify Go to Definition, Find All References, and
hover. Run Rename Symbol, confirm that both declaration and usage change,
then undo the rename. To exercise diagnostics, temporarily enable
bifrost.unrecognizedSymbolDiagnostics, replace the call with a unique missing
symbol, and confirm that Bifrost reports it before restoring the valid call and
disabling the experimental setting.
Pass only if every result belongs to the active checkout and Output > Bifrost shows the LSP launch for that workspace. Remove the temporary probe after retaining the Cursor version, extension version, managed Bifrost version, platform, output evidence, and operation results.
Troubleshoot the Editor Extension
Section titled “Troubleshoot the Editor Extension”- Run Bifrost: Show Output and check the full launch command, download, checksum, version, and handler errors.
- Run Bifrost: Restart Language Server after changing roots, exclusions, or launch settings.
- Set
bifrost.launchModetobundledto require the managed binary, or usepathwithbifrost.serverPathto diagnose a specific local binary. - Set
bifrost.debugtotruefor LSP request tracing and lowerbifrost.slowRequestMswhen investigating latency. - Do not use healthy MCP status as evidence that the editor extension works; it is a different process and protocol.
Install the Agent Plugin From GitHub
Section titled “Install the Agent Plugin From GitHub”The shared agent plugin package lives in plugins/bifrost-agent, and the
repository root includes .cursor-plugin/marketplace.json so Cursor can
discover the package.
Use the dedicated Cursor Agents window. In a new agent, type
/add-plugin, select the Add Plugin slash-command suggestion, and press
Return. Cursor opens its Plugins view; in Search or Paste Link, paste:
https://github.com/BrokkAi/bifrostOpen the Bifrost result, choose Add to Cursor, and confirm Add Plugin.
Cursor reads .cursor-plugin/marketplace.json, finds the bifrost package at
plugins/bifrost-agent, and installs it.
Cursor’s settings labels vary by build. If Customize -> Plugins exposes Search or Paste Link, pasting the same repository URL there is equivalent. Typing the slash-command text as an ordinary chat prompt is not: select the slash-command suggestion before submitting it.
To upgrade an existing installation, remove the GitHub-installed Bifrost package from the Plugins view and repeat the GitHub install flow. Fully quit and reopen Cursor afterward, then confirm that the installed plugin metadata reports the expected version.
The portable package uses root plugin.json and mcp.json files. It can also
include optional skills/ files.
Cursor still needs its native .cursor-plugin/plugin.json and
cursor-mcp.json adapter. The adapter resolves its launcher from Cursor’s
installed plugin directory. Bifrost also accepts the absolute native path that
Cursor returns from roots/list. A connected MCP status or visible tool list is
not sufficient evidence that both boundaries worked; complete the smoke test
below.
Local Plugin Testing
Section titled “Local Plugin Testing”Build Bifrost first:
cargo build --bin bifrostOpen Cursor with the local binary selected:
BIFROST_BINARY_PATH="$(pwd)/target/debug/bifrost" cursor .In the Cursor Agents window, open Customize -> Plugins, choose
Add -> From Local Repo, and select the repository root. Do not select
plugins/bifrost-agent directly: From Local Repo expects the marketplace
manifest at .cursor-plugin/marketplace.json.
This flow imports the marketplace definition, but the tested Cursor build
resolved the plugin contents from the repository’s remote default branch. It
ignored both uncommitted files and the selected feature-branch commit. Use it
only to test a snapshot already reachable from the default branch. For a local
Rust change, fully quit Cursor before starting it with
BIFROST_BINARY_PATH as shown above; do not use From Local Repo as evidence
for an unpublished plugin-manifest change.
Enable MCP Tools
Section titled “Enable MCP Tools”After installing the plugin, stay in the Cursor Agents window, open Customize -> MCPs, and enable Bifrost for the workspace. Check that its status is healthy, then start a fresh agent so the newly enabled tools are attached to that agent. If a restored app session reports that Bifrost is not bound, select the workspace first, open Bifrost’s MCP details, choose Reload, and then start another fresh agent.
Enabling the plugin’s MCP entry is sufficient; do not create a duplicate manual
Bifrost server. The packaged Cursor definition supplies the installed launcher
location, starts Bifrost without an inferred root, and lets Cursor authorize the
active workspace through the standard roots/list mechanism with compatibility
for Cursor’s native-path response. Bifrost never treats Cursor’s process
directory or the installed plugin directory as the analyzer workspace.
Cursor can also import an installed Claude Code plugin automatically. If the
MCP list contains both the native plugin-bifrost-bifrost entry and an imported
plugin-brokk-bifrost entry, leave the native Cursor entry enabled and disable
the imported duplicate in Cursor. This does not disable the Claude Code
installation itself.
For strong exact-checkout evidence, add a temporary declaration whose name is unique to the smoke:
pub fn cursor_bifrost_host_probe_4f6f2b7() {}Use this strict smoke prompt to prove Cursor called the plugin’s MCP server instead of silently falling back to file or shell tools:
Use only the installed Bifrost plugin MCP tools. First confirm query_code is in the callable Bifrost MCP surface. Call search_symbols with patterns ["cursor_bifrost_host_probe_4f6f2b7"]. Then call query_code with schema_version 1, languages ["rust"], match {"kind":"function","name":"cursor_bifrost_host_probe_4f6f2b7"}, limit 10, and result_detail "full". Do not use Shell, terminal, rg, codebase search, file reading, or the bifrost CLI. Show both exact structured MCP results. PASS only if both return src/cursor_bifrost_host_probe_4f6f2b7.rs.Apply the shared host-integration evidence contract: retain Cursor’s Bifrost tool event and structured result, verify the result belongs to the active workspace, and reject ordinary file-reading fallbacks or paths under the installed plugin. Remove the temporary declaration after retaining the evidence.
The cursor agent --plugin-dir CLI path is useful for checking plugin loading, but it has not proven reliable for plugin-provided MCP servers. Treat the desktop Customize/MCP flow as the MCP validation path.
Can My Agent Run RQL?
Section titled “Can My Agent Run RQL?”The packaged plugin uses symbol|extended. In a fresh chat after enabling MCP, confirm that the Bifrost tool list includes query_code, then call it with the inline JSON fields {"match":{"kind":"declaration"},"limit":1}. To validate saved RQL, check a workspace file named bifrost-smoke.rql containing (limit 1 (declaration)), then call query_code with {"query_file":"bifrost-smoke.rql"}.
The inline call is canonical JSON. MCP accepts RQL only from a workspace .rql file through query_file. See MCP query and RQL availability for the full surface matrix and Agent Result Safety before making completeness claims.