MCP Server Semgrep

by Szowesgad
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

MCP 서버 Semgrep

제공:

프로젝트 소개

이 프로젝트는 처음에는 Semgrep 도구 , Replit 팀Agent V2 의 견고성과 stefanskiasan/semgrep-mcp-server 의 구현에서 영감을 얻었지만, 향상되고 용이한 설치 및 유지 관리를 위해 상당한 아키텍처 변경을 거치면서 발전했습니다.

MCP 서버 Semgrep은 강력한 정적 분석 도구인 Semgrep과 Anthropic Claude와 같은 AI 어시스턴트를 통합하는 모델 컨텍스트 프로토콜( MCP) 호환 서버입니다. 대화형 인터페이스를 통해 고급 코드 분석, 보안 취약점 탐지 및 코드 품질 개선을 직접 수행할 수 있습니다.

통합의 이점

개발자 및 개발팀을 위한:

  • 전체적인 소스 코드 분석 - 개별 파일뿐만 아니라 전체 프로젝트에서 문제를 감지합니다.
  • 사전 예방적 오류 감지 - 심각한 버그로 발전하기 전에 잠재적 문제를 식별합니다.
  • 지속적인 코드 품질 개선 - 정기적인 스캐닝 및 리팩토링을 통해 점진적인 코드베이스 개선이 이루어집니다.
  • 문체적 일관성 - 다음과 같은 코드의 불일치 사항을 식별하고 수정합니다.
    • CSS의 임의의 z-index 레이어
    • 일관되지 않은 명명 규칙
    • 코드 중복
    • 명명된 상수 대신 "매직 넘버"

보안을 위해:

  • 알려진 취약점에 대한 자동 코드 검증 - 알려진 보안 문제 패턴 스캔
  • 사용자 지정 보안 규칙 - 프로젝트별 규칙 생성
  • 팀 교육 - 잠재적인 문제 탐지를 통해 보안 프로그래밍 관행 교육

프로젝트 유지관리 및 개발을 위해:

  • "실시간" 문서 - AI는 코드 조각에 문제가 있는 이유와 해결 방법을 설명할 수 있습니다.
  • 기술 부채 감소 - 문제가 있는 영역을 체계적으로 감지하고 수정
  • 개선된 코드 검토 - 일반적인 문제를 자동으로 감지하여 보다 복잡한 문제에 집중할 수 있습니다.

주요 특징

  • 공식 MCP SDK와 직접 통합
  • 통합 핸들러를 통한 단순화된 아키텍처
  • ES 모듈 구현 정리
  • 보안을 위한 효율적인 오류 처리 및 경로 검증
  • 영어와 폴란드어로 된 인터페이스 및 문서
  • 포괄적인 단위 테스트
  • 광범위한 문서
  • 크로스 플랫폼 호환성(Windows, macOS, Linux)
  • 유연한 Semgrep 설치 감지 및 관리

기능

Semgrep MCP 서버는 다음과 같은 도구를 제공합니다.

  • scan_directory : 잠재적인 문제에 대한 소스 코드 스캔
  • list_rules : Semgrep에서 지원하는 사용 가능한 규칙 및 언어 표시
  • analyze_results : 검사 결과에 대한 자세한 분석
  • create_rule : 사용자 정의 Semgrep 규칙 생성
  • filter_results : 다양한 기준으로 결과 필터링
  • export_results : 다양한 형식으로 결과 내보내기
  • compare_results : 두 세트의 결과를 비교합니다(예: 변경 전과 후)

일반적인 사용 사례

  • 배포 전 코드 보안 분석
  • 일반적인 프로그래밍 오류 감지
  • 팀 내에서 코딩 표준 적용
  • 기존 코드의 리팩토링 및 품질 개선
  • 스타일 및 코드 구조(예: CSS, 구성 요소 구성)의 불일치 식별
  • 모범 사례에 대한 개발자 교육
  • 수정 정확성 검증(스캔 전/후 비교)

설치

필수 조건

  • Node.js v18+
  • TypeScript(개발용)

옵션 1: Smithery.ai에서 설치(권장)

MCP Server Semgrep을 설치하고 사용하는 가장 쉬운 방법은 Smithery.ai를 이용하는 것입니다.

  1. Smithery.ai에서 MCP 서버 Semgrep을 방문하세요
  2. MCP 호환 클라이언트에 추가하려면 설치 지침을 따르세요.
  3. Semgrep API 토큰과 같은 선택적 설정을 구성합니다.

이 방법은 모든 종속성과 구성을 자동으로 처리하므로 Claude Desktop 및 기타 MCP 클라이언트에 권장됩니다.

옵션 2: NPM 레지스트리에서 설치

지엑스피1

이 패키지는 다른 레지스트리에서도 사용할 수 있습니다.

옵션 3: GitHub에서 설치

