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
用于在 macOS 和 Windows 上检测、安装、配置、卸载 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_path 或 version 切换默认 JDK |
| verify_java | 验证安装结果 |
| uninstall_jdk | 按 target_path 卸载指定一份 JDK(二次确认) |
使用前提条件(必读)
在使用本 MCP 之前,请确认以下条件均已满足。
通用要求
| 条件 | 说明 |
|------|------|
| 操作系统 | 仅支持 macOS 或 Windows(不支持 Linux) |
| Node.js | 18 或更高版本,用于运行 MCP Server |
| Cursor | 已安装并在 ~/.cursor/mcp.json 中配置本 MCP |
| 网络 | 安装/镜像下载时需要可访问外网或清华镜像站 |
| JDK 发行版 | 默认安装 Eclipse Temurin(Adoptium) |
macOS 要求
| 条件 | 说明 |
|------|------|
| 推荐包管理器 | 已安装 Homebrew(brew 在 PATH 中) |
| 安装权限 | 使用 Homebrew 时通常无需 sudo;镜像 .pkg 安装及目录删除需要 sudo 密码 |
| 环境变量 | 自动写入 ~/.zshrc 或 ~/.bash_profile,修改后需 重开终端 或 source |
| 标准安装路径 | /Library/Java/JavaVirtualMachines/*.jdk |
Windows 要求
| 条件 | 说明 |
|------|------|
| 推荐包管理器 | 已安装 winget(Windows 10/11 应用安装程序) |
| 安装权限 | winget / 镜像 .msi / Oracle 注册表 msiexec 卸载 可能需要 管理员权限 |
| 环境变量 | 自动写入 用户级 JAVA_HOME 与 Path,修改后需 重开终端 |
| 标准安装路径 | 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}
卸载顺序:
- 读取
QuietUninstallString或UninstallString - 若为 MSI 包 →
msiexec.exe /X {GUID} /qn /norestart - 否则执行官方 UninstallString
- 清理
JavaSoft\JDK残留项 - 删除残留目录(如有)
建议以管理员身份运行 Cursor,否则 msiexec 可能失败。
MCP 配置要求
- 在项目目录执行
npm install && npm run build - 在
~/.cursor/mcp.json中注册 Server(路径改为你本机实际路径):
{
"mcpServers": {
"jdk-manager": {
"command": "node",
"args": ["/Users/wow/Projects/jdk-mcp/dist/index.js"]
}
}
}- 重启 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_jdk 按 installPath 精确卸载一份 JDK(不会误删同版本的其他发行版):
- 先调用
list_installed_jdks获取installPath - 调用
uninstall_jdk(target_path=...)获取预览 - 用户同意后传入
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
