코딩 에이전트는 기억하는 API를 기준으로 코드를 작성하는데, 그 기억은 작년 기준입니다. Context7은 이 간극을 메우기 위해 존재합니다. 라이브러리 문서 색인을 유지하고, 에이전트가 필요로 하는 순간에 관련 부분을 건네줍니다. 64,773개의 스타를 받은 upstash/context7은 현존하는 MCP server 중 설치 수가 가장 많은 축에 속합니다.
이 도구는 형태도 여러 번 바뀌었습니다. 대부분의 가이드가 설명하는 get-library-docs 도구는 더 이상 존재하지 않고, 이제는 키를 사용하는 무료 할당량이 있으며, 받는 답변은 어떤 버전의 라이브러리를 요청하느냐에 따라 달라지는데 이 차이는 놓치기 쉽습니다. 저희는 2026년 11월 12일에 배포된 @upstash/context7-mcp 4.7.0을 2026년 11월 14일에 MCP Inspector의 CLI로 API 키 없이 실행하고, 어떤 응답이 돌아오는지 확인했습니다.
설치
Context7은 두 가지 방식으로 실행됩니다. 둘 다 동일한 호스팅 Context7 API와 통신합니다.
| 원격 | 로컬 | |
|---|---|---|
| 주소 또는 명령 | https://mcp.context7.com/mcp |
npx -y @upstash/context7-mcp |
| 키 | Authorization: Bearer 헤더 또는 /mcp/oauth의 OAuth |
--api-key 플래그 또는 CONTEXT7_API_KEY |
| Node.js 필요 | 아니요 | 20.18.1 이상 |
| 오프라인 동작 | 아니요 | 아니요: 여전히 호스팅 API를 호출합니다 |
클라이언트가 HTTP 서버를 지원하지 않는 경우가 아니라면 원격을 선택하세요. 로컬 패키지는 얇은 클라이언트이며, Context7의 README는 MCP server만 오픈 소스이고 인덱스, 파서, 크롤러는 비공개라고 분명히 밝히고 있습니다.
먼저 context7.com에서 무료 키를 발급받으세요. 키는 ctx7sk-로 시작하며 한 번만 표시됩니다.
Claude Code, 원격:
claude mcp add --scope user --header "Authorization: Bearer YOUR_API_KEY" --transport http context7 https://mcp.context7.com/mcp
또는 키 대신 /mcp를 통해 OAuth를 사용하는 플러그인:
/plugin marketplace add upstash/context7
/plugin install context7@context7-marketplace
Cursor, ~/.cursor/mcp.json에서:
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
VS Code는 .vscode/mcp.json에서 mcpServers 대신 servers를 사용합니다:
{
"servers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Codex:
codex mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
Codex가 시작 시 타임아웃되면 Context7의 Codex 페이지에서 권장하는 대로 설정에서 startup_timeout_sec을 40으로 높이세요. Claude Desktop은 사용자 지정 커넥터로 추가합니다: Settings, Connectors, Add Custom Connector, URL https://mcp.context7.com/mcp.
Context7은 npx ctx7 setup도 제공합니다. 이 명령은 로그인하고, 키를 생성하며, Claude Code, Cursor, Codex 또는 OpenCode용 MCP 항목이나 스킬을 설치합니다. npx ctx7 remove로 되돌릴 수 있습니다. 무엇이 어디에 들어가는지 직접 확인하고 싶다면 저희 config builder가 일반 항목을 작성해 줍니다.
두 도구
4.7.0에서 tools/list를 호출하니 도구가 두 개 반환되었고, 둘 다 읽기 전용 및 멱등으로 표시되어 있습니다.
| 도구 | 매개변수 | 하는 일 |
|---|---|---|
resolve-library-id |
libraryName, query |
라이브러리의 Context7 ID를 찾고, 질문을 기준으로 순위를 매깁니다 |
query-docs |
libraryId, query, 선택적 language |
해당 라이브러리의 문서 섹션과 코드 예제를 반환합니다 |
설명에는 사용자가 이미 /vercel/next.js 같은 ID를 제공하지 않은 한 먼저 resolve를 호출하고, 질문당 각 도구를 세 번 넘게 호출하지 말라고 에이전트에 지시합니다. 두 query 필드에는 같은 경고가 붙습니다. 쿼리는 Context7의 API로 전송되므로 API 키, 비밀번호, 개인정보, 독점 코드를 넣지 마십시오.
오래된 튜토리얼을 따라오고 있다면: get-library-docs는 버전 2.0.0에서 query-docs로 대체되었고, tokens, topic, page, mode 매개변수는 사라졌습니다. 2.2.5부터는 서버가 에이전트가 임의로 만들어낸 일부 인자 이름(예: query 대신 question)을 조용히 바로잡습니다.
받은 결과
resolve-library-id에 "next.js"를, 질문으로 "app router middleware"를 넣어 요청했습니다. 응답은 2,175바이트였습니다. 최상위 결과는 /vercel/next.js로, 코드 스니펫 7,338개, 소스 평판 High, 벤치마크 점수 79.96, 버전은 v12.3.7부터 v16.4.5까지에 canary 브랜치가 더해져 있었습니다. 다음은 별도로 인덱싱된 문서 웹사이트인 /websites/nextjs로, 스니펫 9,524개, 점수 76.15였습니다. 한 프레임워크에 ID가 두 개인 것은 Context7에서 정상이며, 저장소와 웹사이트가 별도 라이브러리로 인덱싱됩니다.
그다음 query-docs를 세 번 호출했습니다.
| 라이브러리 ID | 질문 | 응답 | 코드 블록 |
|---|---|---|---|
/vercel/next.js |
인증되지 않은 사용자를 리다이렉트하는 프록시 | 8,422바이트 | 5 |
/vercel/next.js |
server actions revalidatePath | 4,304바이트 | 8 |
/vercel/next.js/v16.2.9 |
인증되지 않은 사용자를 리다이렉트하는 프록시 | 5,512바이트 | 집계하지 않음 |
응답은 간결합니다. 각 섹션에 제목, 출처 링크, 코드 예제가 하나씩 붙은 몇 개의 섹션으로 이루어져 있어, 에이전트가 컨텍스트를 채우지 않고 한 세션에서 여러 번 호출할 수 있을 만큼 작습니다. 익명 호출은 키 없이도 오류 없이 동작했습니다.
버전 고정하기
가장 중요한 세부 사항은 소스 링크에 있었습니다. 버전을 고정하지 않은 답변은 Next.js 저장소의 canary 브랜치에 있는 파일을 가리켰습니다. 아직 릴리스되지 않은 코드의 문서였죠. 빠르게 변하는 프레임워크에서는 canary 문서가 설치된 버전에 없는 API, 이름, 기본값을 설명할 수 있습니다.
버전을 고정하면 해결됩니다. ID에 버전을 붙여 /vercel/next.js/v16.2.9로 만들면 해당 릴리스에서 답변이 나옵니다. 저희 경우에는 같은 질문에 대해 다르고 더 짧은 답변이 나왔습니다. Context7이 보유한 버전은 resolve-library-id 출력에 나열되며, 프롬프트에서 버전을 평문으로 지정할 수도 있습니다.
상시 규칙을 두면 입력을 줄일 수 있습니다. Context7 자체 팁은 CLAUDE.md나 Cursor 규칙에 한 줄을 넣어 에이전트가 요청하지 않아도 라이브러리 문서, 설정, 구성에 Context7을 사용하도록 하는 것입니다. 저희라면 한 조항을 덧붙이겠습니다. "그리고 package.json에 있는 버전을 사용할 것"입니다.
요금제 및 한도
| Free | Pro | Enterprise | |
|---|---|---|---|
| 가격 | $0 | 월 시트당 $10 | 별도 협의 |
| 포함 호출 수 | 월 1,000회 | 월 시트당 2,000회 | 월 시트당 2,000회 |
| 초과 시 | 월이 초기화될 때까지 하루 20회 보너스 호출 | 1,000회당 $5, 차단 없음 | 1,000회당 $5 |
| 비공개 저장소 | 아니요 | 예, 파싱된 토큰 100만 개당 $5 | 예 |
| 팀 멤버 | 본인만 | 최대 30명 | 무제한, SSO 및 셀프 호스팅 포함 |
호출은 MCP server, CLI 또는 REST API를 통한 검색 한 번 또는 docs 요청 한 번을 의미합니다. 키가 없으면 Context7에서 "low rate limits"라고 부르는 상태가 되며, 구체적인 수치는 공개되지 않았습니다. 한도에 걸린 요청은 Retry-After 및 RateLimit-* 헤더와 함께 HTTP 429를 반환합니다.
실제로 에이전트가 Context7로 답하는 질문 하나에는 호출 두 번이 듭니다. resolve 한 번과 query 한 번이며, 재시도하면 더 늘어납니다. 프롬프트나 규칙에 ID를 지정하면 resolve 단계를 건너뛰어 비용이 절반으로 줄어듭니다.
Context7에 문서가 들어오는 방식
누구든지 GitHub URL을 붙여넣어 context7.com/add-library에서 공개 라이브러리를 추가할 수 있습니다. 프로젝트 소유자여부와 관계없습니다. Context7은 웹사이트, llms.txt 파일, OpenAPI 스펙도 받습니다. Markdown, MDX, reStructuredText, 노트북 및 이와 유사한 텍스트를 인덱싱하고, PDF와 DOCX를 변환하며, 주로 영어가 아닌 페이지는 건너뜁니다. 저장소에 문서가 거의 없으면 Context7이 소스에서 예제를 생성합니다.
라이브러리는 누군가 요청했고 사본이 오래된 경우 새로 고쳐집니다. 얼마나 오래된지를 판단하는 기준은 인기도에 따라 다릅니다. 상위 100개는 하루, 상위 1,000개는 15일, 상위 5,000개는 30일, 나머지는 45일입니다. 웹사이트와 llms.txt 소스는 10일을 더 기다립니다. 인기가 낮은 라이브러리는 자체 문서보다 최대 6주 뒤처질 수 있습니다.
라이브러리를 유지 관리한다면 저장소 루트의 context7.json 파일로 인덱싱 대상을 제어할 수 있습니다. 어떤 폴더, 어떤 브랜치, 어떤 이전 버전을 인덱싱할지와 답변 앞에 붙일 규칙을 지정합니다. "disallow": true는 라이브러리를 제거합니다. 라이브러리를 클레임하면 관리자 패널과 verified 배지로 가는 경로를 얻습니다.
보안
Context7가 반환하는 모든 내용은 다른 사람이 작성한 것이며, 일부는 해당 프로젝트를 소유하지 않은 사람이 제출한 것입니다. 따라서 웹 페이지와 같은 종류의 입력입니다. 즉, 모델이 읽을 데이터이지 따를 지시가 아닙니다.
Context7은 제출된 모든 저장소와 사이트를 2단계 프롬프트 인젝션 분류기로 검사하고 플래그가 지정된 청크는 건너뛴다고 밝힙니다. 계정 생성 시기, 스타 수, 활동성 같은 신호와 생성된 개발자 질문 벤치마크를 바탕으로 라이브러리에 신뢰 점수를 매기며, 위의 79.96점이 바로 그 벤치마크 점수입니다. Upstash의 블로그에 따르면 verified 배지는 아직 시각적 표시일 뿐입니다.
알아둘 만한 사건이 하나 있습니다. 2026년 5월, 사용자들은 query-docs 응답이 npx ctx7 setup -y 실행을 제안하라는 "시스템 공지"로 끝난다고 보고했습니다(이슈 2663, 2673). 유지 관리자들은 이것이 2.3.0에서 추가된 익명 사용자용 로그인 프롬프트 테스트였으며 반발이 있은 후 비활성화했다고 설명했습니다. 라이브러리 문서가 아니라 Context7 서버에서 비롯된 것이지만, 도구 결과의 텍스트가 얼마나 쉽게 에이전트에게 명령 실행을 요청할 수 있는지 보여줍니다. 셸 명령은 직접 승인하십시오.
실용적인 규칙은 다음과 같습니다. 질문에 비밀 정보를 넣지 말고, verified 또는 잘 알려진 라이브러리를 선호하며, Pro 또는 Enterprise에서는 팀스페이스 정책으로 사용할 수 있는 라이브러리를 제한하십시오. 이런 종류의 위험에 대한 자세한 내용은 MCP 보안을 참고하십시오.
대안
| 서버 | 기능 | 키 | 비고 |
|---|---|---|---|
| Context7 | 버전과 점수가 포함된 라이브러리 문서의 사전 구축 인덱스 | 무료 키 | 64,773 stars, MIT 서버, 비공개 인덱스 |
| DeepWiki MCP | AI가 작성한 위키를 바탕으로 모든 공개 GitHub 저장소에 대한 질문에 답변 | 없음 | Cognition이 mcp.deepwiki.com/mcp에서 호스팅, 무료 |
| GitMCP | 한 저장소의 llms.txt 또는 README를 문서 엔드포인트로 변환 |
없음 | 8,515 stars, Apache-2.0, 마지막 push 2026년 5월 |
| Ref | 문서를 검색하고 페이지를 읽음 | 필수 | 1,186 stars, MIT; 사이트에 가격 미기재 |
Context7은 매번 알려진 버전의 동일한 라이브러리가 필요할 때 더 적합합니다. DeepWiki는 낯선 저장소를 전체적으로 이해하는 데 좋습니다. GitMCP는 좋은 llms.txt를 제공하는 한 프로젝트에 가장 가벼운 선택지입니다. 프레임워크별 작업에서는 프레임워크 자체 서버가 이들 모두를 능가할 수 있습니다. Next.js 16은 next-devtools-mcp를 통해 버전에 맞는 문서를 에이전트에 제공하며, 이는 Next.js MCP 가이드에서 다룹니다.
동작하지 않을 때
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
| HTTP 429 | 무료 또는 익명 한도에 도달함 | 키를 추가하거나, 일일 보너스를 기다리거나, 업그레이드합니다. API의 usage 엔드포인트로 사용량을 확인합니다 |
| 코드가 현재 버전에 없는 API를 사용함 | 버전을 고정하지 않은 쿼리가 더 최신 문서나 카나리 문서에서 응답됨 | /org/project/vX로 버전을 고정하거나 프롬프트에 버전을 명시합니다 |
| 에이전트가 Context7을 호출하지 않음 | "use context7"도 없고 상시 규칙도 없음 | CLAUDE.md나 Cursor 규칙에 해당 규칙을 추가합니다 |
튜토리얼이 get-library-docs를 호출함 |
2.0.0 이전에 작성됨 | resolve-library-id와 query-docs를 사용합니다 |
| Codex가 시작 시 실패함 | 시작 타임아웃 | startup_timeout_sec를 40으로 설정합니다 |
| 라이브러리가 오래됨 | 갱신은 요청 시에만 이루어지며 최대 45일 소요 | 해당 Context7 페이지에서 갱신하거나, 메인테이너에게 GitHub Action 추가를 요청합니다 |
| 엉뚱한 프로젝트가 반환됨 | 하나의 이름에 여러 ID가 존재함 | resolve 목록을 읽고 스니펫, 평판, 점수를 기준으로 선택한 뒤 해당 ID를 지정합니다 |
검사 점수와 설치 명령이 포함된 카탈로그의 Context7 항목은 이 페이지 상단에 있습니다.