> ## Documentation Index
> Fetch the complete documentation index at: https://context7-ctx7-2818-search-api-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Cursor

> Using Context7 with Cursor

Context7 brings up-to-date library documentation directly into Cursor. Instead of getting outdated code examples from training data, you get current documentation from source repositories.

## Installation

Run the setup command to configure Context7 for Cursor:

```bash theme={null}
npx ctx7 setup --cursor
```

Authenticates via OAuth, generates an API key, and installs the appropriate skill. You can choose between CLI or MCP mode.

For manual MCP installation or other configuration options, see [All MCP Clients](/resources/all-clients).

***

## Setting Up Rules

With `ctx7 setup`, a skill is installed that triggers Context7 automatically. If you prefer to use a rule instead, add one in Cursor.

<Tabs>
  <Tab title="Cursor Settings" icon="settings">
    <Steps>
      <Step title="Open Settings">
        Go to `Cursor` → `Settings...` → `Cursor Settings` → `Rules and Commands`. You can also press `Cmd+Shift+P` (or `Ctrl+Shift+P` on Windows/Linux) and type "Cursor Settings".

        <Frame>
          <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/rules.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=63bc8e88832dc8df7ac876227c79adfc" alt="Cursor Rules and Commands" width="1070" height="904" data-path="images/clients/cursor/rules.png" />
        </Frame>
      </Step>

      <Step title="Add the Rule">
        ```
        Always use Context7 MCP when I ask about library documentation,
        API references, or need code examples from external packages.
        ```
      </Step>
    </Steps>
  </Tab>

  <Tab title=".cursorrules File" icon="file">
    Create a `.cursorrules` file in your project root:

    ```
    # Context7 Integration

    When the user asks about:
    - Library APIs or documentation
    - Framework setup or configuration
    - Code examples for external packages
    - How to use a specific library feature

    Automatically use Context7 MCP to fetch current documentation. Don't rely on training data for library-specific code.
    ```

    This makes Context7 part of your project's standard workflow and can be version-controlled.
  </Tab>
</Tabs>

***

## Using Context7

Add "use context7" to your prompts to fetch current documentation:

```
use context7 to show me how to set up middleware in Next.js 15
use context7 for Prisma query examples with relations
use context7 for the Supabase syntax for row-level security
```

If you know the library ID, use it directly to skip resolution:

```
use context7 with /supabase/supabase for authentication docs
use context7 with /vercel/next.js for app router setup
```

***

## Cursor Cloud Agents

Cursor Cloud Agents use MCP servers configured for the cloud agent, not the MCP configuration from your local Cursor installation. If Context7 works in the IDE but a Cloud Agent reports an anonymous quota, add an authenticated HTTP server in the Cloud Agent UI.

<Note>
  The MCP connection is independent of the model selected for the agent. You can
  use the same Context7 server with any model available in Cursor Cloud Agents.
</Note>

### Before you begin

