Loading repository data…
Loading repository data…
stephanj / repository
A Java MCP (Model Context Protocol) server that wraps JDTLS (Eclipse JDT Language Server) using LSP4J to provide Java IDE features to AI assistants like Claude.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A Java MCP (Model Context Protocol) server that wraps JDTLS (Eclipse JDT Language Server) using LSP4J to provide Java IDE features to AI assistants like Claude.
This MCP server exposes the following tools:
| Tool | Description |
|---|---|
find_symbols | Search for Java symbols (classes, methods, fields) by name |
find_references | Find all references to a symbol at a given file location |
find_definition | Go to the definition of a symbol |
document_symbols | Get all symbols defined in a Java file |
find_interfaces_with_method | Find all interfaces containing a method with a given name |
brew install jdtls)mvn clean package
This creates a shaded JAR at target/lsp4j-mcp-1.0.0-SNAPSHOT.jar.
./run.sh /path/to/your/java/project
java -jar target/lsp4j-mcp-1.0.0-SNAPSHOT.jar <workspace-path> <jdtls-command>
Example:
java -jar target/lsp4j-mcp-1.0.0-SNAPSHOT.jar /Users/me/projects/myapp jdtls
Add to your .mcp.json:
{
"mcpServers": {
"java-lsp": {
"command": "java",
"args": [
"-jar",
"/path/to/LSP4J-MCP/target/lsp4j-mcp-1.0.0-SNAPSHOT.jar",
"/path/to/your/java/project",
"jdtls"
],
"env": {
"LOG_FILE": "/tmp/lsp4j-mcp.log"
}
}
}
}
LSP4J-MCP/
├── pom.xml # Maven build configuration
├── run.sh # Startup script
├── mcp-config.json # Example MCP configuration
├── src/
│ ├── main/
│ │ ├── java/com/devoxx/lsp4jmcp/
│ │ │ ├── client/
│ │ │ │ ├── JdtlsClient.java # LSP client for JDTLS
│ │ │ │ └── JdtlsLanguageClient.java # LSP callback handler
│ │ │ ├── tools/
│ │ │ │ └── JavaTools.java # Tool implementations
│ │ │ └── server/
│ │ │ └── McpServerMain.java # MCP server entry point
│ │ └── resources/
│ │ └── logback.xml # Logging configuration
│ └── test/
│ └── java/com/devoxx/lsp4jmcp/
│ ├── client/JdtlsClientTest.java
│ ├── tools/JavaToolsTest.java
│ └── server/McpServerMainTest.java
└── README.md
Run all tests:
mvn test
Once the MCP server is configured, you can ask your AI assistant questions that will trigger the LSP tools. Here are some examples:
"Find all classes named Repository in this project"
"Search for methods containing 'save' in their name"
"Where is the UserService class defined?"
"List all interfaces in this codebase"
"Find all usages of the
processOrdermethod at line 45 in OrderService.java"
"Where is the
CustomerRepositoryinterface used throughout the codebase?"
"Show me all places that call the constructor at line 12 of PaymentGateway.java"
"What is the definition of the method being called at line 78, column 15 in CheckoutController.java?"
"Take me to the implementation of the interface method at line 23 in MyService.java"
"List all methods and fields in the Customer.java file"
"What symbols are defined in src/main/java/com/example/service/OrderService.java?"
"Give me an overview of the structure of ConfigurationManager.java"
"Which interfaces define a method called 'findById'?"
"Find all classes that have a method named 'process'"
"Show me all interfaces containing the 'validate' method"
"I need to understand how the
authenticatemethod works. First find its definition, then show me all places it's called."
"Refactor help: Find all usages of the deprecated
legacyProcessmethod so I can update them"
"I want to implement a new Repository interface. Show me all existing Repository interfaces and their methods."
Logs are written to the file specified by the LOG_FILE environment variable (default: /tmp/lsp4j-mcp.log).
Note: stdout is reserved for MCP protocol communication, so all logging goes to file.
Claude Code ──MCP──▶ McpServerMain ──LSP4J──▶ JDTLS ──▶ Java Codebase
│
▼
JavaTools
(find_symbols, find_references, etc.)
The server:
MIT