Files
upstash--context7/docs/clients/cli.mdx
T
2026-07-13 13:04:05 +08:00

252 lines
9.3 KiB
Plaintext

---
title: CLI
description: The ctx7 CLI — fetch library documentation and configure Context7 MCP from your terminal
---
The `ctx7` CLI is the command-line interface for Context7. It does two things:
- **Fetch library documentation** — resolve any library by name and query its up-to-date docs directly in your terminal, without opening a browser
- **Configure your AI coding agent** — set up the Context7 MCP server (or a CLI-based `docs` skill) for Claude Code, Cursor, OpenCode, and more with a single command
The CLI is useful both as a standalone tool (fetching docs while you code) and as a setup utility (wiring up Context7 for your AI coding agent).
## Installation
Requires Node.js 18 or later.
<Tabs>
<Tab title="npx (no install)">
Run ctx7 directly without installing anything. Useful for one-off commands or trying it out.
```bash
npx ctx7 --help
npx ctx7 library react
```
</Tab>
<Tab title="Global install">
Install globally for faster access — no `npx` prefix needed on every command.
```bash
npm install -g ctx7
# Verify installation
ctx7 --version
```
</Tab>
</Tabs>
---
## Query Library Documentation
Fetching docs is a two-step process: first resolve the library name to get its Context7 ID, then use that ID to query documentation.
### Step 1 — ctx7 library
Searches the Context7 index by name and returns matching libraries. Pass a `query` describing what you're trying to do — this ranks results by relevance and helps when a library name is ambiguous or shared across multiple packages.
```bash
ctx7 library react "How to clean up useEffect with async operations"
ctx7 library nextjs "How to set up app router with middleware"
ctx7 library prisma "How to define one-to-many relations with cascade delete"
```
Each result includes:
| Field | Description |
| --------------------- | -------------------------------------------------------------------------- |
| **Library ID** | The identifier to pass to `ctx7 docs` (format: `/org/project`) |
| **Code Snippets** | Number of indexed code examples — higher means more documentation coverage |
| **Source Reputation** | Authority indicator: High, Medium, Low, or Unknown |
| **Benchmark Score** | Quality score from 0 to 100 |
| **Versions** | Version-specific IDs when available (format: `/org/project/version`) |
When multiple results come back, the best match is usually the one with the closest name, highest snippet count, and strongest reputation. If you need docs for a specific version, pick the matching version ID from the list.
```bash
# Fetch docs for a specific version
ctx7 docs /vercel/next.js/v14.3.0-canary.87 "How to set up app router"
# Output as JSON for scripting
ctx7 library react "How to use hooks for state management" --json | jq '.[0].id'
```
### Step 2 — ctx7 docs
Takes a library ID and a natural-language question, and returns relevant code snippets and explanations from the indexed documentation.
```bash
ctx7 docs /facebook/react "How to clean up useEffect with async operations"
ctx7 docs /vercel/next.js "How to add middleware that redirects unauthenticated users"
ctx7 docs /prisma/prisma "How to define one-to-many relations with cascade delete"
```
<Note>
Library IDs always start with `/`. Running `ctx7 docs react "hooks"` will fail — always use the
full ID returned by `ctx7 library` in Step 1.
</Note>
Queries work best when they're specific. Describe what you're trying to accomplish rather than using single keywords — `"How to set up authentication with JWT in Express.js"` returns much better results than `"auth"`.
The output contains two types of content: **code snippets** (titled, with language-tagged blocks) and **info snippets** (prose explanations with breadcrumb context). Both are formatted for readability in the terminal.
```bash
# Output as structured JSON
ctx7 docs /facebook/react "How to use hooks for state management" --json
# Pipe to other tools — output is clean when not in a TTY (no spinners or colors)
ctx7 docs /facebook/react "How to use hooks for state management" | head -50
ctx7 docs /vercel/next.js "How to add middleware for route protection" | grep -A 10 "middleware"
```
---
## Setup
Configure Context7 for your AI coding agent. On first run, prompts you to choose between two modes:
- **MCP server** — registers the Context7 MCP server in your agent's config so it can call `resolve-library-id` and `query-docs` tools natively
- **CLI + Skills** — installs a `docs` skill that guides your agent to fetch up-to-date library docs using `ctx7` CLI commands (no MCP required)
### ctx7 setup
```bash
# Interactive — prompts for mode, then agent/install target
ctx7 setup
# Skip the mode prompt
ctx7 setup --mcp # MCP server mode
ctx7 setup --cli # CLI + Skills mode
# Target a specific agent (MCP mode)
ctx7 setup --claude
ctx7 setup --cursor
ctx7 setup --opencode
# Target a specific install location (CLI + Skills mode)
ctx7 setup --cli --claude # Claude Code (~/.claude/skills)
ctx7 setup --cli --cursor # Cursor (~/.cursor/skills)
ctx7 setup --cli --universal # Universal (~/.agents/skills)
ctx7 setup --cli --antigravity # Antigravity (~/.agent/skills)
# Configure for current project only (default is global)
ctx7 setup --project
# Skip confirmation prompts
ctx7 setup --yes
```
**Authentication options:**
```bash
# Use an existing API key (works for both MCP and CLI + Skills mode)
ctx7 setup --api-key YOUR_API_KEY
# Use OAuth endpoint — MCP mode only (IDE handles the auth flow)
ctx7 setup --oauth
```
Without `--api-key` or `--oauth`, setup runs the OAuth device flow: it shows a verification link and short code that you open on any device to sign in, so it works the same locally or on a remote, headless, or SSH host. MCP mode additionally generates a new API key after login. `--oauth` is MCP-only — use it when an IDE handles the auth flow on your behalf.
**What gets written — MCP mode:**
| File | Purpose |
| --------------------------------------------------- | ---------------------------------------------------------------- |
| `.mcp.json` / `.cursor/mcp.json` / `.opencode.json` | MCP server entry |
| Agent rules directory | Rule file — instructs the agent to use Context7 for library docs |
| Agent skills directory | `context7-mcp` skill |
**What gets written — CLI + Skills mode:**
| File | Purpose |
| ---------------------- | ------------------------------------------------------------------------------ |
| Agent skills directory | `docs` skill — guides the agent to use `ctx7 library` and `ctx7 docs` commands |
### ctx7 remove
Remove the setup written by `ctx7 setup`. By default this removes both MCP setup and CLI setup for the selected agent.
```bash
# Interactive
ctx7 remove
# Target specific agents
ctx7 remove --cursor
ctx7 remove --claude --project
# Remove both setup modes explicitly
ctx7 remove --cursor --all
# Remove only one setup mode
ctx7 remove --cursor --cli
ctx7 remove --claude --mcp
```
If you installed the CLI itself with `npm install -g ctx7`, remove that separately with `npm uninstall -g ctx7`. If you run Context7 with `npx ctx7`, there is no permanent CLI install to remove.
---
## Authentication
Most commands work without authentication. Log in to unlock higher rate limits on documentation commands.
### Commands
```bash
# Log in (opens browser for OAuth)
ctx7 login
# Log in without opening the browser (prints URL instead)
ctx7 login --no-browser
# Check current login status
ctx7 whoami
# Log out
ctx7 logout
```
### API Key
Set an API key via environment variable to skip interactive login entirely — useful for CI or scripting:
```bash
export CONTEXT7_API_KEY=your_key
```
### When is authentication required?
| Feature | Required |
| -------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `ctx7 library` / `ctx7 docs` | No — login gives higher rate limits |
| `ctx7 setup` | Yes — unless `--api-key` is passed (`--oauth` also skips login for MCP mode) |
---
## Telemetry
The CLI collects anonymous usage data to help improve the product. To disable:
```bash
# For a single command
CTX7_TELEMETRY_DISABLED=1 ctx7 docs /facebook/react "useEffect examples"
# Permanently — add to ~/.bashrc or ~/.zshrc
export CTX7_TELEMETRY_DISABLED=1
```
---
## Next Steps
<CardGroup cols={2}>
<Card title="Claude Code" icon="terminal" href="/clients/claude-code">
Set up Context7 in Claude Code
</Card>
<Card title="All Clients" icon="grid" href="/resources/all-clients">
Installation for every supported editor
</Card>
</CardGroup>