Skip to main content
Glama
README.md
# Context7 MCP Server

MCP server providing access to Context7 API for up-to-date code documentation retrieval.

## Features

### Core Capabilities
- **Documentation Search** - Search across thousands of libraries and frameworks
- **Code Examples** - Get working code examples for specific use cases
- **API Reference** - Detailed API documentation for functions and classes
- **Code Explanation** - Understand code with line-by-line explanations
- **Troubleshooting** - Get help with error messages and bugs
- **Best Practices** - Learn recommended patterns and anti-patterns
- **Migration Guides** - Upgrade between versions or switch libraries
- **Library Comparison** - Compare different libraries for your use case
- **Changelog Access** - View release notes and breaking changes

## Installation

1. Clone this repository
2. Install dependencies:
```bash
pip install -r requirements.txt
```

3. Set up your environment variables:
```bash
cp .env.example .env
# Edit .env and add your Context7 API key
```

## Configuration

### Get Your Context7 API Key
1. Go to https://context7.com/api
2. Sign up or sign in
3. Generate an API key
4. Copy the key and add it to your `.env` file

### Claude Desktop Configuration

```json
{
  "mcpServers": {
    "context7": {
      "command": "fastmcp",
      "args": ["run", "server.py"],
      "env": {
        "CONTEXT7_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

## Available Tools

### search_documentation
Search for documentation across supported libraries.

**Parameters:**
- `query` (required): Search query
- `language`: Filter by language (javascript, python, go, etc.)
- `framework`: Filter by framework (react, django, nextjs, etc.)
- `limit`: Max results (default: 10, max: 50)

**Example:**
```json
{
  "query": "how to use useState in React",
  "framework": "react",
  "limit": 5
}
```

### get_library_docs
Get documentation for a specific library.

**Parameters:**
- `library` (required): Library name
- `version`: Specific version (default: latest)
- `topic`: Specific topic or module

**Example:**
```json
{
  "library": "react",
  "version": "18.2.0",
  "topic": "hooks"
}
```

### get_code_examples
Get code examples for a specific use case.

**Parameters:**
- `library` (required): Library name
- `use_case` (required): What you're trying to accomplish
- `language`: Programming language

**Example:**
```json
{
  "library": "express",
  "use_case": "JWT authentication middleware"
}
```

### explain_code
Get explanation of code with documentation references.

**Parameters:**
- `code` (required): Code snippet to explain
- `language`: Programming language (auto-detected)
- `context`: Additional context

**Example:**
```json
{
  "code": "const [count, setCount] = useState(0);",
  "language": "javascript",
  "context": "React component"
}
```

### get_api_reference
Get detailed API reference for a function or class.

**Parameters:**
- `library` (required): Library name
- `api_name` (required): API/function/class name
- `version`: Library version (default: latest)

**Example:**
```json
{
  "library": "react",
  "api_name": "useState",
  "version": "18.2.0"
}
```

### compare_libraries
Compare multiple libraries for a use case.

**Parameters:**
- `libraries` (required): List of library names
- `use_case` (required): What you're building
- `language`: Programming language

**Example:**
```json
{
  "libraries": ["react", "vue", "svelte"],
  "use_case": "building a todo app"
}
```

### get_migration_guide
Get migration guide between libraries or versions.

**Parameters:**
- `from_library` (required): Current library
- `to_library` (required): Target library
- `from_version`: Current version
- `to_version`: Target version

**Example:**
```json
{
  "from_library": "react",
  "to_library": "react",
  "from_version": "17.0.0",
  "to_version": "18.0.0"
}
```

### get_best_practices
Get best practices for a library.

**Parameters:**
- `library` (required): Library name
- `topic`: Specific topic (performance, security, testing, etc.)

**Example:**
```json
{
  "library": "react",
  "topic": "performance"
}
```

### troubleshoot_error
Get help with error messages.

**Parameters:**
- `error_message` (required): The error you're seeing
- `library`: Library where error occurred
- `code_context`: Code causing the error

**Example:**
```json
{
  "error_message": "Cannot read property 'map' of undefined",
  "library": "react",
  "code_context": "data.map(item => <div>{item}</div>)"
}
```

### list_supported_libraries
List all supported libraries.

**Parameters:**
- `language`: Filter by language
- `category`: Filter by category

**Example:**
```json
{
  "language": "python",
  "category": "data-science"
}
```

### get_changelog
Get changelog and release notes.

**Parameters:**
- `library` (required): Library name
- `from_version`: Starting version
- `to_version`: Ending version (default: latest)

**Example:**
```json
{
  "library": "react",
  "from_version": "17.0.0",
  "to_version": "18.2.0"
}
```

## Usage Examples

### Search for Documentation
```json
{
  "tool": "search_documentation",
  "query": "authentication with JWT",
  "language": "javascript"
}
```

### Get Code Examples
```json
{
  "tool": "get_code_examples",
  "library": "pandas",
  "use_case": "filter dataframe by multiple conditions"
}
```

### Explain Complex Code
```json
{
  "tool": "explain_code",
  "code": "useEffect(() => { fetchData(); }, [id]);",
  "language": "javascript"
}
```

### Compare Frameworks
```json
{
  "tool": "compare_libraries",
  "libraries": ["express", "fastify", "koa"],
  "use_case": "REST API server"
}
```

### Troubleshoot an Error
```json
{
  "tool": "troubleshoot_error",
  "error_message": "Module not found: Can't resolve 'react'",
  "library": "react"
}
```

### Migration Help
```json
{
  "tool": "get_migration_guide",
  "from_library": "webpack",
  "to_library": "vite"
}
```

## Supported Languages & Frameworks

Context7 supports documentation for:

### Languages
- JavaScript/TypeScript
- Python
- Go
- Rust
- Java
- C#
- PHP
- Ruby
- Swift
- Kotlin

### Popular Frameworks
- **Web**: React, Vue, Angular, Svelte, Next.js, Nuxt
- **Backend**: Express, Django, FastAPI, Spring Boot, Rails
- **Mobile**: React Native, Flutter, SwiftUI
- **Data Science**: Pandas, NumPy, Scikit-learn, TensorFlow
- **DevOps**: Docker, Kubernetes, Terraform, Ansible

## Use Cases

### For Developers
- Quick documentation lookup while coding
- Find working code examples
- Understand unfamiliar code
- Troubleshoot errors faster
- Learn best practices

### For AI Agents
- Provide accurate, up-to-date documentation
- Generate code with proper library usage
- Help debug issues with context
- Recommend appropriate libraries
- Assist with migrations and upgrades

## Error Handling

The server handles:
- Invalid API keys
- Rate limiting
- Network timeouts
- Invalid library names
- Malformed queries

## Rate Limits

Context7 API rate limits depend on your plan:
- Free tier: 100 requests/day
- Pro tier: 10,000 requests/day
- Enterprise: Custom limits

Check your usage at: https://context7.com/dashboard

## Best Practices

1. **Be Specific**: Include library names and versions when possible
2. **Use Filters**: Narrow searches with language/framework filters
3. **Cache Results**: Store frequently accessed documentation
4. **Combine Tools**: Use search + get_api_reference for comprehensive info
5. **Error Context**: Provide code context for better troubleshooting

## Security Notes

- Never commit API keys to version control
- Use environment variables
- Rotate keys regularly
- Monitor usage in dashboard
- Set up usage alerts

## Troubleshooting

### "Invalid API Key" Error
- Verify key in `.env` file
- Check key is active at context7.com
- Ensure no extra spaces

### Rate Limit Errors
- Check current usage in dashboard
- Upgrade plan if needed
- Implement caching

### Library Not Found
- Check library name spelling
- Use list_supported_libraries to verify
- Some libraries may not be indexed yet

## Resources

- [Context7 Website](https://context7.com)
- [API Documentation](https://context7.com/docs)
- [Supported Libraries](https://context7.com/libraries)
- [Model Context Protocol](https://modelcontextprotocol.io)

## License

MIT License - feel free to use in your projects!