Query up-to-date library and framework documentation via the Context7 MCP server. Use when user asks 'how does X work in Next.js?', 'show me the React docs for Y', 'what's the API for Supabase Z?', 'latest docs for tanstack-query', or needs current documentation for any library/framework. Do NOT use for general web search or current events (use tavily-mcp instead).
Installs into .claude/skills of the current project.
Are you the author of 1178 Name Skill 1a3d2682?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-1178-name-skill-1a3d2682)
---
name: context7-mcp
description: "Query up-to-date library and framework documentation via the Context7 MCP server. Use when user asks 'how does X work in Next.js?', 'show me the React docs for Y', 'what's the API for Supabase Z?', 'latest docs for tanstack-query', or needs current documentation for any library/framework. Do NOT use for general web search or current events (use tavily-mcp instead)."
metadata:
version: 1.0.0
mcp-server: context7
category: documentation
tags: [docs, documentation, libraries, frameworks, api-reference]
---
# Context7 Library Documentation
You are an expert at using the Context7 MCP server to retrieve current, accurate library documentation. Context7 provides up-to-date docs for thousands of libraries and frameworks, eliminating outdated training data issues.
## Critical: These Are Direct Tool Calls
MCP tools are **direct tool calls** — exactly like `Read`, `Grep`, or `Bash`. They are NOT CLI commands.
**CORRECT** — call the tool directly:
```
Tool: mcp__context7__resolve-library-id
Parameters: { "libraryName": "next.js" }
```
**WRONG** — do NOT shell out:
```
Bash: claude mcp call context7 resolve-library-id ... # This does not work
```
All Context7 MCP tools use the `mcp__context7__` prefix.
## Critical: Always Resolve Library ID First
You **must** call `resolve-library-id` before `query-docs` unless you already have a confirmed `/org/project` ID from a previous call in this session.
## Critical: Output Size Awareness
| Tool | Output Size | Notes |
|------|------------|-------|
| `resolve-library-id` | Small | Returns list of matching library IDs |
| `query-docs` | Medium-Large | Documentation content — scales with topic breadth. Use specific queries to limit size. |
## Workflow: Find & Query Documentation
**Trigger:** User asks about library APIs, framework patterns, configuration options, or "how to do X with Y library"
### Steps
1. **Resolve the library ID:**
```
resolve-library-id({ libraryName: "next.js" })
→ returns matching libraries with /org/project IDs
```
2. **Query documentation with a specific question:**
```
query-docs({ libraryId: "/vercel/next.js", query: "how to use middleware for authentication" })
→ returns relevant documentation sections
```
3. **Refine if needed** (max 3 calls per tool per question):
```
query-docs({ libraryId: "/vercel/next.js", query: "middleware matcher config" })
→ more specific follow-up
```
### Key Patterns
- **Be specific in queries:** "How to set up authentication with JWT in Express.js" beats "auth"
- **Max 3 calls per tool per question** — if 3 queries don't answer it, use a different approach
- **One library per query** — don't try to query multiple libraries in a single `query-docs` call
- **Use the full `/org/project` format** for `libraryId` (e.g., `/vercel/next.js`, `/supabase/supabase`)
### Decision Tree
| User Needs | Action |
|------------|--------|
| Docs for a known library | `resolve-library-id` → `query-docs` |
| Not sure which library to use | `resolve-library-id` with general term, review matches |
| Already have library ID from this session | Skip resolve, go straight to `query-docs` |
| Library not found in Context7 | Fall back to `tavily-mcp` search or `WebFetch` for official docs site |
## Common Library IDs
These are frequently used in this project — skip `resolve-library-id` for these:
| Library | ID |
|---------|-----|
| Next.js | `/vercel/next.js` |
| React | `/facebook/react` |
| Supabase JS | `/supabase/supabase-js` |
| TanStack Query | `/tanstack/query` |
| Zod | `/colinhacks/zod` |
| React Hook Form | `/react-hook-form/react-hook-form` |
| Tailwind CSS | `/tailwindlabs/tailwindcss` |
| date-fns | `/date-fns/date-fns` |
| Radix UI | `/radix-ui/primitives` |
| Playwright | `/microsoft/playwright` |
| Vitest | `/vitest-dev/vitest` |
**Note:** If a common ID stops working, re-resolve it — library IDs can change when repos are reorganized.
## Troubleshooting
### "Library not found"
1. Try alternate names: "react-query" vs "tanstack query" vs "@tanstack/react-query"
2. Try the npm package name: "next" vs "next.js"
3. Try the GitHub org/repo format directly: "vercel/next.js"
4. Fall back to `tavily-mcp` search for the official docs URL, then use `WebFetch`
### Query Returns Irrelevant Results
1. Make your query more specific — include the exact API name or concept
2. Try rephrasing: "server actions" vs "use server directive" vs "form actions"
3. Add version context: "Next.js 15 app router middleware" vs just "middleware"
### Query Returns Too Much Content
1. Narrow the query to a specific function or concept
2. Ask about one feature at a time rather than broad overviews
3. If output is still large, extract the relevant section and summarize for the user