代码规范检查服务

基于MCP协议的代码规范和架构规则检查服务,支持Python和Java项目的依赖检查、安全扫描和规范分析。

  • by jspark2504
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jspark2504/Mcp-Server

使用说明

Mcp服务器

基于模型上下文协议(MCP) 编码会议/体系结构规则检查服务器是。
如果输入其他Git项目(本地路径或Git URL),则MCP将执行依赖性、安全检查和Python/Java规则分析等。 工具(tools) 可通过调用。

结构

  • server.py — FastMCP 实例和 @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. 光标设置→ MCP 在中添加服务器
  2. 设置示例(标准 — python server.py 通过标准I/O处理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_dependencies 呃 local_path 或 git_url,必要时 forbidden_libs(例如: ["lombok"])转发
    • 秘密密钥扫描: scan_secrets 呃 local_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中使用

克劳德桌面如图Cursor所示 mcpServers 呃 command / args / cwd 以启动服务器进程。 与上面Cursor节中的JSON相同放进去就可以了(python/paths 仅根据您的环境进行修改)。

  1. 打开配置文件
    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. mcpServers 呃 convention-checker 添加项目(如果有现有服务器 合并).
  3. 保存后 重新启动Claude Desktop →在对话中确认MCP工具连接。

参考:仅Web浏览器中的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 全部| 执行规则 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依赖于服务| python_layered_router_service_rule | |层|服务禁止反向依赖router/controller python_layered_service_repository_rule | |层|包结构(router/controller是否在repo•service之下)| python_layered_package_structure_rule | | FastAPI |路由器导入FastAPI路由器| fastapi_router_rule | 使用、依赖FastAPI|fastapi模块| fastapi_dependency_rule | | FastAPI |请求/响应/计划分离名称| 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依赖于服务| 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 |请求/响应区分| java_dto_request_response_separation_rule | |春天| @RestController / @Controller | spring_controller_annotation_rule | |春天| ResponseEntity /通用 ApiResponse 等| spring_controller_response_wrapper_rule | |春天| @Service | spring_service_annotation_rule | |春天| @Repository | spring_repository_annotation_rule |

单行摘要

4·5:加载→扫描→ *_rule 运行→ RuleResult 列表。6·7:将文档+等分析捆绑在一起 简短摘要返回满。