Critic-MCP
Critic-MCP — 무자비한 코드 비평가
오픈소스 Model Context Protocol (MCP) 서버로, 다른 AI 코딩 어시스턴트(Cursor, OpenCode, Cline 등)가 생성한 코드를 읽기 전용으로 검토합니다.
Critic-MCP는 '두 번째 눈'입니다: 코드를 절대 수정하지 않고, 무자비하게 비판만 합니다. 단일 도구(review_code)를 제공하며 파일 쓰기 기능이 전혀 없습니다.
무엇을 하나요?
review_code 도구는 보낸 코드를 원래 요구사항(의도)과 비교하여 LLM을 통해 다음 섹션으로 구성된 검토 보고서를 생성합니다:
판정:
APPROVED|MODIFICATION_REQUIRED|REJECTED누락된 요구사항 — 의도와 코드 간의 차이
보안 발견사항 — SQL 인젝션, XSS, 권한 상승, 하드코딩된 비밀
엣지 케이스 발견사항 — null/빈 입력, 경계값, 오프바이원, 경쟁 조건
성능 발견사항 — N+1 쿼리, 메모리 누수, 중복 계산
기타 발견사항 + 필수 수정 항목 (우선순위 순)
설치 — 두 단계
요구사항: Node.js >= 20
1단계: 인증 (한 번)
대화형 설정을 실행합니다. aws configure 또는 gh auth login과 동일하게 작동합니다:
npx -y critic-mcp auth사용할 제공자(gemini / openai / deepseek)를 묻고, API 키를 입력받아 홈 디렉토리의 ~/.critic-mcp.json에 저장합니다(Unix에서는 0600 권한).
2단계: IDE에 추가
IDE의 MCP 설정에 다음만 추가하세요:
{ "command": "npx", "args": ["-y", "critic-mcp"] }클라이언트별 세부 사항은 AI 어시스턴트 통합 섹션을 참조하세요. 이게 전부입니다 — 이제 키는 모든 IDE 구성 외부의 한 곳에 저장됩니다.
키는 IDE 구성에 절대 기록되지 않습니다. 서버가 시작되면 먼저
process.env를 확인한 다음~/.critic-mcp.json을 확인합니다. 어디에서도 키를 찾을 수 없으면npx critic-mcp auth를 실행하도록 안내합니다.
로컬 개발 (소스에서 설치)
git clone https://github.com/layermedya/Critic-MCP.git
cd Critic-MCP
npm ci
npm run build
node dist/index.js auth # authenticate against your own build명령어
npm run build # TypeScript compilation
npm run typecheck # Type checking
npm test # Vitest unit tests
npm run test:watch # Tests in watch mode
npm start # Start the server on stdio
npm run inspect # Manual testing in the browser via MCP Inspector환경 변수 (선택 사항)
모든 변수는 선택 사항입니다. API 키의 일반적인 경로는 npx critic-mcp auth입니다. 환경 변수는 항상 구성 파일보다 우선합니다(CI/서버 설정의 경우).
Variable | Description |
|
|
| Gemini 키 (설정 시 파일보다 우선) |
| OpenAI/DeepSeek 키 (설정 시 파일보다 우선) |
| Gemini 모델 이름 (기본값: |
| 모델 이름 (기본값: |
| DeepSeek 등의 기본 URL (deepseek 기본값: |
| LLM 요청 시간 초과 (기본값: |
| 청크 제한 (기본값: |
| 청크 검토 중 병렬 요청 수 (기본값: |
| 구성 파일 위치 재정의 (기본값: |
AI 어시스턴트 통합
아래 구성에는 키가 포함되지 않습니다. auth 명령(위 1단계)을 통해 한 번 인증합니다. npx는 패키지가 npm에 게시되어 있어야 합니다. 로컬 클론의 경우 대신 "command": "node", "args": ["ABSOLUTE_PATH/dist/index.js"]를 사용할 수 있습니다.
Cursor
프로젝트 수준의 .cursor/mcp.json(또는 전역 ~/.cursor/mcp.json)에 다음을 추가합니다:
{
"mcpServers": {
"critic": {
"command": "npx",
"args": ["-y", "critic-mcp"]
}
}
}또는: 설정 → MCP → 새 MCP 서버 추가 후 JSON을 붙여넣습니다.
OpenCode
프로젝트 수준의 .opencode/opencode.json 또는 전역 ~/.config/opencode/opencode.json에 다음을 추가합니다:
{
"mcp": {
"critic": {
"type": "local",
"command": ["npx", "-y", "critic-mcp"],
"enabled": true
}
}
}OpenCode는
mcp키(mcpServers아님)와environment필드(env아님)를 사용합니다.command는 배열이어야 합니다. 더 이상environment블록에 키를 작성할 필요가 없습니다.
Cline (VS Code 확장)
Cline 패널 → MCP 서버 탭 → 전역 MCP 편집 또는 프로젝트 MCP 편집을 열고 JSON을 편집합니다:
{
"mcpServers": {
"critic": {
"command": "npx",
"args": ["-y", "critic-mcp"],
"disabled": false,
"autoApprove": ["review_code"]
}
}
}
autoApprove를 사용하면 Cline이 확인 없이review_code를 실행할 수 있습니다. 도구가 파일을 절대 쓰지 않으므로 안전합니다.
Continue.dev
MCP 서버를 ~/.continue/config.json에 추가합니다(Continue 버전에 관계없이 stdio 전송이 지원됩니다):
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "critic-mcp"]
}
}
]
}
}수동 테스트 시나리오
examples/bad_code.js는 의도적으로 SQL 인젝션, XSS, N+1 쿼리를 포함하는 Express 예제입니다. examples/intent.txt에는 원래 요구사항이 있습니다. 다음과 같이 클라이언트에서 호출합니다:
"review_code 도구를 사용하여 examples/bad_code.js의 코드를 검토하세요. 요구사항: examples/intent.txt"
비평가가 최소한 다음을 잡아낼 것으로 예상합니다:
CRITICAL:
db.query("SELECT * FROM users WHERE email = '" ...)— SQL 인젝션CRITICAL:
res.send(comment.body)— 저장된 XSSHIGH: 사용자당 별도 쿼리 — N+1 문제
아키텍처
src/index.ts -> MCP server, zod validation, error handling + `auth` argv routing
src/cli.ts -> Interactive authentication flow (`critic-mcp auth`)
src/config.ts -> Global config (~/.critic-mcp.json) + credential resolution (env → file)
src/prompt.ts -> Ruthless Critic system prompt + chunked-review prompts
src/llm.ts -> Provider layer + timeout protection + map-reduce orchestration
src/chunker.ts -> Line-ending based chunking (for code above the limit)청크 검토 (맵-리듀스)
code_snippet이 CHUNK_SIZE(기본값 30,000 문자)를 초과하면 시스템이 자동으로 맵-리듀스 흐름으로 전환합니다:
맵: 코드가 줄 경계에서 분할됩니다. 각 청크는 동시에 LLM으로 전송됩니다(기본 3개의 병렬 요청,
CRITIC_CONCURRENCY로 구성 가능). 단일 청크 실패가 전체 검토를 중단시키지 않습니다.리듀스: 반환된 모든 부분 분석은 "Synthesizer" 프롬프트에 의해 병합되어 하나의 최종 보고서로 만들어집니다. 이 프롬프트는 발견사항을 약화시키지 않으며, 단일 부분이 CRITICAL을 보고할 때 APPROVED를 반환하지 않습니다.
서버는 문자열 보고서만 반환합니다. 파일 쓰기 기능이 없으며 외부로 네트워크 클라이언트를 노출하지 않습니다.
라이선스
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server for structured code review passes on human- and AI-written code. Free tier.
Scans MCP servers for tool poisoning, prompt injection and supply chain risks.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/layermedya/Critic-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server