---
title: Docfork vs Context7
description: Key differences between popular docs search MCP servers.
---
| Feature | **Docfork** | Context7 |
| ------------------------ | ------------------------------------------ | ---------------------------------- |
| Stack scoping (Cabinets) | **Project-level**, free | Org-wide allowlist |
| Team collaboration | **Free:** shared Cabinets & API keys | Pro plan ($10/seat) |
| Content | **Full docs** + `fetch_url` for full pages | Documentation sections |
| Approach | **Search + read** (iterative) | Resolve → query (two-step) |
| Tools | `query_docs`, `fetch_url` | `resolve-library-id`, `query-docs` |
| Token optimization | **Adaptive** 500–100k tokens | Fixed \~3k tokens |
## The problem
You prompt: `"How do I set up authentication?"`
Your agent returns results from NextAuth, Clerk, Auth0, Better Auth, Supabase Auth — even though you only use one. That's context bloat, and it leads to hallucinated code.
Without project-level scoping, there's no way to tell your agent "this project uses Hono, not Express" or "Drizzle, not Prisma." The query is ambiguous, so the results are too.
## The fix: Cabinets
A Cabinet is a lockfile for your docs context. Define your stack once, and every query returns only docs from those libraries.
```json
{
"mcpServers": {
"docfork": {
"url": "https://mcp.docfork.com/mcp",
"headers": {
"DOCFORK_API_KEY": "YOUR_API_KEY",
"DOCFORK_CABINET": "my-saas-app"
}
}
}
}
```
This Cabinet contains `vercel/next.js` + `drizzle-team/drizzle-orm` + `better-auth/better-auth`. Now _"how do I set up authentication?"_ returns Better Auth docs — because that's what's in your stack.
Your whole team uses the same Cabinet. **Same context, every engineer.**
## Switch in 60 seconds
Replace your Context7 config:
```diff
{
"mcpServers": {
- "context7": {
- "command": "npx",
- "args": ["-y", "@upstash/context7-mcp@latest"]
+ "docfork": {
+ "command": "npx",
+ "args": ["-y", "docfork@latest"]
}
}
}
```
[Get your free API key →](https://app.docfork.com/signup)
Then [create a Cabinet](/core/cabinets) with your stack and add the `DOCFORK_CABINET` header. Done.