Back to MCP directory
publicPublicdnsLocal runtime

jakartamigrationmcp

一个用于帮助Java应用从Java EE 8迁移到Jakarta EE 9+的MCP服务器,提供项目分析、依赖检测、迁移规划和运行时验证等功能,支持本地运行和IntelliJ插件集成。

article

README

🚀 Jakarta迁移MCP服务器

这是一个模型上下文协议(MCP)服务器,它为AI编码助手提供了专业工具,用于分析Java应用程序并将其从Java EE 8(javax.*)迁移到Jakarta EE 9+(jakarta.*)。

MCP协议

🚀 快速开始

本地运行(STDIO)

前提条件:Java 21+ 和 Node.js 18+

# 通过npm安装(一次性)
npm install -g @jakarta-migration/mcp-server

# 或者使用npx(无需安装)
npx -y @jakarta-migration/mcp-server

有关客户端配置,请参阅下面的本地设置(STDIO)

✨ 主要特性

🖥️ IntelliJ IDEA插件

为偏好集成开发环境体验的用户提供原生IntelliJ IDEA插件:

插件版本

下载

从JetBrains Marketplace获取 →

功能特性

  • 迁移分析 - 分析Java项目对Jakarta EE迁移的准备情况
  • 依赖关系图可视化 - 使用多种布局选项(分层、力导向、圆形、树形)可视化模块依赖关系
  • MCP服务器集成 - 自动连接到Jakarta迁移MCP服务器
  • AI助手工具 - 集成AI助手以提供智能迁移建议
  • 工具窗口 - 专用的Jakarta迁移工具窗口,便于访问
  • 重构选项卡 - 应用和管理OpenRewrite重构
  • 运行时验证 - 在运行时测试迁移后的应用程序

安装步骤

  1. 安装:通过IntelliJ IDEA进行安装:
    • 打开设置Ctrl+Alt+SCmd+,
    • 转到插件
    • 搜索Jakarta Migration
    • 点击安装
  2. 重启:重启IntelliJ IDEA

使用方法

  1. 打开一个Java项目
  2. 转到工具Jakarta Migration 或使用 Ctrl+Shift+J
  3. Jakarta迁移工具窗口将打开
  4. 点击分析项目以开始分析
  5. 在依赖关系图和分析面板中查看结果

AI助手集成

如果您已安装IntelliJ AI助手:

  1. 插件会自动向AI助手注册MCP工具
  2. 向AI助手提问:“分析我的项目以进行Jakarta迁移”
  3. AI助手将使用MCP工具分析您的项目

要求

  • IntelliJ IDEA 2023.3.4 或更高版本
  • Java 17 或更高版本
  • 可选:用于AI功能的AI助手插件

📋 主要功能

Jakarta迁移MCP服务器使您的AI编码助手能够:

  • 🔍 分析Jakarta就绪情况 - 通过详细的依赖分析评估Java项目的迁移就绪情况
  • 🚫 检测迁移障碍 - 识别阻止Jakarta迁移的依赖项和代码模式
  • 📦 推荐版本 - 为现有依赖项建议与Jakarta兼容的版本
  • 📋 创建迁移计划 - 生成全面的、分阶段的迁移计划,并进行风险评估
  • 📊 分析迁移影响 - 结合依赖分析和源代码扫描进行全面的影响分析
  • ✅ 验证运行时 - 测试迁移后的应用程序,确保迁移后能正常运行

解决的问题

从Java EE 8(javax.*)迁移到Jakarta EE 9+(jakarta.*)非常复杂,原因如下:

  • 依赖地狱:许多库尚未迁移,导致传递性冲突
  • 二进制不兼容:编译后的JAR文件可能在内部引用 javax.*
  • 隐藏依赖:XML配置、注解和动态加载中使用 javax.*
  • 风险评估:在开始迁移之前需要了解迁移影响

此MCP服务器为AI助手提供了专业知识和工具,以有效应对这些挑战。

🔒 安全与隐私

我们会极其谨慎地处理您的代码和项目数据。我们深知使用企业代码库的Java开发人员需要对其知识产权的安全性和隐私性有充分的信心。

无状态架构

无数据持久化 - 该服务完全无状态。您的项目文件、源代码和分析结果不会存储、记录或持久化在我们的服务器上。 ✅ 无数据收集 - 我们不会收集、跟踪或分析您的代码。每个请求都是独立处理的,不会保留先前请求的记忆。 ✅ 本地执行选项 - 为了最大程度地保护隐私,您可以使用本地设置选项在本地运行整个服务。您的代码不会离开您的机器。

隐私保证

  • 零代码存储:项目文件仅在分析期间读取,并立即丢弃
  • 无遥测:除迁移分析外,不进行任何使用跟踪、分析或代码扫描
  • 开源:核心服务是开源的,因此您可以准确审查其功能
  • 企业适用:可安全用于专有和敏感代码库

本地服务

