Token导航 LogoToken导航TokenDH.com
Cyclomatic Complexity MCP logo
开发工具未说明官方级别未说明来源级核验

Cyclomatic Complexity MCP

MCP Server

一款用于计算Java、x86/x64汇编和6502汇编代码的圈复杂度的MCP服务器,提供详细的函数/方法复杂度指标和警告提示。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
代码分析JavaClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

RainerBlessing

提供方

RainerBlessing

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

圈复杂度 MCP 服务器

一个用于计算Java、x86/x64汇编语言和6502汇编语言代码圈复杂度的模型上下文协议(MCP)服务器。

特点/功能

  • Java 分析使用JavaParser进行基于精确AST(抽象语法树)的复杂度计算
  • x86/x64 汇编语言分析支持MASM/NASM/GAS语法
  • 6502 汇编器分析支持ca65、DASM以及通用的6502语法
  • MCP 集成直接与Claude代码合作
  • 详细指标显示每个函数/方法/子程序的复杂性
  • 警告标记复杂度较高的功能(>10)

安装

先决条件

  • Java 17 或更高版本
  • Gradle 8.0 或更高版本(或使用 Gradle 包装器: ./gradlew

构建

cd cyclomatic-complexity-mcp
./gradlew clean build

这会生成一个可执行的JAR文件: build/libs/cyclomatic-complexity-mcp.jar

或者使用系统安装的 Gradle:

gradle clean build

Claude 代码配置

在你的Claude代码配置中添加以下设置(~/.config/claude/config.json 或者 ~/Library/Application Support/Claude/config.json (在 macOS 上):

{
  "mcpServers": {
    "cyclomatic-complexity": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/cyclomatic-complexity-mcp/build/libs/cyclomatic-complexity-mcp.jar"
      ]
    }
  }
}

替换 /absolute/path/to/ 附上项目的实际路径。

使用方法

配置完成后,Claude Code可以自动访问两个工具:

1. analyze_complexity - 分析文件

通过文件路径分析文件:

Analyze the complexity of src/Main.java

2. analyze_complexity_code - 分析代码字符串

直接分析提供的代码:

Analyze the complexity of this Java code:
[Insert code here]

支持的语言

Java

  • 检测:if、else、for、while、do-while、switch/case、catch、三元运算符(?:)
  • 计数:条件中的 &&、|| 运算符
  • 基本复杂度:每种方法1个

汇编器(x86/x64)

  • 检测:所有条件跳转(JE、JNE、JZ、JG、JL 等)
  • 计数:循环指令、条件移动指令(CMOV\*)
  • 支持:PROC/ENDP 块和基于标签的函数

6502 汇编器

  • 检测:所有条件分支(BEQ、BNE、BCC、BCS、BPL、BMI、BVC、BVS)
  • 计数器:位分支(BBR0-BBR7,对于65C02为BBS0-BBS7)
  • 支持:

- ca65 语法(.proc/.endproc 块) - DASM 语法(SUBROUTINE 指令) - ACME 语法(!zone 指令) - 通用标签+RTS模式

  • 文件扩展名:.a65, .s65, .asm65, .a, .asm\*(其中\*代表任意字符),.s\*(其中\*代表任意字符)
  • 基本复杂度:每个子程序1个

: .asm 并且 .s 文件会根据内容分析自动被识别为6502或x86/x64架构。分析器会统计特定于架构的指令和指令,以确定正确的类型。空文件或代码不明确的情况默认为x86架构。

复杂性度量指标

圈复杂度(McCabe)的计算方法如下:

  • 1-10简单,易于维护
  • 11-20中等复杂度,应予以审查 ⚠️
  • 21-50复杂,建议重构
  • 大于50非常复杂,急需重构

示例输出

File: Calculator.java (Java)
Total Functions: 5
Total Complexity: 23
Max Complexity: 8 in calculateTax(double, boolean, int)

Function Complexities:
  calculateTax(double, boolean, int): 8
  processPayment(Payment): 6
  validateInput(String): 4
  add(int, int): 1
  subtract(int, int): 1

发展

项目结构

src/main/java/io/github/complexity/
├── calculator/
│   ├── ComplexityCalculator.java          # Interface
│   ├── ComplexityResult.java              # Result DTO
│   ├── JavaComplexityCalculator.java      # Java implementation
│   ├── AssemblerComplexityCalculator.java # x86/x64 ASM implementation
│   └── Mos6502ComplexityCalculator.java   # 6502 ASM implementation
└── mcp/
    └── McpServer.java                      # MCP Server

运行测试

./gradlew test

记录日志

服务器使用SLF4J与Simple Logger。日志级别可以通过系统属性进行设置:

java -Dorg.slf4j.simpleLogger.defaultLogLevel=debug -jar build/libs/cyclomatic-complexity-mcp.jar

故障排除

服务器无法连接/超时错误

如果Claude Code在连接到MCP服务器时出现超时错误,请检查以下内容:

  1. 验证JAR路径是否为绝对路径配置中的路径必须是绝对路径,而非相对路径
   "args": ["-jar", "/home/user/path/to/cyclomatic-complexity-mcp.jar"]
  1. 检查Java版本需要Java 17或更高版本
   java -version
  1. 更新后重建在拉取更新后总是要重新构建
   ./gradlew clean build
  1. 检查MCP日志克劳德代码将MCP服务器输出日志记录到:

- Linux: ~/.cache/claude-cli-nodejs/ /mcp-logs-cyclomatic-complexity/ - macOS: ~/Library/Caches/claude-cli-nodejs/ /mcp-logs-cyclomatic-complexity/

  1. 手动测试服务器验证服务器是否响应初始化请求
   echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | java -jar build/libs/cyclomatic-complexity-mcp.jar

应该返回一个包含以下内容的JSON响应: "protocolVersion":"2025-06-18" 在单行上。

服务器已启动,但工具不可用

如果服务器已连接但工具未在Claude代码中显示:

  1. 验证服务器是否响应 tools/list
   (echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' && echo '{"jsonrpc":"2.0","method":"notifications/initialized"}' && echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}') | java -jar build/libs/cyclomatic-complexity-mcp.jar
  1. 检查响应中是否包含 analyze_complexity 并且 analyze_complexity_code 工具

许可证

麻省理工学院许可证(MIT License)

贡献;做出贡献

欢迎贡献!请提交问题或拉取请求。

目录标签

目录标签

代码分析JavaClaude本地部署静态分析复杂度计算Java分析汇编分析

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP