Skip to content

Context7 MCP Server Cheat Sheet

Overview

Context7 is a Model Context Protocol (MCP) server that provides AI coding tools with access to up-to-date, version-specific documentation for 1000+ libraries and frameworks. It eliminates outdated information by pulling documentation directly from official sources.

⚠️ Note: Requires MCP-compatible AI tools (Claude, Cursor, Windsurf, etc.)

Installation

NPM Installation

bash
# Install globally
npm install -g @upstash/context7

# Install locally in project
npm install @upstash/context7

# Verify installation
npx @upstash/context7 --version

Docker Installation

bash
# Pull Docker image
docker pull mcp/context7

# Run Context7 server
docker run -p 3000:3000 mcp/context7

# Run with custom configuration
docker run -p 3000:3000 -v $(pwd)/config:/app/config mcp/context7

From Source

bash
# Clone repository
git clone https://github.com/upstash/context7.git
cd context7

# Install dependencies
npm install

# Build and run
npm run build
npm start

MCP Configuration

Cursor IDE

json
// Add to Cursor MCP settings
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["@upstash/context7"],
      "env": {
        "CONTEXT7_API_KEY": "your-api-key"
      }
    }
  }
}

Claude Desktop

json
// ~/.claude/claude_desktop_config.json
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["@upstash/context7"],
      "env": {
        "CONTEXT7_API_KEY": "your-api-key"
      }
    }
  }
}

Windsurf IDE

json
// Add to Windsurf MCP configuration
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["@upstash/context7", "--port", "3000"],
      "env": {
        "CONTEXT7_API_KEY": "your-api-key"
      }
    }
  }
}

VS Code with Continue.dev

json
// .continue/config.json
{
  "mcpServers": [
    {
      "name": "context7",
      "command": "npx",
      "args": ["@upstash/context7"],
      "env": {
        "CONTEXT7_API_KEY": "your-api-key"
      }
    }
  ]
}

Available Tools

resolve-library-id

bash
# Resolve library name to Context7 ID
# Input: General library name
# Output: Context7-compatible library ID

# Example usage in AI chat:
"Find the Context7 ID for React"
# Returns: /facebook/react

get-library-docs

bash
# Fetch documentation for specific library
# Parameters:
# - context7CompatibleLibraryID (required)
# - topic (optional)
# - tokens (optional, default: 10000)

# Example usage in AI chat:
"Get React documentation for hooks"
# Uses: /facebook/react with topic "hooks"

Supported Libraries

Frontend Frameworks

bash
# React ecosystem
/facebook/react
/vercel/next.js
/gatsbyjs/gatsby
/vuejs/vue
/nuxt/nuxt
/angular/angular

# State management
/reduxjs/redux
/pmndrs/zustand
/mobxjs/mobx
/vuejs/pinia

Backend Frameworks

bash
# Node.js frameworks
/expressjs/express
/fastify/fastify
/nestjs/nest
/koajs/koa

# Python frameworks
/django/django
/pallets/flask
/fastapi/fastapi
/tornadoweb/tornado

# Other languages
/spring-projects/spring-boot
/rails/rails
/laravel/laravel

Databases

bash
# SQL databases
/mongodb/docs
/prisma/prisma
/typeorm/typeorm
/sequelize/sequelize

# NoSQL databases
/redis/redis
/elastic/elasticsearch
/apache/cassandra

Cloud Services

bash
# AWS services
/aws/aws-sdk-js
/aws/aws-cdk
/aws/aws-cli

# Google Cloud
/googleapis/google-cloud-node
/firebase/firebase-js-sdk

# Azure
/azure/azure-sdk-for-js
/azure/azure-cli

Usage Examples

Basic Documentation Lookup

javascript
// In AI chat with Context7 enabled:
"Show me the latest React useState documentation"

// Context7 automatically:
// 1. Resolves "React" to /facebook/react
// 2. Fetches current useState documentation
// 3. Provides up-to-date examples and API reference

Version-Specific Documentation

javascript
// Get specific version documentation
"Get Next.js 14 documentation for app router"

// Context7 provides:
// - Version 14 specific features
// - App router implementation details
// - Migration guides from pages router

Topic-Focused Queries

javascript
// Focus on specific topics
"Get MongoDB documentation for aggregation pipelines"

// Context7 returns:
// - Aggregation framework documentation
// - Pipeline stage references
// - Performance optimization tips

Multi-Library Comparisons

javascript
// Compare similar libraries
"Compare Prisma and TypeORM query builders"

// Context7 fetches:
// - Current Prisma query documentation
// - Current TypeORM query documentation
// - Enables accurate comparison

Configuration Options

Environment Variables

bash
# API configuration
export CONTEXT7_API_KEY="your-api-key"
export CONTEXT7_PORT=3000
export CONTEXT7_HOST="localhost"

# Cache settings
export CONTEXT7_CACHE_TTL=3600
export CONTEXT7_CACHE_SIZE=1000

# Rate limiting
export CONTEXT7_RATE_LIMIT=100
export CONTEXT7_RATE_WINDOW=60

Configuration File

