npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jdk-mcp

v1.0.0

Published

MCP server to detect, install, configure and uninstall JDK on macOS and Windows (Temurin, OpenJDK, Oracle, etc.)

Downloads

174

Readme

jdk-mcp

用于在 macOSWindows检测、安装、配置、卸载 JDK 的 MCP Server。

  • 检测 / 列表 / 卸载:支持 Oracle、OpenJDK、Eclipse Temurin、Corretto、Zulu、Microsoft 等多种来源
  • 安装:默认安装 Eclipse Temurin(推荐发行版)

功能

| 工具 | 说明 | |------|------| | detect_java | 全面检测 Java 环境(含所有来源、配置状态) | | list_installed_jdks | 列出所有已安装 JDK(vendor、路径、是否默认) | | list_available_versions | install_jdk 支持的 Temurin 版本 | | install_jdk | 安装 Temurin 并可选配置环境变量 | | set_default_java | 按 target_pathversion 切换默认 JDK | | verify_java | 验证安装结果 | | uninstall_jdk | 按 target_path 卸载指定一份 JDK(二次确认) |

使用前提条件(必读)

在使用本 MCP 之前,请确认以下条件均已满足。

通用要求

| 条件 | 说明 | |------|------| | 操作系统 | 仅支持 macOSWindows(不支持 Linux) | | Node.js | 18 或更高版本,用于运行 MCP Server | | Cursor | 已安装并在 ~/.cursor/mcp.json 中配置本 MCP | | 网络 | 安装/镜像下载时需要可访问外网或清华镜像站 | | JDK 发行版 | 默认安装 Eclipse Temurin(Adoptium) |

macOS 要求