Create an API key in the [Context7 dashboard](https://context7.com/dashboard). Keep the key available while you complete the steps below, but do not commit it to your repository or include it in screenshots.

### Add Context7 to Cursor Cloud Agents

<Steps>
  <Step title="Open a Cloud Agent">
    Go to [cursor.com/agents](https://cursor.com/agents) and start a new agent. If you start the agent from the Cursor desktop app, select **Cloud** from the environment menu below the agent input.

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/01-new-cloud-agent.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=51f1a901971c5ac3eafbe5be0d668197" alt="New Cursor Cloud Agent composer" width="1266" height="400" data-path="images/clients/cursor/cloud-agents/01-new-cloud-agent.png" />
    </Frame>
  </Step>

  <Step title="Open the MCP server menu">
    Select **+** (**Add context and tools**), then **MCP Servers** and **Add MCP**.

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/02-open-mcp-servers.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=66ae2fe84650013493526a42c912546e" alt="MCP Servers menu in a Cursor Cloud Agent" width="1334" height="666" data-path="images/clients/cursor/cloud-agents/02-open-mcp-servers.png" />
    </Frame>
  </Step>

  <Step title="Choose Custom MCP">
    In the MCP browser, select **Custom MCP**.

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/03-add-custom-mcp.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=3269452de11b350a6552e5f6fc7ea846" alt="Custom MCP option in Cursor's MCP browser" width="1554" height="560" data-path="images/clients/cursor/cloud-agents/03-add-custom-mcp.png" />
    </Frame>
  </Step>

  <Step title="Configure the authenticated Context7 server">
    Enter the following values:

    | Field            | Value                          |
    | ---------------- | ------------------------------ |
    | **Name**         | `context7-api-key`             |
    | **Type**         | `URL`                          |
    | **Server URL**   | `https://mcp.context7.com/mcp` |
    | **Header key**   | `Context7-API-Key`             |
    | **Header value** | Your Context7 API key          |

    The distinct `context7-api-key` name avoids a namespace collision when the OAuth-based Context7 plugin is also installed. If you do not use the plugin, you can name the server `context7`.

    Context7 also accepts `Authorization: Bearer YOUR_API_KEY`, as shown in the general MCP client examples. This guide uses `Context7-API-Key` because that configuration was verified with Cursor Cloud Agents and keeps API-key authentication separate from the plugin's OAuth connection.

    <Warning>
      Use a hyphenated header name in Cursor Cloud. Header names containing
      underscores, such as `CONTEXT7_API_KEY`, can be dropped by Cursor's proxy.
      `CONTEXT7_API_KEY` remains the environment variable name for local stdio
      connections.
    </Warning>

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/04-configure-context7-api-key.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=eadc3b132779acd2463459918776c9c1" alt="Context7 URL and API key header in Cursor's custom MCP form" width="880" height="574" data-path="images/clients/cursor/cloud-agents/04-configure-context7-api-key.png" />
    </Frame>

    Alternatively, select **Edit JSON** and use this configuration:

    ```json theme={null}
    {
      "mcpServers": {
        "context7-api-key": {
          "url": "https://mcp.context7.com/mcp",
          "headers": {
            "Context7-API-Key": "YOUR_CONTEXT7_API_KEY"
          }
        }
      }
    }
    ```

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/05-context7-json-config.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=76277239d4c4e41f88c454b5b0d6478e" alt="Context7 custom MCP JSON configuration in Cursor Cloud Agents" width="880" height="574" data-path="images/clients/cursor/cloud-agents/05-context7-json-config.png" />
    </Frame>
  </Step>

  <Step title="Add and enable the server">
    Select **Add MCP**. Before starting the run, open **+** → **MCP Servers** again and confirm that `context7-api-key` is enabled.

    A green status confirms that Cursor initialized the MCP server. It does not by itself prove that the request was authenticated.
  </Step>

  <Step title="Verify authenticated access">
    Start a new Cloud Agent run and test both tools:

    ```text theme={null}
    Use Context7 to resolve the library ID for Next.js, then query its documentation
    for middleware. Tell me which Context7 tools you called.
    ```

    To verify authentication conclusively, query a private library that belongs to the Context7 account associated with the API key:

    ```text theme={null}
    Use Context7 to query <YOUR_PRIVATE_LIBRARY_ID>. Summarize its installation docs.
    ```

    If the private library can be read, the Cloud Agent is using the API key. If the agent reports **Monthly quota exceeded** even though the key has quota, the request is reaching Context7 anonymously; recheck the header name and start a new run after saving the MCP server.

    After the API-key header is applied, the same Cloud Agent should be able to resolve a library and return documentation without the anonymous quota error:

    <Frame>
      <img src="https://mintcdn.com/context7-ctx7-2818-search-api-docs/_w8_y-gzzgCQGs2S/images/clients/cursor/cloud-agents/06-verify-context7.png?fit=max&auto=format&n=_w8_y-gzzgCQGs2S&q=85&s=fdfeb67d106719b2214533cdbe090105" alt="Successful Context7 documentation query from a Cursor Cloud Agent" width="1200" height="774" data-path="images/clients/cursor/cloud-agents/06-verify-context7.png" />
    </Frame>
  </Step>
</Steps>

### OAuth and the Context7 Cursor plugin

The Context7 plugin uses the OAuth endpoint and does not currently provide a field for an API key. Cursor supports OAuth for Cloud MCP servers, but installing or enabling the plugin does not guarantee that its OAuth sign-in flow has completed.

* Use the plugin when you want OAuth and complete the sign-in prompt for the same Cursor account that launches the Cloud Agent.
* Use the custom HTTP setup above when you need explicit API-key authentication, including access to private Context7 libraries.

See Cursor's documentation for [custom MCP servers](https://cursor.com/docs/cloud-agent/capabilities#custom-mcp-servers) and [Cloud Agent MCP support](https://cursor.com/docs/cloud-agent#mcp-support).

### Troubleshooting

<AccordionGroup>
  <Accordion title="Monthly quota exceeded">
    The request is usually anonymous. Confirm that the custom server URL is `https://mcp.context7.com/mcp`, the header is named `Context7-API-Key`, and the saved value is the current API key. Then enable the server and start a new Cloud Agent run.
  </Accordion>

  <Accordion title="The server is ready, but private docs are unavailable">
    A ready status only confirms MCP initialization. Test a private library ID to verify authentication, then confirm that the library belongs to the same Context7 account as the API key.
  </Accordion>

  <Accordion title="Context7 tools or namespace are missing">
    Open **+** → **MCP Servers** before starting the run and enable `context7-api-key`. If the run was already started, enable the server and create a new run so Cursor can expose its tools to the agent.
  </Accordion>

  <Accordion title="A repository mcp.json or symlink does not work in Cloud Agents">
    Configure the personal HTTP MCP server from the Cloud Agent UI. A local `~/.cursor/mcp.json`, a repository `.cursor/mcp.json`, or a symlink created inside the Cloud Agent VM does not configure the backend-proxied personal HTTP connection.
  </Accordion>
</AccordionGroup>

***

## Tips

<AccordionGroup>
  <Accordion title="Project vs Global Config">
    Use **global config** (`~/.cursor/mcp.json`) when:

    * You want Context7 available in all projects
    * You're using a personal API key

    Use **project config** (`.cursor/mcp.json`) when:

    * The project has specific Context7 requirements
    * You want to share the setup with teammates
    * Different projects need different API keys
  </Accordion>

  <Accordion title="Combining with Cursor Composer">
    Context7 works well with Cursor's Composer feature. When you're building something that involves external libraries:

    1. Start with a prompt that mentions the libraries you need
    2. Context7 fetches the relevant docs
    3. Composer uses those docs to generate accurate code

    This is especially useful for newer library versions that might not be in Cursor's training data.
  </Accordion>

  <Accordion title="Getting Better Results">
    * Be specific about what you're trying to do, not just which library
    * Mention versions when they matter
    * If the first result isn't right, ask for a different part of the docs

    ```
    # Good
    How do I handle file uploads with the Supabase Storage API?

    # Less specific
    How does Supabase storage work?
    ```
  </Accordion>
</AccordionGroup>
