Code Smell Detection
БесплатноНе проверенEnables static analysis and code smell detection by connecting to an external analysis API.
Описание
Enables static analysis and code smell detection by connecting to an external analysis API.
README
MCP server for static analysis / code smell detection. Minimal TypeScript stdio transport implementation and tool registration stubs.
목표
- CodeVi 내부의
codevi-metrics-server.ts단일 파일 중심 구현을 분리하여, 독립적인 MCP 도구 서버로 전환. - NestJS, TypeORM, MySQL, Docker 구성 등 CodeVi 본체 종속 항목은 제외.
- 우선 npm 배포/사용을 목표로 함. (PyPI는 추후 Python 포팅 시 고려)
사용법
- 설치
npm install
- 개발 모드
npm run dev
- 빌드
npm run build
- 테스트
npm run test:stdio
npm run test:advanced-pyexamine
npm run test:advanced-pyexamine:http
- 실행 (빌드 후)
npm start
환경 변수
복사하여 .env로 사용:
ANALYSIS_API_BASE_URL(예: http://localhost:13000/api)REQUEST_TIMEOUT_MSMETRICS_API_BASE_URL(예: http://localhost:14000)METRICS_API_KEY(필요 시)METRICS_DEFAULT_TEAM_PROJECT_IDMETRICS_REQUEST_TIMEOUT_MSADVANCED_PYEXAMINE_BIN(기본값:python)ADVANCED_PYEXAMINE_ARGS(기본값:-m,advanced_pyexamine)ADVANCED_PYEXAMINE_CWD(예: advanced_pyexamine 레포 루트)ADVANCED_PYEXAMINE_TIMEOUT_MSADVANCED_PYEXAMINE_MODE(cli또는http, 기본값:cli)ADVANCED_PYEXAMINE_SERVICE_URL(HTTP mode, 예: http://localhost:18080)ADVANCED_PYEXAMINE_SERVICE_TIMEOUT_MSADVANCED_PYEXAMINE_SOURCE_DIR(service 실행 시 advanced_pyexamine 원본 repo 경로)ADVANCED_PYEXAMINE_E2E_PROJECT_PATH(실제 service E2E 테스트 대상 Python project path)
제공 도구
Metrics Analysis
list_metric_analyses: CodeVi metric analysis 이력 목록 조회run_metric_analysis: CodeVi metric analysis 실행 및 저장get_metric_analysis: 저장된 metric analysis 단건 조회
PyExamine / Code Analysis
get_latest_pyexamine_result: 최신 PyExamine 결과 조회get_pyexamine_result_by_commit: commit hash 기준 PyExamine 결과 조회get_high_severity_smells: high severity smell 조회get_smells_by_file: 파일 경로 기준 smell 조회
Advanced PyExamine
analyze_python_smells: Python 프로젝트 smell 결과를 JSON으로 반환ADVANCED_PYEXAMINE_MODE=cli:advanced_pyexamineCLI를 subprocess로 실행ADVANCED_PYEXAMINE_MODE=http:services/advanced-pyexamineHTTP service의/analyze호출
CLI mode 예시:
printf '%s\n' '{"id":"py-smell-1","tool":"analyze_python_smells","params":{"projectPath":"/path/to/python/project"}}' \
| ADVANCED_PYEXAMINE_MODE=cli \
ADVANCED_PYEXAMINE_BIN=python \
ADVANCED_PYEXAMINE_ARGS=-m,advanced_pyexamine \
ADVANCED_PYEXAMINE_CWD="/path/to/pyexamine 2" \
node dist/server.js
HTTP mode 예시:
printf '%s\n' '{"id":"py-smell-5","tool":"analyze_python_smells","params":{"projectPath":"/path/to/python/project","summaryOnly":true}}' \
| ADVANCED_PYEXAMINE_MODE=http \
ADVANCED_PYEXAMINE_SERVICE_URL=http://localhost:18080 \
node dist/server.js
HTTP service 실행:
ADVANCED_PYEXAMINE_SOURCE_DIR="/path/to/pyexamine 2" npm run service:advanced-pyexamine
HTTP service Docker 실행:
docker build -t advanced-pyexamine-service:local services/advanced-pyexamine
docker run --rm \
-p 18080:18080 \
-e ADVANCED_PYEXAMINE_SOURCE_DIR=/opt/advanced-pyexamine-source \
-v "/path/to/pyexamine 2:/opt/advanced-pyexamine-source:ro" \
advanced-pyexamine-service:local
자세한 Docker workflow는 docs/advanced-pyexamine-service-docker.md를 참고합니다.
MCP server와 HTTP service를 Docker Compose로 함께 실행:
printf '%s\n' '{"id":"compose-e2e-1","tool":"analyze_python_smells","params":{"projectPath":"/opt/advanced-pyexamine-source/advanced_pyexamine","only":"long_method,data_clumps","summaryOnly":true}}' \
| ADVANCED_PYEXAMINE_HOST_SOURCE_DIR="/path/to/pyexamine 2" \
docker compose -f docker-compose.example.yml run --rm -T mcp-server
통합 Compose workflow는 docs/mcp-advanced-pyexamine-compose.md를 참고합니다.
CodeVi backend에서 advanced-pyexamine-service를 호출할 수 있도록 runtime service만
고정 실행:
ADVANCED_PYEXAMINE_HOST_SOURCE_DIR="/path/to/pyexamine 2" \
npm run compose:codevi-runtime:up
이 compose는 advanced-pyexamine-service를 외부 Docker network shared-net에
연결하고, CodeVi backend가 http://advanced-pyexamine-service:18080으로 호출할 수
있게 network alias를 고정합니다.
CodeVi backend에 전달할 분석 경로는 host path가 아니라 container path를 사용합니다.
/opt/advanced-pyexamine-source/advanced_pyexamine
중지:
ADVANCED_PYEXAMINE_HOST_SOURCE_DIR="/path/to/pyexamine 2" \
npm run compose:codevi-runtime:down
자세한 CodeVi runtime workflow는 docs/advanced-pyexamine-codevi-runtime.md를 참고합니다.
실제 HTTP service E2E 검증:
ADVANCED_PYEXAMINE_SERVICE_URL=http://localhost:18080 \
ADVANCED_PYEXAMINE_E2E_PROJECT_PATH="/path/to/python/project" \
npm run test:advanced-pyexamine:service
특정 detector만 실행하려면 only를 전달합니다.
{ "id": "py-smell-2", "tool": "analyze_python_smells", "params": { "projectPath": "/path/to/python/project", "only": "orphan_module,data_clumps" } }
응답이 너무 큰 경우 summaryOnly 또는 limitPerGroup을 사용할 수 있습니다.
{ "id": "py-smell-3", "tool": "analyze_python_smells", "params": { "projectPath": "/path/to/python/project", "summaryOnly": true } }
{ "id": "py-smell-4", "tool": "analyze_python_smells", "params": { "projectPath": "/path/to/python/project", "limitPerGroup": 5 } }
summary는 항상 전체 탐지 결과 기준이며, limitPerGroup은 반환되는 smellGroups만 제한합니다.
test:advanced-pyexamine은 실제 advanced_pyexamine 레포 없이 mock CLI로 summary, summaryOnly, limitPerGroup 응답 처리를 검증합니다.
test:advanced-pyexamine:http는 mock HTTP service로 MCP HTTP mode forwarding과 응답 처리를 검증합니다.
test:advanced-pyexamine:service는 이미 실행 중인 실제 FastAPI service를 대상으로 /health, /analyze, MCP HTTP mode를 함께 검증합니다.
CodeVi backend 연동 contract는 docs/codevi-smell-analysis-contract.md를 참고합니다.
원본 코드 분리 가이드
- 복사할 파일:
code-vi-internal/code-vi-back/src/mcp/codevi-metrics-server.ts - 옮겨야 할 항목:
- axios 기반 REST 호출 로직 →
src/clients/analysis-client.ts로 이동 - 도구(tool) 등록 부분 →
src/tools/*.ts로 분리 - 타입 정의(인터페이스)만
src/types/*로 이동 - stdio transport 또는 MCP SDK 초기화 부분 →
src/stdio/stdio-transport.ts
- axios 기반 REST 호출 로직 →
- 제외할 항목:
- NestJS 모듈/컨트롤러 전체
- TypeORM 엔티티 / DB 설정
- Docker/Jenkins 구성
- 기존 CodeVi 프론트/백엔드 의존성
Cursor / Codex / Claude 실행 예시
- Cursor/Codex 등의 도구에서 이 MCP를 사용할 때는 stdio를 통해 JSON 메시지를 주고받는 방식을 사용합니다.
- 메시지 형식 예:
{ "id": "uuid-1234", "tool": "get_latest_pyexamine_result", "params": { "repo": "owner/repo", "ref": "main" } }
- 응답 형식 예:
{ "id": "uuid-1234", "result": { /* result payload */ } }
향후 작업
- 원본
codevi-metrics-server.ts에서 실제 핸들러 로직을 옮겨 오기 - 오류/타입 재검토, 테스트 케이스 추가
- 필요 시 MCP 공식 SDK(stdio 외)로 transport 전환
- npm 패키지화 및 배포
- CodeVi backend smell analysis contract에 맞춘 저장/API 구현은 별도 backend repo에서 진행
Установка Code Smell Detection
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/Jeon-byeong-yoon/code-smell-detection-mcpFAQ
Code Smell Detection MCP бесплатный?
Да, Code Smell Detection MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Code Smell Detection?
Нет, Code Smell Detection работает без API-ключей и переменных окружения.
Code Smell Detection — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Code Smell Detection в Claude Desktop, Claude Code или Cursor?
Открой Code Smell Detection на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Code Smell Detection with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