通过STDIO在本地运行时:

  • 100%本地运行 - 一切都在您的机器上运行
  • 无网络调用 - 不进行外部请求
  • 完全控制 - 您可以完全了解和控制整个过程

对于敏感项目,我们建议使用本地STDIO设置以实现最高的安全性和隐私性。

📦 安装指南

本地设置(STDIO)

对于本地开发,使用STDIO传输,它适用于 Cursor、Claude Code和Antigravity。这是实现最高隐私和性能的推荐方法。

前提条件

  • Java 21+ - 从Adoptium下载
    • 验证安装:java -version
    • 应显示Java 21或更高版本
  • Node.js 18+ - 从nodejs.org下载
    • 验证安装:node --version
    • 应显示v18.0.0或更高版本

安装方法

选项1:全局安装(推荐) 全局安装该软件包,以便在系统范围内使用:

npm install -g @jakarta-migration/mcp-server

安装后:

  • JAR文件将在首次使用时自动从GitHub版本中下载
  • JAR文件将缓存在您的主目录中,以便后续更快运行
  • 您可以直接使用命令:jakarta-migration-mcp

选项2:npx(无需安装) 使用 npx 直接运行,无需安装:

npx -y @jakarta-migration/mcp-server

-y 标志会自动接受软件包下载。JAR文件将在首次使用时下载并缓存。

选项3:本地开发构建 如果您从源代码构建或想使用本地JAR文件:

# 构建JAR文件
./gradlew bootJar

# 设置环境变量以使用本地JAR文件
export JAKARTA_MCP_JAR_PATH=/path/to/build/libs/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar

# 通过npm包装器运行
npx -y @jakarta-migration/mcp-server

Windows(PowerShell):

# 构建JAR文件
.\gradlew.bat bootJar

# 设置环境变量
$env:JAKARTA_MCP_JAR_PATH = "E:\Source\JakartaMigrationMCP\build\libs\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar"

# 通过npm包装器运行
npx -y @jakarta-migration/mcp-server

npm软件包的工作原理

npm软件包是一个轻量级的Node.js包装器,它可以:

  1. 从GitHub版本中下载JAR文件(如果尚未缓存)
  2. 将JAR文件缓存在您的主目录中:
    • Windows%USERPROFILE%\AppData\.cache\jakarta-migration-mcp\
    • Linux/macOS~/.cache/jakarta-migration-mcp/
  3. 使用正确的MCP参数启动Java进程
  4. 处理MCP协议的stdio通信

预下载JAR文件: 您可以在不启动服务器的情况下预下载JAR文件:

npx -y @jakarta-migration/mcp-server --download-only

这对于以下情况很有用:

  • 测试下载过程
  • 在首次使用前预缓存JAR文件
  • 验证网络连接

验证安装: 安装完成后,验证一切是否正常工作:

# 测试包装器是否能找到Java并下载JAR文件
npx -y @jakarta-migration/mcp-server --download-only

# 检查命令是否可用(如果全局安装)
jakarta-migration-mcp --download-only

您应该看到:

  • Java版本检测
  • JAR文件下载或缓存确认
  • 无错误

可选配置

要使用自定义JAR文件路径或覆盖传输方式,请参阅 NPM安装配置

Cursor IDE
  1. 打开Cursor设置(Ctrl+,Cmd+,
  2. 导航到 功能MCP
  3. 添加配置: Windows:
{
  "mcpServers": {
    "jakarta-migration": {
      "command": "npx",
      "args": ["-y", "@jakarta-migration/mcp-server"]
    }
  }
}

Mac/Linux:

{
  "mcpServers": {
    "jakarta-migration": {
      "command": "npx",
      "args": ["-y", "@jakarta-migration/mcp-server"]
    }
  }
}
  1. 完全重启Cursor
Claude Code(VS Code扩展)
  1. 打开VS Code设置
  2. 导航到 Claude CodeMCP设置
  3. 添加与Cursor相同的配置
  4. 重启VS Code
Antigravity
  1. 打开Antigravity设置
  2. 导航到 MCP配置
  3. 添加:
{
  "name": "jakarta-migration",
  "command": "npx",
  "args": ["-y", "@jakarta-migration/mcp-server"]
}

替代方法:直接从JAR文件运行

如果您已经在本地构建了项目,并且想绕过npm包装器: Windows:

{
  "mcpServers": {
    "jakarta-migration": {
      "command": "java",
      "args": [
        "-jar",
        "C:\\path\\to\\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar",
        "--spring.profiles.active=mcp-stdio",
        "--spring.ai.mcp.server.transport=stdio",
        "--spring.main.web-application-type=none"
      ]
    }
  }
}

Mac/Linux:

{
  "mcpServers": {
    "jakarta-migration": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar",
        "--spring.profiles.active=mcp-stdio",
        "--spring.ai.mcp.server.transport=stdio",
        "--spring.main.web-application-type=none"
      ]
    }
  }
}

