Skip to main content
Glama
RuoJi6

Java Decompiler MCP Server

by RuoJi6

Java Decompiler MCP Server

一个基于 MCP (Model Context Protocol) 的 Java 反编译工具,使用 CFR 反编译器对 .class.jar 文件进行反编译。

功能特性

  • ✅ 单个文件反编译(.class / .jar)

  • ✅ 多个文件批量反编译

  • ✅ 目录递归扫描反编译

  • ✅ 自定义输出目录

  • ✅ 自动下载 CFR 反编译器

  • ✅ 直接保存到文件系统(避免 token 限制)

  • ✅ 实时进度显示

  • ✅ 详细统计信息

  • 多线程并发处理(大幅提升速度)

Related MCP server: Kawaiidra MCP

改进亮点

🚀 解决大文件/大量文件反编译问题

问题: 当反编译大量文件时,如果将所有结果作为字符串返回,可能超过 MCP 的 token 限制(例如 413,072 字符)。

解决方案:

  1. 直接保存到文件系统(推荐)

    • 新增 save_to_file 参数(默认 true

    • 反编译结果直接写入指定目录

    • 仅返回摘要信息(成功数、失败数、输出路径等)

    • 避免通过 MCP 传输大量内容

  2. 实时进度显示

    • 新增 show_progress 参数(默认 true

    • 显示当前处理进度:[1/46] 处理中: Controller.class

    • 实时反馈处理状态

  3. 详细统计报告

    • 成功/失败/跳过文件数

    • 生成的 .java 文件总数

    • 输出目录路径

    • 清晰的格式化输出

使用示例

场景 1:反编译大量文件(推荐方式)

# 使用 8 个线程并发处理,大幅提升速度
decompile_directory(
    directory_path="/path/to/classes",
    output_dir="/path/to/output",
    save_to_file=True,      # 默认值
    show_progress=True,     # 显示进度
    max_workers=8           # 8 线程并发
)

场景 2:反编译少量文件并查看内容

# 返回反编译内容(仅适用于小文件)
decompile_file(
    file_path="/path/to/MyClass.class",
    save_to_file=False      # 返回内容而不是保存
)

场景 3:静默批量处理

# 不显示详细进度,仅返回统计,单线程处理
decompile_files(
    file_paths=[...],
    show_progress=False,    # 仅显示统计信息
    max_workers=1           # 单线程
)

环境要求

  • Python >= 3.10

  • Java Runtime Environment (JRE)

  • uv (Python 包管理器)

安装

方式一:通过 uvx 直接使用(推荐)

无需安装,直接在 MCP 配置中使用(可让ai自动下载cfr-0.152.jar然后你手动配置路径):

{
  "mcpServers": {
    "java-decompiler": {
      "type": "stdio",
      "command": "uvx",
      "args": ["java-decompile-mcp"],
      "env": {
        "CFR_PATH": "/你的路径/cfr-0.152.jar"
      },
      "disabled": false
    }
  }
}

方式二:本地开发

# 克隆项目
git clone <repository-url>
cd java-decompile-mcp

# 创建虚拟环境并安装依赖
uv venv
source .venv/bin/activate  # macOS/Linux
# 或 .venv\Scripts\activate  # Windows

uv pip install "mcp>=1.0.0"

MCP 配置

方式一:使用 uvx(推荐,已发布到 PyPI)

.kiro/settings/mcp.jsonclaude_desktop_config.json 中添加:

{
  "mcpServers": {
    "java-decompiler": {
      "command": "uvx",
      "args": ["java-decompile-mcp"],
      "disabled": false
    }
  }
}

方式二:本地开发模式

.kiro/settings/mcp.json 中添加:

{
  "mcpServers": {
    "java-decompiler": {
      "command": "uv",
      "args": [
        "--directory",
        "/项目路径",
        "run",
        "main.py"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}

⚠️ 本地开发模式需要将路径替换为实际的项目路径

项目地址

GitHub: https://github.com/RuoJi6/java-decompile-mcp

可用工具

1. decompile_file

反编译单个文件

参数:

  • file_path (必需): 要反编译的文件路径

  • output_dir (可选): 输出目录,默认为文件所在目录下的 decompiled 文件夹

  • save_to_file (可选): 是否直接保存到文件系统,默认 true(推荐)

示例:

反编译 /path/to/MyClass.class 到 /output/dir

返回结果:

✅ 反编译成功
源文件: /path/to/MyClass.class
输出目录: /output/dir
生成文件数: 1
提示: 反编译结果已保存到文件系统

2. decompile_files

批量反编译多个文件(支持多线程)

参数:

  • file_paths (必需): 文件路径列表

  • output_dir (可选): 输出目录

  • save_to_file (可选): 是否直接保存到文件系统,默认 true

  • show_progress (可选): 是否显示详细进度,默认 true

  • max_workers (可选): 最大并发线程数,默认 4(设为 1 则单线程)

示例:

反编译以下文件:
- /path/to/Class1.class
- /path/to/Class2.class
- /path/to/app.jar
使用 8 个线程并发处理

返回结果:

✅ [1/3] 成功: Class1.class
✅ [2/3] 成功: Class2.class
✅ [3/3] 成功: app.jar

============================================================
📊 反编译完成统计
============================================================
✅ 成功: 3
❌ 失败: 0
⏭️  跳过: 0
📁 总计: 3 个文件
📄 生成: 46 个 .java 文件
📂 输出目录: /output/dir
🔧 并发线程: 4
============================================================
💾 反编译结果已保存到文件系统

3. decompile_directory

反编译目录下所有 .class 和 .jar 文件(支持多线程)

参数:

  • directory_path (必需): 目录路径

  • output_dir (可选): 输出目录

  • recursive (可选): 是否递归子目录,默认 true

  • save_to_file (可选): 是否直接保存到文件系统,默认 true

  • show_progress (可选): 是否显示详细进度,默认 true

  • max_workers (可选): 最大并发线程数,默认 4

示例:

反编译 /path/to/classes 目录下的所有 class 文件,使用 8 个线程

返回结果:

📂 扫描目录: /path/to/classes
🔍 找到 46 个文件待反编译
📤 输出目录: /path/to/classes/decompiled
🔧 并发线程: 4

✅ [1/46] 成功: Controller1.class
✅ [2/46] 成功: Controller2.class
...
✅ [46/46] 成功: Utils.class

============================================================
📊 反编译完成统计
============================================================
✅ 成功: 46
❌ 失败: 0
⏭️  跳过: 0
📁 总计: 46 个文件
📄 生成: 46 个 .java 文件
📂 输出目录: /path/to/classes/decompiled
🔧 并发线程: 4
============================================================
💾 反编译结果已保存到文件系统

4. download_cfr_tool

下载 CFR 反编译器

参数:

  • target_dir (可选): 下载目标目录,默认当前工作目录

5. check_cfr_status

检查 CFR 反编译器状态

6. get_java_version

获取 Java 版本信息

CFR 配置

CFR 反编译器查找顺序:

  1. 环境变量 CFR_PATH

  2. 项目目录下的 cfr-*.jar

  3. 自动下载(首次调用反编译工具时)

方式一:MCP 配置中指定(推荐)

mcp.jsonenv 中设置:

{
  "mcpServers": {
    "java-decompiler": {
      "command": "uv",
      "args": ["--directory", "/项目路径", "run", "main.py"],
      "env": {
        "CFR_PATH": "/你的路径/cfr-0.152.jar"
      }
    }
  }
}

方式二:放到项目目录

cfr-*.jar 文件放到项目根目录,会自动识别。

方式三:自动下载

调用 download_cfr_tool 工具,会自动从镜像下载到项目目录。

手动运行测试

# 激活虚拟环境
source .venv/bin/activate

# 运行 MCP 服务器
uv run main.py

许可证

MIT License

Available Tools

6 tools
check_cfr_statusC
检查 CFR 反编译器状态

Returns:
    CFR 状态信息
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states that it 'Returns CFR status information' without explaining what that information includes, whether this is a read-only operation, if there are any side effects, or what format the response takes. For a tool with zero annotation coverage, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief with just two lines in Chinese. While concise, it's arguably under-specified rather than efficiently structured. The first line states the purpose, the second line indicates it returns something, but both lines could be more informative. It's not front-loaded with the most critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters, 100% schema coverage, and an output schema exists, the description doesn't need to explain return values. However, for a status-checking tool among decompilation siblings, it should provide more context about what 'CFR status' means and why/when to check it. The description is minimally adequate but lacks helpful context about the tool's role in the ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters (schema coverage 100%), so there are no parameters needing semantic explanation. The description doesn't need to compensate for any parameter documentation gaps. The baseline for zero parameters is 4, as there's nothing to explain beyond what's already clear from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states '检查 CFR 反编译器状态' which translates to 'Check CFR decompiler status' - this provides a clear verb ('check') and resource ('CFR decompiler status'). However, it doesn't distinguish this tool from its siblings like 'get_java_version' or explain how this status check differs from decompilation operations. The purpose is understandable but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when this status check is needed (e.g., before decompilation operations, for troubleshooting), nor does it differentiate from sibling tools like 'get_java_version' or the various decompile tools. The agent receives no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decompile_directoryA
反编译指定目录下的所有 .class 和 .jar 文件(支持多线程)

Args:
    directory_path: 要扫描的目录路径
    output_dir: 输出目录,默认为目标目录下的 decompiled 文件夹
    recursive: 是否递归扫描子目录,默认为 True
    save_to_file: 是否直接保存到文件系统(推荐),默认为 True
    show_progress: 是否显示详细进度信息,默认为 True
    max_workers: 最大并发线程数,默认为 4(设为 1 则单线程处理)

Returns:
    反编译结果信息
ParametersJSON Schema
NameRequiredDescriptionDefault
directory_pathYes
output_dirNo
recursiveNo
save_to_fileNo
show_progressNo
max_workersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: multi-threading support, default output location, and progress display options. However, it doesn't mention potential side effects (e.g., file system writes when save_to_file=true), error handling, performance implications of max_workers, or what '反编译结果信息' (decompilation result information) contains. For a tool with 6 parameters and no annotations, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence adds value, though the Chinese-to-English translation creates minor verbosity. It's appropriately sized for a 6-parameter tool with no annotations, though could be slightly more concise in the parameter explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters with 0% schema coverage and no annotations, the description does an excellent job explaining parameter semantics. The presence of an output schema means the description doesn't need to detail return values. However, for a file system operation tool, it lacks warnings about destructive potential (when save_to_file=true) and doesn't mention error conditions or performance trade-offs, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage (schema only provides titles and types), the description compensates fully by explaining all 6 parameters in detail. Each parameter gets clear semantic meaning: directory_path as the scan target, output_dir with default behavior, recursive for subdirectory handling, save_to_file with recommendation, show_progress for verbosity, and max_workers for concurrency control with single-threaded option.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('反编译' - decompile) and target resources ('.class and .jar files in a specified directory'), distinguishing it from sibling tools like decompile_file (single file) and decompile_files (multiple files). It explicitly mentions multi-threading support, which further clarifies its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through '指定目录下的所有 .class 和 .jar 文件' (all .class and .jar files in a specified directory), suggesting this is for batch directory processing. However, it doesn't explicitly state when to use this versus alternatives like decompile_file (single file) or decompile_files (multiple specific files), nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decompile_fileB
反编译单个 .class 或 .jar 文件

Args:
    file_path: 要反编译的文件路径(.class 或 .jar)
    output_dir: 输出目录,默认为文件所在目录下的 decompiled 文件夹
    save_to_file: 是否直接保存到文件系统(推荐),默认为 True。设为 False 时会返回反编译内容

Returns:
    反编译结果信息或内容
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
output_dirNo
save_to_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool can save output to a file system or return content, and mentions a default output directory. However, it lacks details on permissions needed, error handling, rate limits, or what '反编译结果信息或内容' (decompiled result info or content) entails. This provides basic behavioral context but is incomplete for a tool that performs file operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise, with a clear purpose statement followed by Args and Returns sections. Each sentence adds value: the purpose, parameter explanations, and return note. It could be slightly more front-loaded by emphasizing the single-file focus earlier, but overall it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 3 parameters with 0% schema coverage, and an output schema present (which handles return values), the description is moderately complete. It covers the tool's purpose and parameters adequately but lacks behavioral details like error cases or dependencies (e.g., on tools like 'get_java_version'). For a decompilation tool, more context on limitations or prerequisites would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all three parameters: 'file_path' as the path to decompile, 'output_dir' with default behavior, and 'save_to_file' with implications for output handling. This goes beyond the schema's basic types and titles, providing practical usage context. However, it doesn't specify file path formats or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '反编译单个 .class 或 .jar 文件' (decompile a single .class or .jar file). It specifies the verb (decompile) and resource (file), but doesn't explicitly differentiate from sibling tools like 'decompile_directory' or 'decompile_files' beyond the '单个' (single) qualifier. This makes it clear but lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'save_to_file: 是否直接保存到文件系统(推荐),默认为 True。设为 False 时会返回反编译内容' (whether to save to file system (recommended), default True. Set to False to return decompiled content), which is a parameter usage hint but not a tool selection guideline. There's no mention of when to choose this over 'decompile_directory' or 'decompile_files' from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decompile_filesA
反编译多个 .class 或 .jar 文件(支持多线程)

Args:
    file_paths: 要反编译的文件路径列表
    output_dir: 输出目录,默认为当前目录下的 decompiled 文件夹
    save_to_file: 是否直接保存到文件系统(推荐),默认为 True
    show_progress: 是否显示详细进度信息,默认为 True
    max_workers: 最大并发线程数,默认为 4(设为 1 则单线程处理)

Returns:
    反编译结果信息
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathsYes
output_dirNo
save_to_fileNo
show_progressNo
max_workersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses behavioral traits such as multi-threading support, default output directory, and progress display, but it does not cover aspects like error handling, file format limitations, or performance implications. The description adds useful context but is incomplete for a tool with 5 parameters and no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a structured list of parameters and returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, 0% schema coverage, no annotations, and an output schema, the description is mostly complete. It covers all parameters and the tool's purpose, but it could benefit from more behavioral details (e.g., error cases or output format hints). The output schema reduces the need to explain return values, but additional context would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning for all 5 parameters by explaining their purposes, defaults, and recommendations (e.g., 'save_to_file' is recommended). However, it lacks details on parameter constraints or interactions, such as valid file paths or thread count limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '反编译多个 .class 或 .jar 文件(支持多线程)' (decompile multiple .class or .jar files with multi-threading support). It specifies the verb ('反编译'), resources ('.class or .jar files'), and scope ('multiple files'), distinguishing it from sibling tools like 'decompile_file' (single file) and 'decompile_directory' (directory-based).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage by specifying it handles multiple files with multi-threading, but it does not explicitly state when to use this tool versus alternatives like 'decompile_directory' or 'decompile_file'. It implies usage for batch processing but lacks explicit exclusions or comparisons with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_cfr_toolC
下载 CFR 反编译器到指定目录

Args:
    target_dir: 下载目标目录,默认为当前工作目录

Returns:
    下载结果信息
ParametersJSON Schema
NameRequiredDescriptionDefault
target_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool downloads something, implying a network operation, but doesn't mention potential issues like network errors, authentication needs, file system permissions, or what happens if the target directory doesn't exist. For a download tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with three sentences: purpose, parameter explanation, and return statement. Each sentence adds value without redundancy. The structure is front-loaded with the main purpose first. Minor improvement could be made by integrating parameter details more seamlessly, but overall it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return values), no annotations, and low complexity with 1 parameter, the description is moderately complete. It covers the basic purpose and parameter default, but lacks behavioral details like error handling or dependencies. For a download operation, more context on network behavior or file system interactions would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal parameter semantics: it explains that 'target_dir' is the download target directory and defaults to the current working directory. However, with 0% schema description coverage and only 1 parameter, the baseline is 4 for zero parameters, but here the description compensates somewhat by clarifying the default behavior. It doesn't add format details or constraints beyond what's implied, so a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '下载 CFR 反编译器到指定目录' (Download CFR decompiler to specified directory). It specifies both the verb ('下载' - download) and the resource ('CFR 反编译器' - CFR decompiler), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'check_cfr_status' or 'decompile_directory', which is why it doesn't reach a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether CFR needs to be installed first), when this tool should be used over checking status with 'check_cfr_status', or any exclusions. The only contextual hint is the default parameter value, but this doesn't constitute usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_java_versionB
获取当前系统的 Java 版本信息

Returns:
    Java 版本信息
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool returns Java version information, which implies a read-only, non-destructive operation, but doesn't disclose behavioral traits like error handling, performance characteristics, or system dependencies. The description adds minimal context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the main purpose stated first in a single sentence. The 'Returns:' section is redundant since an output schema exists, but it doesn't significantly detract from clarity. Overall, it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, output schema provided), the description is minimally complete. It states what the tool does but lacks details on usage context or behavioral aspects. With no annotations and sibling tools present, more guidance could improve completeness, but it's adequate for a basic read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is acceptable given the lack of parameters. A baseline of 4 is appropriate as the schema fully covers the input requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取当前系统的 Java 版本信息' (Get the current system's Java version information). This specifies the verb (get) and resource (Java version information) with the scope (current system). However, it doesn't explicitly differentiate from sibling tools like 'check_cfr_status' which might also provide system information, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where this tool is preferred, such as for system diagnostics versus decompilation tasks handled by other tools. There's only a basic purpose statement with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.3.1
    • Addedcheck_cfr_status
    • Addeddecompile_directory
    • Addeddecompile_file
    • Addeddecompile_files
    • Addeddownload_cfr_tool
    • Addedget_java_version

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation3/5

The tools have clear distinctions between checking status, downloading, decompiling files/directories, and getting Java version, but decompile_file and decompile_files have overlapping purposes that could cause confusion. The directory vs. file distinction is clear, but the single vs. multiple file tools are functionally similar with minor parameter differences.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with clear verb_noun structure (check_cfr_status, decompile_directory, decompile_file, decompile_files, download_cfr_tool, get_java_version). The naming is predictable and follows the same convention throughout.

Tool Count5/5

With 6 tools, this is well-scoped for a Java decompiler server. Each tool serves a distinct purpose in the decompilation workflow, from setup (download, check status) to core operations (decompile files/directories) to system information (Java version).

Completeness4/5

The toolset covers the essential decompilation workflow comprehensively: tool setup (download, status check), decompilation operations at different granularities (file, files, directory), and system verification (Java version). A minor gap is the lack of configuration tools for CFR options or cleanup operations for decompiled output.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for intelligently reading Java source code, supporting extraction from Maven dependencies and local projects with dual decompilers.
    155
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that integrates Ghidra for binary analysis, enabling decompilation, disassembly, and advanced reverse engineering tasks through Claude Code.
    15
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server for exploring, analyzing, and decompiling Java JAR files.
    134 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes an AI decompiler via an OpenAI-compatible API, enabling decompilation, explanation, and variable renaming of disassembly for binary analysis.
    MIT