json
// context7.config.json
{
  "server": {
    "port": 3000,
    "host": "localhost"
  },
  "cache": {
    "ttl": 3600,
    "maxSize": 1000,
    "enabled": true
  },
  "rateLimit": {
    "requests": 100,
    "window": 60
  },
  "libraries": {
    "autoUpdate": true,
    "updateInterval": 86400
  }
}

Custom Library Sources

json
// Add custom documentation sources
{
  "customSources": [
    {
      "id": "/company/internal-lib",
      "name": "Internal Library",
      "url": "https://docs.company.com/internal-lib",
      "type": "markdown"
    }
  ]
}

Advanced Usage

Programmatic Access

javascript
// Use Context7 programmatically
const { Context7Client } = require('@upstash/context7');

const client = new Context7Client({
  apiKey: process.env.CONTEXT7_API_KEY
});

// Resolve library ID
const libraryId = await client.resolveLibraryId('React');
console.log(libraryId); // /facebook/react

// Get documentation
const docs = await client.getLibraryDocs({
  libraryId: '/facebook/react',
  topic: 'hooks',
  tokens: 5000
});

Custom MCP Server

javascript
// Create custom MCP server with Context7
const { MCPServer } = require('@modelcontextprotocol/sdk');
const { Context7Client } = require('@upstash/context7');

const server = new MCPServer({
  name: 'custom-context7',
  version: '1.0.0'
});

const context7 = new Context7Client();

server.addTool({
  name: 'get-docs',
  description: 'Get documentation with custom processing',
  inputSchema: {
    type: 'object',
    properties: {
      library: { type: 'string' },
      topic: { type: 'string' }
    }
  },
  handler: async ({ library, topic }) => {
    const libraryId = await context7.resolveLibraryId(library);
    const docs = await context7.getLibraryDocs({
      libraryId,
      topic,
      tokens: 8000
    });
    
    // Custom processing
    return processDocumentation(docs);
  }
});

Integration with Build Tools

javascript
// Webpack plugin for Context7
class Context7WebpackPlugin {
  apply(compiler) {
    compiler.hooks.beforeCompile.tapAsync('Context7Plugin', async (params, callback) => {
      // Update documentation cache before build
      await updateContext7Cache();
      callback();
    });
  }
}

// Vite plugin
export function context7Plugin() {
  return {
    name: 'context7',
    buildStart() {
      // Initialize Context7 for development
      initializeContext7();
    }
  };
}

Monitoring and Debugging

Health Checks

bash
# Check server status
curl http://localhost:3000/health

# Check library availability
curl http://localhost:3000/libraries

# Test library resolution
curl -X POST http://localhost:3000/resolve \
  -H "Content-Type: application/json" \
  -d '{"libraryName": "React"}'

Logging Configuration

json
{
  "logging": {
    "level": "info",
    "format": "json",
    "outputs": ["console", "file"],
    "file": {
      "path": "./logs/context7.log",
      "maxSize": "10MB",
      "maxFiles": 5
    }
  }
}

Performance Monitoring

javascript
// Monitor Context7 performance
const { Context7Monitor } = require('@upstash/context7/monitor');

const monitor = new Context7Monitor({
  metricsInterval: 60000,
  alertThresholds: {
    responseTime: 5000,
    errorRate: 0.05
  }
});

monitor.on('alert', (alert) => {
  console.log('Context7 Alert:', alert);
  // Send to monitoring system
});

Troubleshooting

Common Issues

bash
# Server not starting
# Check port availability
netstat -an | grep 3000

# Check configuration
npx @upstash/context7 --validate-config

# Library not found
# Update library index
npx @upstash/context7 --update-libraries

# Slow responses
# Check cache status
curl http://localhost:3000/cache/stats

Debug Mode

bash
# Enable debug logging
export CONTEXT7_DEBUG=true
npx @upstash/context7

# Verbose output
npx @upstash/context7 --verbose

# Test specific library
npx @upstash/context7 --test-library /facebook/react

Cache Management

bash
# Clear cache
curl -X DELETE http://localhost:3000/cache

# Warm cache for popular libraries
curl -X POST http://localhost:3000/cache/warm

# Cache statistics
curl http://localhost:3000/cache/stats

Security Considerations

API Key Management

bash
# Use environment variables
export CONTEXT7_API_KEY="$(cat ~/.context7/api-key)"

# Rotate API keys regularly
npx @upstash/context7 --rotate-key

# Restrict API access
export CONTEXT7_ALLOWED_ORIGINS="https://your-domain.com"

Network Security

json
{
  "security": {
    "cors": {
      "enabled": true,
      "origins": ["https://trusted-domain.com"]
    },
    "rateLimit": {
      "enabled": true,
      "requests": 100,
      "window": 60
    },
    "authentication": {
      "required": true,
      "methods": ["apiKey", "jwt"]
    }
  }
}

Performance Optimization

Caching Strategies

json
{
  "cache": {
    "strategy": "lru",
    "maxSize": 1000,
    "ttl": 3600,
    "compression": true,
    "persistence": {
      "enabled": true,
      "path": "./cache"
    }
  }
}

Request Optimization

javascript
// Batch requests for better performance
const batchRequests = [
  { library: 'React', topic: 'hooks' },
  { library: 'Next.js', topic: 'routing' },
  { library: 'TypeScript', topic: 'interfaces' }
];

const results = await context7.batchGetDocs(batchRequests);

Resources