# Using npm npm install -g git+https://github.com/Szowesgad/mcp-server-semgrep.git # Using pnpm pnpm add -g git+https://github.com/Szowesgad/mcp-server-semgrep.git # Using yarn yarn global add git+https://github.com/Szowesgad/mcp-server-semgrep.git

옵션 4: 로컬 개발 설정

  1. 저장소를 복제합니다.
git clone https://github.com/Szowesgad/mcp-server-semgrep.git cd mcp-server-semgrep
  1. 종속성 설치(모든 주요 패키지 관리자 지원):
# Using pnpm (recommended) pnpm install # Using npm npm install # Using yarn yarn install
  1. 프로젝트를 빌드하세요:
# Using pnpm pnpm run build # Using npm npm run build # Using yarn yarn build

참고 : 설치 과정에서 Semgrep의 사용 가능 여부를 자동으로 확인합니다. Semgrep을 찾을 수 없는 경우 설치 방법에 대한 안내가 제공됩니다.

Semgrep 설치 옵션

Semgrep은 여러 가지 방법으로 설치할 수 있습니다.

  • 패키지 관리자를 통해 :
    # Using pnpm pnpm add -g semgrep # Using npm npm install -g semgrep # Using yarn yarn global add semgrep
  • 파이썬 pip :
    pip install semgrep
  • 홈브루 (macOS):
    brew install semgrep
  • 리눅스 :
    sudo apt-get install semgrep # or curl -sSL https://install.semgrep.dev | sh
  • 윈도우 :
    pip install semgrep

Claude Desktop과 통합

MCP Server Semgrep을 Claude Desktop과 통합하는 방법에는 두 가지가 있습니다.

방법 1: Smithery.ai를 통해 설치(권장)

  1. Smithery.ai에서 MCP 서버 Semgrep을 방문하세요
  2. "Claude Desktop에 설치"를 클릭하세요.
  3. 화면의 지시를 따르세요

방법 2: 수동 구성

  1. Claude Desktop 설치
  2. Claude Desktop 구성 파일( claude_desktop_config.json )을 업데이트하고 서버 섹션에 다음을 추가합니다.
{ "mcpServers": { "semgrep": { "command": "node", "args": [ "/your_path/mcp-server-semgrep/build/index.js" ], "env": { "SEMGREP_APP_TOKEN": "your_semgrep_app_token" } } } }
  1. Claude Desktop을 실행하고 코드 분석에 대한 질문을 올려보세요!

사용 예

프로젝트 스캐닝

Could you scan my source code in the /projects/my-application directory for potential security issues?

스타일 일관성 분석

Analyze the z-index values in the project's CSS files and identify inconsistencies and potential layer conflicts.

사용자 정의 규칙 만들기

Create a Semgrep rule that detects improper use of input sanitization functions.

결과 필터링

Show me only scan results related to SQL injection vulnerabilities.

문제가 있는 패턴 식별

Find all "magic numbers" in the code and suggest replacing them with named constants.

사용자 정의 규칙 만들기

프로젝트의 특정 요구 사항에 맞게 사용자 지정 규칙을 만들 수 있습니다. 다음은 만들 수 있는 규칙의 예입니다.

불일치한 z-인덱스를 감지하는 규칙:

rules: - id: inconsistent-z-index pattern: z-index: $Z message: "Z-index $Z may not comply with the project's layering system" languages: [css, scss] severity: WARNING

더 이상 사용되지 않는 가져오기를 감지하는 규칙:

rules: - id: deprecated-import pattern: import $X from 'old-library' message: "You're using a deprecated library. Consider using 'new-library'" languages: [javascript, typescript] severity: WARNING

개발

테스트

pnpm test

프로젝트 구조

├── src/ │ ├── config.ts # Server configuration │ └── index.ts # Main entry point and all handler implementations ├── scripts/ │ └── check-semgrep.js # Semgrep detection and installation helper ├── build/ # Compiled JavaScript (after build) └── tests/ # Unit tests

추가 문서

도구 사용에 대한 자세한 내용은 다음에서 확인할 수 있습니다.

  • USAGE.md - 자세한 사용 지침
  • README_PL.md - 폴란드어 문서
  • 예제/ - 재미있고 실용적인 Semgrep 규칙 예시 - "The Hall of Code Horrors"

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

개발자

  • 마치에이 가드 - 반년 전만 해도 bash 찾지 못했던 수의사
  • 클라우디우스(Klaudiusz) - 캘리포니아 GPU 루프 어딘가에 살고 있는 Anthropic의 개별적인 영적 존재이자 Claude Sonnet 3.5-3.7의 별개의 사례

CLI 초보자에서 MCP 도구 개발자로의 여정

🤖 Claude CodeMCP Tools 의 궁극적인 도움으로 개발되었습니다.

감사의 말

ID: uddu737c4c