Enables GitHub Copilot to analyze Java applications for Jakarta EE migration readiness, detect blockers, recommend compatible versions, and create comprehensive migration plans from Java EE 8 (javax.) to Jakarta EE 9+ (jakarta.).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JakartaMigrationanalyze this pom.xml for Jakarta migration readiness"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jakarta Migration MCP Server
A Model Context Protocol (MCP) server that provides AI coding assistants with specialized tools for analyzing and migrating Java applications from Java EE 8 (javax.*) to Jakarta EE 9+ (jakarta.*).
🚀 Quick Start
Run locally (STDIO)
Prerequisites: Java 21+ and Node.js 18+
See Local Setup (STDIO) below for client configuration.
📋 What It Does
The Jakarta Migration MCP Server enables your AI coding assistant to:
🔍 Analyze Jakarta Readiness - Assess Java projects for migration readiness with detailed dependency analysis
🚫 Detect Blockers - Identify dependencies and code patterns that prevent Jakarta migration
📦 Recommend Versions - Suggest Jakarta-compatible versions for existing dependencies
📋 Create Migration Plans - Generate comprehensive, phased migration plans with risk assessment
📊 Analyze Migration Impact - Comprehensive impact analysis combining dependency analysis and source code scanning
✅ Verify Runtime - Test migrated applications to ensure they run correctly after migration
The Problem It Solves
Migrating from Java EE 8 (javax.*) to Jakarta EE 9+ (jakarta.*) is complex because:
Dependency Hell: Many libraries haven't migrated, creating transitive conflicts
Binary Incompatibility: Compiled JARs may reference
javax.*internallyHidden Dependencies:
javax.*usage in XML configs, annotations, and dynamic loadingRisk Assessment: Need to understand migration impact before starting
This MCP server provides AI assistants with the specialized knowledge and tools to navigate these challenges effectively.
🔒 Security & Privacy
Your code and project data are handled with the utmost care. We understand that Java developers working with enterprise codebases need complete confidence in the security and privacy of their intellectual property.
Stateless Architecture
✅ No Data Persistence - The service is completely stateless. Your project files, source code, and analysis results are never stored, logged, or persisted on our servers.
✅ No Data Collection - We don't collect, track, or analyze your code. Each request is processed independently with no memory of previous requests.
✅ Local Execution Option - For maximum privacy, you can run the entire service locally using the Local Setup option. Your code never leaves your machine.
Privacy Guarantees
Zero Code Storage: Project files are only read during analysis and immediately discarded
No Telemetry: No usage tracking, analytics, or code scanning for any purpose other than migration analysis
Open Source: The core service is open source, so you can audit exactly what it does
Enterprise Ready: Safe for use with proprietary and sensitive codebases
Local Service
When running locally via STDIO:
100% Local - Everything runs on your machine
No Network Calls - No external requests are made
Complete Control - You have full visibility and control over the process
For maximum security and privacy, we recommend using the local STDIO setup for sensitive projects.
🔧 Setup Instructions
Local Setup (STDIO)
For local development, use STDIO transport which works with Cursor, Claude Code, and Antigravity. This is the recommended approach for maximum privacy and performance.
Prerequisites
Java 21+ - Download from Adoptium
Verify installation:
java -versionShould show Java 21 or higher
Node.js 18+ - Download from nodejs.org
Verify installation:
node --versionShould show v18.0.0 or higher
Installation Methods
Option 1: Global Install (Recommended)
Install the package globally for system-wide access:
After installation:
The JAR file will be automatically downloaded from GitHub releases on first use
JAR is cached in your home directory for faster subsequent runs
You can use the command directly:
jakarta-migration-mcp
Option 2: npx (No Installation)
Use npx to run without installing:
The -y flag automatically accepts the package download. The JAR will be downloaded and cached on first use.
Option 3: Local Development Build
If you're building from source or want to use a local JAR:
Windows (PowerShell):
How the npm Package Works
The npm package is a lightweight Node.js wrapper that:
Downloads the JAR from GitHub releases (if not already cached)
Caches the JAR in your home directory:
Windows:
%USERPROFILE%\AppData\.cache\jakarta-migration-mcp\Linux/macOS:
~/.cache/jakarta-migration-mcp/
Starts the Java process with correct MCP arguments
Handles stdio communication for MCP protocol
Pre-download the JAR:
You can pre-download the JAR without starting the server:
This is useful for:
Testing the download process
Pre-caching the JAR before first use
Verifying network connectivity
Verify Installation:
After installing, verify everything works:
You should see:
Java version detection
JAR download or cache confirmation
No errors
Optional configuration
To use a custom JAR path or override transport, see NPM Installation Configuration.
Cursor IDE
Open Cursor Settings (
Ctrl+,orCmd+,)Navigate to Features → MCP
Add configuration:
Windows:
Mac/Linux:
Restart Cursor completely
Claude Code (VS Code Extension)
Open VS Code Settings
Navigate to Claude Code → MCP Settings
Add the same configuration as Cursor
Restart VS Code
Antigravity
Open Antigravity Settings
Navigate to MCP Configuration
Add:
Alternative: Run from JAR Directly
If you've built the project locally and want to bypass the npm wrapper:
Windows:
Mac/Linux:
Note: Using the npm wrapper is recommended as it handles JAR downloads, caching, and argument configuration automatically.
Local HTTP Setup (Streamable HTTP or SSE)
For local HTTP-based testing or development:
Build the project:
./gradlew bootJarStart server with Streamable HTTP:
Windows (PowerShell):
java -jar build\libs\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar --spring.profiles.active=mcp-streamable-httpMac/Linux:
java -jar build/libs/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar \ --spring.profiles.active=mcp-streamable-httpOr with SSE (legacy):
Windows (PowerShell):
java -jar build\libs\jakarta-migration-mcp-1.0.0-SNAPSHOT.jar --spring.profiles.active=mcp-sseMac/Linux:
java -jar build/libs/jakarta-migration-mcp-1.0.0-SNAPSHOT.jar \ --spring.profiles.active=mcp-sseTest the endpoint:
Windows (PowerShell):
# Streamable HTTP (recommended) 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\":{}}' # Or SSE (legacy) 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:
# Streamable HTTP (recommended) curl -X POST http://localhost:8080/mcp/streamable-http \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' # Or SSE (legacy) curl -X POST http://localhost:8080/mcp/sse \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Configure MCP client to use
http://localhost:8080/mcp/streamable-http(or/mcp/ssefor SSE)
💬 Usage Examples
Once configured, you can use the MCP tools in your AI assistant:
Analyze Project Readiness
Detect Migration Blockers
Get Version Recommendations
Create Migration Plan
Verify Runtime
🛠️ Available Tools
Tool | Description |
| Comprehensive project analysis with readiness score |
| Find dependencies and patterns that prevent migration |
| Get Jakarta-compatible version recommendations |
| Generate phased migration plan with risk assessment |
| Analyze full migration impact combining dependency analysis and source code scanning |
| Test migrated application execution |
See MCP Tools Documentation for detailed tool descriptions and parameters.
🐛 Troubleshooting
Tools Not Appearing
Restart your IDE completely - MCP servers load on startup
Check MCP server status - Look for errors in IDE logs
Verify configuration - Ensure JSON syntax is correct
Check prerequisites - Java 21+ and Node.js 18+ must be installed
Connection Issues
For Local (STDIO):
Verify Java is installed:
java -version(should show Java 21+)Verify Node.js is installed:
node --version(should show v18+)Try running manually:
npx -y @jakarta-migration/mcp-serverCheck JAR download:
npx -y @jakarta-migration/mcp-server --download-onlyVerify JAR cache location:
Windows:
%USERPROFILE%\AppData\.cache\jakarta-migration-mcp\Linux/macOS:
~/.cache/jakarta-migration-mcp/
If JAR download fails, check:
Internet connectivity
GitHub releases are accessible
Version matches package.json version
For local development, set
JAKARTA_MCP_JAR_PATHenvironment variable to point to your local JAR file
Platform-Specific Issues
Windows:
Use forward slashes in paths:
C:/path/to/file.jarEnsure Java is in your PATH
Mac/Linux:
Ensure execute permissions:
chmod +x gradlewUse absolute paths in configuration
📚 Documentation
For Users
Installation Guide - Build and installation
MCP Tools Reference - Complete tool documentation
Transport Configuration - STDIO vs SSE explained
For Developers
Development Setup - Build and development environment
Architecture - System design and modules
Testing Guide - Testing standards and practices
Contributing - How to contribute to the project
🔗 Resources
MCP Documentation: modelcontextprotocol.io
Spring AI: docs.spring.io/spring-ai
Jakarta EE: jakarta.ee
📄 License
Apache License 2.0 - See LICENSE file for details.
🙏 Acknowledgments
Built with ❤️ for the Java community. Special thanks to:
Spring AI team for MCP framework
OpenRewrite for migration recipes
Need help? Open an issue or check our documentation.