> ## Documentation Index
> Fetch the complete documentation index at: https://docs.impellabs.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Cursor

> One mcp.json entry, per project or globally.

<img src="https://mintcdn.com/mahadev/-gWik8vU43pna0pu/images/harnesses/cursor.svg?fit=max&auto=format&n=-gWik8vU43pna0pu&q=85&s=e2cc64cf7b211015b7939ea83bd19030" alt="Cursor" width="48" height="48" noZoom data-path="images/harnesses/cursor.svg" />

**Preview.** Cursor speaks Streamable HTTP and accepts a static header, so a
`tgcc_` key is all you need — no OAuth flow.

## Configure it

Project-level config lives in `.cursor/mcp.json` at the repo root; global config
in `~/.cursor/mcp.json`. The shape is the same.

<CodeGroup>
  ```json .cursor/mcp.json theme={null}
  {
    "mcpServers": {
      "impellabs": {
        "url": "https://api.impellabs.tech/mcp",
        "headers": {
          "Authorization": "Bearer ${env:IMPELLABS_API_KEY}"
        }
      }
    }
  }
  ```

  ```json ~/.cursor/mcp.json theme={null}
  {
    "mcpServers": {
      "impellabs": {
        "url": "https://api.impellabs.tech/mcp",
        "headers": {
          "Authorization": "Bearer ${env:IMPELLABS_API_KEY}"
        }
      }
    }
  }
  ```
</CodeGroup>

<Warning>
  **Do not paste the key literally into a project file.** `.cursor/mcp.json`
  at a repo root gets committed, and a `tgcc_` key is a workspace credential
  that can spend credits. Use `${env:…}` and export the variable, or keep the
  server in `~/.cursor/mcp.json` where it is outside the repo.
</Warning>

The presence of `url` rather than `command` is what makes it a remote server;
there is no separate transport flag to set.

## Check it came up

**Settings → Tools & MCP** lists the server and the tools it discovered. A green
state and a populated tool list means the handshake and `tools/list` both
succeeded.

<Check>
  If the server connects but every tool call fails, the key is missing that
  tool's scope — `mcp:connect` lists tools and calls none. That split is
  deliberate; see [Authentication](/connect/authentication).
</Check>

## Use it

Ask the agent in the chat pane for something the workspace knows:

> *Search our knowledge base for the refund window and quote it back with the source.*

> *Upload `contract.pdf`, then extract the parties and the notice period.*

<Note>
  The second one will not finish in one call, and that is correct. Uploading a
  document returns success while parsing continues, and extractions answer with
  a **job id** rather than a result. The agent has to poll. See
  [Tools](/connect/tools) for the two behaviours and why they exist.
</Note>

## Keep the key narrow

Cursor runs tools inside an editor agent loop that will happily iterate. Mint a
key for it with only the scopes you want an agent reaching unattended — reading
agents and searching knowledge is a very different grant from creating
extractions and spending credits.

<Card title="What each tool demands" icon="wrench" href="/connect/tools" horizontal>
  Every tool names its own scope, checked on every call.
</Card>
