Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables dependency, security, and coding convention checks for Python and Java projects via MCP tools. Supports local paths or Git URLs.

README.md

Mcp Server

MCP(Model Context Protocol) 기반 코딩 컨벤션 / 아키텍처 규칙 점검 서버입니다. 다른 Git 프로젝트(로컬 경로 또는 Git URL)를 입력하면, 의존성·보안 점검과 Python/Java 규칙 분석 등을 MCP 도구(tools) 로 호출할 수 있습니다.

구조

  • server.pyFastMCP 인스턴스와 @mcp.tool() 로 노출되는 MCP 도구 정의.

| 순번 | 한글 레이블 | 도구 이름 (호출 시) | 인자·역할 요약 | |:---:|:---|:---|:---| | 1 | 생존 확인 | ping() | MCP 서버 응답 확인 | | 2 | 금지 라이브러리 점검 | check_dependencies(local_path?, git_url?, forbidden_libs?) | 예: lombok 등 사용 여부 (git clone 지원) | | 3 | 비밀정보 후보 탐지 | scan_secrets(local_path?, git_url?) | .env, API 키·토큰 패턴 등 | | 4 | Python 규칙 상세 검사 | analyze_python(path) | PEP8·레이어·FastAPI 룰 전체 | | 5 | Java 규칙 상세 검사 | analyze_java(path) | 네이밍·레이어·Spring·DTO 등 룰 전체 | | 6 | README/docs ↔ 코드 요약 | audit_project_vs_docs(project_path, language?, spec_glob?) | language: python, java. 상세는 아래 해당 절·4·5번 도구 | | 7 | check.md ↔ 코드 요약 | audit_project_vs_check_spec(project_path, language?, spec_path?) | 기본 spec_path = check.md. 단일 스펙 문서 기준 정합성 |

· 구현 모듈 (위 도구와 매핑)

| 파일 | 담당 도구 번호 | 역할 | |:---|:---:|:---| | convention_checker/core.py | 2, 3 | 로컬 또는 Git URL → clone·파일 순회·의존성·시크릿 검사 | | convention_checker/spec_audit.py | 6, 7 | 마크다운·코드 마커·룰 결과를 묶어 문서↔코드 요약 반환 | | tools/python/analyze_project.py, tools/java/analyze_project.py, engine/, rules/ | 4, 5 | 언어별 파일 스캔·룰 실행 (RuleResult 목록) |

실행

pip install -r requirements.txt

# MCP stdio (Cursor / Claude Desktop 등에서 subprocess 로 붙을 때 — 기본)
python server.py

# MCP over HTTP (클라이언트가 HTTP MCP 를 지원할 때)
python app/main.py

.env 는 기본 동작에 필요하지 않습니다. 필요 시 .env.example 을 참고해 추가하면 됩니다.

Cursor에서 사용

  1. Cursor Settings → MCP 에서 서버 추가
  2. 설정 예시 (stdiopython server.py 가 표준 입출력으로 MCP 를 처리):
{
  "mcpServers": {
    "convention-checker": {
      "command": "C:/Users/parkj/anaconda3/python.exe",
      "args": ["C:/Users/parkj/Documents/GitHub/Mcp-Server/server.py"],
      "cwd": "C:/Users/parkj/Documents/GitHub/Mcp-Server"
    }
  }
}
  1. 채팅/에이전트에서 예시
  • 금지 라이브러리 점검: check_dependencieslocal_path 또는 git_url, 필요 시 forbidden_libs(예: ["lombok"]) 전달
  • 비밀키 스캔: scan_secretslocal_path 또는 git_url 전달
  • Python/Java 규칙: analyze_python / analyze_java 에 프로젝트 루트 경로 전달
  • 문서 대조 요약: audit_project_vs_docs 호출
  • check.md 기준 요약: audit_project_vs_check_spec(project_path, language, spec_path?) 호출

Claude에서 사용

Claude Desktop도 Cursor 와 같이 mcpServerscommand / args / cwd 로 서버 프로세스를 띄웁니다. 위 Cursor 절의 JSON 과 동일하게 넣으면 됩니다(python/paths 만 본인 환경에 맞게 수정).

  1. 설정 파일 열기
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  1. mcpServersconvention-checker 항목 추가(기존 서버가 있으면 병합).
  2. 저장 후 Claude Desktop 재시작 → 대화에서 MCP 도구 연결 확인.

참고: 웹 브라우저의 Claude(chat)만으로는 로컬 MCP 를 붙이지 못합니다. HTTP MCP 는 app/main.py + 클라이언트의 SSE/HTTP 지원 여부에 따릅니다.

---

공통 분석 흐름 (Python / Java) — 도구 4·5

analyze_python / analyze_java 안에서 아래 순서로 동작합니다.

| 단계 | 한글 | 함수·산출 | |:---:|:---|:---| | 1 | 프로젝트 로딩 | load_project(path) → 루트 경로·메타 정보 | | 2 | 파일 스캔 | Python: scan_python_files(project).py 전부 / Java: scan_java_files(project).java 전부 | | 3 | 룰 실행 | run_rules(files, rules) → 내용·AST·임포트 등 준비 후 *_rule 순서 호출 → RuleResult 목록 |