注意:建议使用npm包装器,因为它会自动处理JAR文件下载、缓存和参数配置。

本地HTTP设置(可流式HTTP或SSE)

用于基于本地HTTP的测试或开发:

  1. 构建项目:
./gradlew bootJar
  1. 使用可流式HTTP启动服务器: Windows(PowerShell):
java -jar build\libs\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar --spring.profiles.active=mcp-streamable-http

Mac/Linux:

java -jar build/libs/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar \
  --spring.profiles.active=mcp-streamable-http

或者使用SSE(旧版): Windows(PowerShell):

java -jar build\libs\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar --spring.profiles.active=mcp-sse

Mac/Linux:

java -jar build/libs/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar \
  --spring.profiles.active=mcp-sse
  1. 测试端点: Windows(PowerShell):
# 可流式HTTP(推荐)
curl.exe -X POST http://localhost:8080/mcp/streamable-http `
  -H "Content-Type: application/json" `
  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}'

# 或者SSE(旧版)
curl.exe -X POST http://localhost:8080/mcp/sse `
  -H "Content-Type: application/json" `
  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}'

Mac/Linux:

# 可流式HTTP(推荐)
curl -X POST http://localhost:8080/mcp/streamable-http \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# 或者SSE(旧版)
curl -X POST http://localhost:8080/mcp/sse \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
  1. 配置MCP客户端以使用 http://localhost:8080/mcp/streamable-http(或 /mcp/sse 用于SSE)

💻 使用示例

配置完成后,您可以在AI助手中使用MCP工具:

分析项目就绪情况

Analyze the Jakarta readiness of my project at /path/to/my-project

检测迁移障碍

Detect any blockers for Jakarta migration in my project

获取版本推荐

Recommend Jakarta-compatible versions for my dependencies

创建迁移计划

Create a migration plan for migrating my project to Jakarta EE

验证运行时

Verify the runtime of my migrated application at /path/to/app.jar

🛠️ 可用工具

| 工具 | 描述 | |------|-------------| | analyzeJakartaReadiness | 进行全面的项目分析并给出就绪分数 | | detectBlockers | 查找阻止迁移的依赖项和模式 | | recommendVersions | 获取与Jakarta兼容的版本推荐 | | createMigrationPlan | 生成带有风险评估的分阶段迁移计划 | | analyzeMigrationImpact | 结合依赖分析和源代码扫描分析全面的迁移影响 | | verifyRuntime | 测试迁移后应用程序的执行情况 |

有关详细的工具描述和参数,请参阅 MCP工具文档

🐛 故障排除

工具未显示

  1. 完全重启您的IDE - MCP服务器在启动时加载
  2. 检查MCP服务器状态 - 在IDE日志中查找错误
  3. 验证配置 - 确保JSON语法正确
  4. 检查前提条件 - 必须安装Java 21+ 和 Node.js 18+

连接问题

对于本地(STDIO):

  • 验证Java是否已安装:java -version(应显示Java 21+)
  • 验证Node.js是否已安装:node --version(应显示v18+)
  • 尝试手动运行:npx -y @jakarta-migration/mcp-server
  • 检查JAR文件下载:npx -y @jakarta-migration/mcp-server --download-only
  • 验证JAR文件缓存位置:
    • Windows%USERPROFILE%\AppData\.cache\jakarta-migration-mcp\
    • Linux/macOS~/.cache/jakarta-migration-mcp/
  • 如果JAR文件下载失败,请检查:
    • 网络连接
    • 是否可以访问GitHub版本
    • 版本是否与package.json版本匹配
  • 对于本地开发,设置 JAKARTA_MCP_JAR_PATH 环境变量以指向您的本地JAR文件

特定平台问题

Windows:

  • 在路径中使用正斜杠:C:/path/to/file.jar
  • 确保Java已添加到系统路径

Mac/Linux:

  • 确保具有执行权限:chmod +x gradlew
  • 在配置中使用绝对路径

📚 详细文档

用户文档

开发者文档

🔗 资源

📄 许可证

本仓库采用双重许可模式:

根许可证(专有)

根目录下的 LICENSE 文件包含整个项目仓库的专有许可证。

社区模块(Apache 2.0)

以下模块采用Apache许可证2.0

  • community-core-engine - 核心迁移逻辑和分析
  • community-mcp-server - 模型上下文协议服务器
  • community-intellij-plugin - IntelliJ IDEA插件

详情请参阅 docs/community/LICENSE

高级模块(专有)

以下模块是专有的,需要商业许可证:

  • premium-core-engine - 高级迁移功能
  • premium-mcp-server - 高级MCP服务器功能
  • premium-intellij-plugin - 高级IntelliJ插件功能

详情请参阅 docs/premium/LICENSE

🙏 致谢

我们怀着对Java社区的热爱构建了这个项目。特别感谢:

  • Spring AI团队提供的MCP框架
  • OpenRewrite提供的迁移配方

需要帮助? 提交问题 或查看我们的 文档

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client