| 条件 | 说明 | |------|------| | 推荐包管理器 | 已安装 Homebrewbrew 在 PATH 中) | | 安装权限 | 使用 Homebrew 时通常无需 sudo;镜像 .pkg 安装及目录删除需要 sudo 密码 | | 环境变量 | 自动写入 ~/.zshrc~/.bash_profile,修改后需 重开终端source | | 标准安装路径 | /Library/Java/JavaVirtualMachines/*.jdk |

Windows 要求

| 条件 | 说明 | |------|------| | 推荐包管理器 | 已安装 winget(Windows 10/11 应用安装程序) | | 安装权限 | winget / 镜像 .msi / Oracle 注册表 msiexec 卸载 可能需要 管理员权限 | | 环境变量 | 自动写入 用户级 JAVA_HOMEPath,修改后需 重开终端 | | 标准安装路径 | Program Files\Java\jdk-*Program Files\Eclipse Adoptium\jdk-* 等 |

Windows Oracle JDK 卸载说明

Oracle JDK 会通过以下注册表登记卸载信息,本 MCP 会优先使用:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}

卸载顺序:

  1. 读取 QuietUninstallStringUninstallString
  2. 若为 MSI 包 → msiexec.exe /X {GUID} /qn /norestart
  3. 否则执行官方 UninstallString
  4. 清理 JavaSoft\JDK 残留项
  5. 删除残留目录(如有)

建议以管理员身份运行 Cursor,否则 msiexec 可能失败。

MCP 配置要求

  1. 在项目目录执行 npm install && npm run build
  2. ~/.cursor/mcp.json 中注册 Server(路径改为你本机实际路径):
{
  "mcpServers": {
    "jdk-manager": {
      "command": "node",
      "args": ["/Users/wow/Projects/jdk-mcp/dist/index.js"]
    }
  }
}
  1. 重启 Cursor 或刷新 MCP,确认 jdk-manager 状态为已连接

权限与风险说明

  • 安装/卸载 会修改系统目录或包管理器状态,可能影响正在使用该 JDK 的项目
  • 环境变量 由本 MCP 写入的内容带有 # >>> jdk-mcp >>> 标记,卸载时会尝试自动清理
  • 卸载不可轻易撤销,执行前务必确认无业务依赖该 JDK 版本

安装策略

  • macOS:优先 brew install --cask temurin@<version>,否则从清华镜像下载 .pkg
  • Windows:优先 winget install EclipseAdoptium.Temurin.<version>.JDK,否则从清华镜像下载 .msi

卸载与二次确认

uninstall_jdkinstallPath 精确卸载一份 JDK(不会误删同版本的其他发行版):

  1. 先调用 list_installed_jdks 获取 installPath
  2. 调用 uninstall_jdk(target_path=...) 获取预览
  3. 用户同意后传入 confirm_phrase,例如:
confirm_phrase="UNINSTALL JDK /Library/Java/JavaVirtualMachines/openjdk-17.jdk"

快速开始

cd ~/Projects/jdk-mcp
npm install
npm run build

常用提示语

在 Cursor 对话中直接说下面的话即可,Agent 会自动调用 jdk-manager MCP 工具。

查询与检测

| 场景 | 推荐提示语 | |------|------------| | 全面检测 Java 环境 | 检测我当前的 Java 环境,包括 java 版本、JAVA_HOME 和已安装的 JDK | | 查看所有已装 JDK | 列出本机所有已安装的 JDK,显示来源、路径和是否为默认 | | 查看当前默认 JDK | 当前默认使用的是哪个 JDK?JAVA_HOME 指向哪里? | | 查看可安装版本 | 这个 MCP 支持安装哪些 JDK 版本? | | 验证安装是否正常 | 验证一下 Java 是否安装正确,检查 java 和 javac 命令 |

示例对话:

你:检测我当前的 Java 环境
Agent:→ 调用 detect_java,返回版本、JAVA_HOME、已安装列表

你:列出本机所有 JDK,告诉我哪个是默认的
Agent:→ 调用 list_installed_jdks,标注 isActiveDefault / isConfiguredInEnv

安装 JDK

| 场景 | 推荐提示语 | |------|------------| | 安装并配置(常用) | 帮我安装 JDK 17,并自动配置 JAVA_HOME 和 PATH | | 只安装不配置环境变量 | 安装 JDK 21,不要修改环境变量 | | 安装指定 LTS | 安装 Temurin JDK 11,安装完成后设为默认 | | 安装最新推荐版 | 帮我安装推荐的 JDK 版本并配置环境 |

示例对话:

你:帮我安装 JDK 17 并配置环境变量
Agent:→ 调用 install_jdk(version=17, configure=true)

你:安装 JDK 25,装完验证一下
Agent:→ install_jdk → verify_java

说明:install_jdk 默认安装 Eclipse Temurin。支持版本:8、11、17、21、25。

切换默认 JDK

| 场景 | 推荐提示语 | |------|------------| | 按版本切换(唯一安装时) | 把默认 Java 切换到 17 | | 按路径精确切换(推荐) | 将默认 JDK 切换为 /Library/Java/JavaVirtualMachines/temurin-17.jdk | | 切换前先列出 | 先列出已安装的 JDK,再帮我把默认切换到 21 |

示例对话:

你:把默认 Java 切换到 21
Agent:→ 若只有一个 JDK 21,调用 set_default_java(version=21)
       → 若有多个同版本,会提示你用 installPath 指定

你:用路径 /Library/Java/JavaVirtualMachines/openjdk-17.jdk 设为默认 JDK
Agent:→ 调用 set_default_java(target_path=...)

切换后需重开终端,或执行 source ~/.zshrc(macOS)后生效。

卸载 JDK

| 场景 | 推荐提示语 | |------|------------| | 卸载指定版本(两步确认) | 帮我卸载 openjdk-17,先列出安装路径并让我确认 | | 卸载 Oracle JDK(Windows) | 卸载 Oracle JDK 17,使用注册表卸载方式 | | 卸载前先查看 | 列出所有 JDK,我想卸载不需要的那份 |

示例对话:

你:我想卸载 JDK 8,先给我看看会删什么
Agent:→ list_installed_jdks → uninstall_jdk(不传 confirm_phrase)返回预览

你:确认卸载
Agent:→ uninstall_jdk(target_path=..., confirm_phrase="UNINSTALL JDK /Library/.../openjdk-8.jdk")

卸载为危险操作,Agent 必须先展示预览并获得你的明确同意,才会执行。

故障排查

| 场景 | 推荐提示语 | |------|------------| | java 命令不可用 | 帮我排查为什么 java 命令找不到 | | 版本不对 | 我运行 java -version 显示的版本不对,帮我检查环境配置 | | 多版本冲突 | 本机装了多个 JDK,帮我分析当前用的是哪一个,建议怎么切换 | | 安装后验证 | 刚装完 JDK,帮我验证安装并确认 JAVA_HOME 是否正确 |

示例对话:

你:java -version 显示 1.8,但我想要 17,帮我排查并切换
Agent:→ detect_java → list_installed_jdks → set_default_java

你:JDK 安装成功了但项目还是报错,帮我验证 Java 环境
Agent:→ verify_java → detect_java

提示语编写建议

  • 查询类:直接说「检测」「列出」「验证」,无需提供路径
  • 安装类:说明版本号(8/11/17/21/25)和是否需要配置环境变量
  • 切换类:同版本有多份 JDK 时,提供 list_installed_jdks 返回的 installPath
  • 卸载类:先说「先预览再确认」,不要跳过二次确认
  • 避免模糊表述:「更新 JDK」→ 改为「安装 JDK 21 并设为默认」;「删掉 Java」→ 改为「卸载路径 xxx 的 JDK」

支持版本

8、11、17、21、25(Eclipse Temurin LTS / 当前推荐版本)

开发

npm run dev   # 监听编译
npm run build # 构建
npm start     # 启动 MCP(stdio)

许可证

MIT