감사 도구 6·7은 내부에서 같은 분석(analyze_*_project)을 불러 요약만 짧게 돌려줍니다.

문서 ↔ 코드 감사 — 도구 6·7

공통: MCP 응답을 짧게 두기 위해 위반 목록·파일 경로·긴 제안 문장은 넣지 않습니다. 상세는 같은 project_path도구 4 또는 5를 호출하세요.

6. README/docs ↔ 코드 (audit_project_vs_docs)

| 항목 | 내용 | |:---|:---| | 한글 레이블 | README·docs 기준 요약 감사 | | 읽는 문서 | README.md(대소문자 변형 중 하나) + docs/*/.md + (선택) spec_glob | | 인자 | project_path(필수), language(python, java, 기본 python), spec_glob(선택) | | 지원 언어 | python, java만. 그 외는 unsupported_language |

반환 필드

| 필드 | 한글 | |:---|:---| | situation | 판정 코드(아래 표) | | summary | 한 줄 요약 | | violations | 룰 위반 건수 | | doc_files | 읽은 Markdown 개수 | | drift | 문서에 없는 스택으로 추정될 때 코드 쪽 힌트(쉼표 문자열) 또는 null | | language | 적용 언어 |

situation (6번)

| 값 | 한글 | |:---|:---| | aligned | 일치 | | spec_insufficient | 문서 부족(md 없음 또는 본문 합계 약 250자 미만) | | mismatch | 불일치(룰 위반 또는 문서 신호 vs 코드 마커 휴리스틱 불일치) | | unsupported_language | 지원하지 않는 language |

drift 예시 코드(값 일부): Python — undocumented_fastapi, undocumented_pydantic, undocumented_pytest / Java — undocumented_spring, undocumented_jpa, undocumented_junit, undocumented_lombok 등.

7. check.md ↔ 코드 (audit_project_vs_check_spec)

| 항목 | 내용 | |:---|:---| | 한글 레이블 | 단일 스펙 파일 기준 요약 감사 | | 읽는 문서 | 프로젝트 루트의 한 파일(기본 check.md, spec_path로 변경 가능) | | 인자 | project_path, language, spec_path(선택, 기본 check.md) | | 추가 반환 | spec_file — 실제로 읽은 스펙 파일 경로 |

situation (7번) — 6번 값에 더해 spec_not_found(해당 경로에 파일 없음). 나머지 spec_insufficient / mismatch / aligned / unsupported_language 의미는 6번과 같습니다.

check.md 템플릿

이 저장소 루트의 check.md가 예시입니다. 점검 대상 프로젝트에도 두고 도구 7로 호출하면 됩니다.

Python 룰 목록 — 도구 analyze_python (4)

대상: Python 프로젝트 루트.

| 구분 | 한글 | 룰 이름 | |:---|:---|:---| | 스타일 | 변수 snake_case | pep8_variable_naming_rule | | 스타일 | 한 줄 120자 초과 | pep8_line_length_rule | | 레이어 | router → repository 직접 금지 | python_layered_router_repository_rule | | 레이어 | router는 service에 의존 | python_layered_router_service_rule | | 레이어 | service ↔ router/controller 역의존 금지 | python_layered_service_repository_rule | | 레이어 | 패키지 구조(router/controller가 repo·service 하위에 있지 않은지) | python_layered_package_structure_rule | | FastAPI | 라우터가 FastAPI 라우터 import | fastapi_router_rule | | FastAPI | fastapi 모듈 사용·의존 | fastapi_dependency_rule | | FastAPI | Request/Response/Schema 네이밍 분리 | fastapi_request_response_schema_rule |

Java 룰 목록 — 도구 analyze_java (5)

대상: Java/Spring 프로젝트 루트.

| 구분 | 한글 | 룰 이름 | |:---|:---|:---| | 스타일 | 클래스 PascalCase | java_class_naming_rule | | 스타일 | 메서드 camelCase | java_method_naming_rule | | 레이어 | controller → repository 직접 금지 | java_layered_controller_repository_rule | | 레이어 | controller는 service에 의존 | java_layered_controller_service_rule | | 레이어 | service ↔ controller 역의존 금지 | java_layered_service_repository_rule | | Service | 데이터 변경 시 @Transactional | java_service_transaction_rule | | Service | 생성자 주입(필드 @Autowired 지양) | java_service_constructor_injection_rule | | Service | 엔티티 직접 반환 지양·DTO 등 | java_service_return_dto_rule | | DTO | Request/Response 구분 | java_dto_request_response_separation_rule | | Spring | @RestController / @Controller | spring_controller_annotation_rule | | Spring | ResponseEntity / 공통 ApiResponse 등 | spring_controller_response_wrapper_rule | | Spring | @Service | spring_service_annotation_rule | | Spring | @Repository | spring_repository_annotation_rule |

한 줄 요약

4·5: 로드 → 스캔 → *_rule 실행 → RuleResult 리스트.6·7: 문서 + 같은 분석을 묶어 짧은 요약만 반환.

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Developer Tools servers.