Tips and best practices for using Context7 MCP server to get library documentation
This skill provides guidance for using the Context7 MCP server effectively.
Context7 provides documentation lookup for popular libraries and frameworks. It has two main tools:
resolveLibraryId - Find the library ID for a given library namegetLibraryDocs - Get documentation for a specific topicThe resolveLibraryId tool returns results that are automatically parsed into structured objects. The response includes:
{
libraries: Array<{
id: string; // Context7-compatible library ID
name: string; // Library title
description: string; // Short description
codeSnippets: number; // Number of code examples
sourceReputation: string; // "High", "Medium", "Low", or "Unknown"
benchmarkScore?: number; // Quality score (optional)
}>;
raw: string; // Original text response
}
Here's how to pick the right library:
| Pattern | Description | Example |
|---|---|---|
/websites/<name> |
Official documentation (usually best) | /websites/laravel |
/websites/<name>-<version> |
Version-specific docs | /websites/laravel-11.x |
/websites/<name>_<version> |
Version-specific (alt format) | /websites/laravel_12_x |
/<org>/<repo> |
GitHub repository content | /laravel/laravel |
| Framework | Recommended ID | Notes |
|---|---|---|
| Laravel 12 | /websites/laravel_12_x |
Latest version |
| Laravel 11 | /websites/laravel-11.x |
Previous LTS |
| Laravel (latest) | /websites/laravel |
General docs |
| React | /websites/react |
Official React docs |
| Vue 3 | /websites/vue |
Vue.js documentation |
| Next.js | /websites/nextjs |
Next.js framework |
| TypeScript | /websites/typescript |
TS documentation |
| Node.js | /websites/nodejs |
Node.js docs |
/websites/ prefix - These are usually official documentation| Parameter | Required | Description |
|---|---|---|
context7CompatibleLibraryID |
Yes | The library ID from resolveLibraryId |
topic |
Yes | What you want to learn about |
mode |
No | "code" for examples, "docs" for explanations |
import { resolveLibraryId, getLibraryDocs } from '../servers/context7/index.js';
// Step 1: Find the library - result is automatically parsed
const result = await resolveLibraryId.call({ libraryName: "Laravel" });
// Step 2: Access the parsed libraries array
console.log(`Found ${result.libraries.length} libraries`);
// Step 3: Find best match programmatically
const best = result.libraries
.filter(lib => lib.sourceReputation === 'High')
.sort((a, b) => b.codeSnippets - a.codeSnippets)[0];
// Step 4: Get documentation using the library ID
const docs = await getLibraryDocs.call({
context7CompatibleLibraryID: best?.id || "/websites/laravel_12_x",
topic: "middleware",
mode: "code" // Get code examples
});
console.log(docs);
Skip the resolve step when you know the library ID:
// Direct usage with known IDs
const docs = await getLibraryDocs.call({
context7CompatibleLibraryID: "/websites/laravel_12_x",
topic: "middleware"
});
"code" - Returns code examples and snippets (best for implementation)"docs" - Returns explanatory documentation (best for understanding concepts)Problem: You get 30+ results and don't know which to pick.
Solution: Use the parsed libraries array to filter programmatically:
const result = await resolveLibraryId.call({ libraryName: "React" });
// Filter to high-reputation libraries with many snippets
const best = result.libraries
.filter(lib => lib.sourceReputation === 'High' && lib.codeSnippets > 100)
.sort((a, b) => b.codeSnippets - a.codeSnippets);
console.log('Best matches:', best.map(l => `${l.name} (${l.id})`));
Or use the recommended IDs table above for common frameworks.
Problem: getLibraryDocs fails with "library not found".
Solution:
resolveLibraryId first to get valid IDs// Common library IDs (no need to resolve)
const LIBRARY_IDS = {
laravel12: "/websites/laravel_12_x",
laravel11: "/websites/laravel-11.x",
react: "/websites/react",
vue: "/websites/vue",
nextjs: "/websites/nextjs",
typescript: "/websites/typescript",
nodejs: "/websites/nodejs",
};