Cursor integration

Install GNO as an MCP server in Cursor for hybrid retrieval while you code.

Cursor supports MCP servers natively. One-command install gives Cursor access to GNO’s 25 read-only tools by default (search, query, verified Ask, Context Capsules, graph, backlinks, similar). Fifteen write tools are opt-in (40 total).

Quickstart

bun install -g @gmickel/gno
gno setup ~/notes --name notes
gno mcp install --target cursor

After install, restart Cursor. The GNO MCP server will appear in the MCP settings panel automatically.

Using it in Cursor

Composer and chat can invoke GNO tools. Example:

“Search my notes for the retry logic we discussed”
“Find related notes to this file and summarize them”

Cursor picks the appropriate GNO tool and cites the source docs in its response.

Project scope

For project-specific MCP configuration, install at the project scope. This writes a .cursor/mcp.json in the current project.

gno mcp install --target cursor --scope project

Share the setup with your team

Project-scope MCP config says that Cursor should talk to GNO. A committed project profile says what it should index: collection root, include and exclude globs, contexts, content types, and model preset, all repository-relative and portable.

gno profile diff # preview what applying would change
gno setup . --apply-profile # apply, then prove retrieval

Nothing is applied implicitly, and GNO’s database, model cache, and locks never go into the repository.

Tuning retrieval for code

Code and prose want different embeddings. Rather than compromising globally, override per collection:

gno collection add ~/work/service/src --name service-code \
  --pattern "**/*.{ts,tsx,go,rs,py}" --exclude node_modules

Source files also get structural first-pass chunking for TypeScript, JavaScript, Python, Go, and Rust, so a retrieved chunk tends to be a function rather than an arbitrary window. See configuration for per-collection models.embed overrides.

Manual configuration

If auto-install fails, add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "gno": {
      "command": "gno",
      "args": ["mcp"]
    }
  }
}

This minimal form relies on gno being on Cursor’s PATH, which is often not the same PATH your shell has. Prefer the installer, which records an absolute entrypoint plus the active index, config, data, and model-cache locations. Run gno mcp install --target cursor --dry-run --json to see those exact values before writing them.

Verifying and troubleshooting