Skip to main content
Glama
Kicey
by Kicey
README.md
# JDTLS MCP Server

A Model Context Protocol (MCP) server that provides Java language support by wrapping the Eclipse JDT Language Server (JDTLS). 

This server allows AI assistants to understand Java codebases, search symbols, navigate code (definition, references, implementations), and read third-party `.class` files natively.

## Features

This server exposes the following MCP tools:

- `java_workspace_symbols`: Search for classes, interfaces, and methods across the entire workspace.
- `java_document_symbols`: Get the hierarchical outline of a specific file.
- `java_definition`: Find the definition of a symbol at a specific location.
- `java_references`: Find usages of a symbol at a specific location.
- `java_implementations`: Find implementations of a symbol at a specific location.
- `java_hover`: Get Javadoc and type signature for a symbol.
- `java_class_content`: Fetch the source code for a class located inside a third-party jar (handles `jdt://` URIs).

## Requirements

1. **Node.js**: v16 or higher.
2. **JDTLS**: Eclipse JDT Language Server must be installed on your machine and the `jdtls` executable must be available in your system's `PATH`.

## Installation

We recommend building and linking the package globally. This makes the `jdtls-mcp` command available everywhere and makes future updates easy.

```bash
# Clone the repository
git clone https://github.com/Kicey/jdtls-mcp.git
cd jdtls-mcp

# Install dependencies
npm install

# Build the TypeScript code
npm run build

# Link the package globally
npm link
```

*To update the server later, simply run `git pull` followed by `npm run build` in the repository folder.*

---

## Usage & Configuration Examples

Below are configuration examples for adding this MCP server to various AI coding assistants now that it is linked globally.

### Claude Desktop

Add the following to your `claude_desktop_config.json` file:

```json
{
  "mcpServers": {
    "jdtls": {
      "command": "jdtls-mcp",
      "args": []
    }
  }
}
```

### Cursor

To use with Cursor, open **Settings** > **Features** > **MCP Servers** and add a new server:
- **Type**: `command`
- **Name**: `jdtls`
- **Command**: `jdtls-mcp`

### Claude Code (CLI)

If you are using the official `claude` CLI, you can add the server by running:

```bash
claude mcp add jdtls -- jdtls-mcp
```

### Codex / Cline / Roo Code (VS Code Extensions)

For VS Code extensions that support MCP (like Roo Code / Cline), configure the server in your MCP settings file (typically `cline_mcp_settings.json`):

```json
{
  "mcpServers": {
    "jdtls": {
      "command": "jdtls-mcp",
      "args": []
    }
  }
}
```

## Architecture Notes

- The server manages `jdtls` processes automatically per workspace.
- The processes will gracefully shut down after 30 minutes of inactivity to save resources.
- Required `workspacePath` arguments should be absolute paths to the root of the target Java project.

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: fetching class content, finding definitions, document outline, hover info, implementations, references, and workspace symbol search. No overlap in purposes.

Naming Consistency5/5

All tools follow a consistent 'java_<noun>' pattern with snake_case naming. The prefix and noun structure is uniform across the set.

Tool Count5/5

7 tools is an appropriate number for a code navigation server. It covers essential browsing operations without being excessive or insufficient.

Completeness4/5

The tool set covers core code exploration: definition, references, implementations, hover, document outline, and symbol search. Missing features like code completion or diagnostics, but the set is reasonable for static analysis.

Maintenance

ActivityStale
ResponsivenessNo issues