# JavaLens

Сервер даёт ИИ-агенту 75 инструментов семантического анализа Java на движке Eclipse JDT: поиск ссылок, рефакторинг, разбор типов. Пригодится, когда текстовый поиск путает перегрузки и реализации.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 45
- Автор: pzalutski-pixel
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/pzalutski-pixel/javalens-mcp
- Обновлён: 2026-10-18
- HTML: https://affpapa.org/nevibecode/mcp/javalens

## Что делает

JavaLens подключается к агенту как MCP-сервер и отвечает на вопросы о коде через Eclipse JDT Core — тот же движок, что стоит в Eclipse IDE. Отсюда точность: инструмент различает чтение и запись поля, находит касты, аннотации, блоки `catch`, проверки `instanceof`, ссылки на методы и аргументы обобщённых типов. Поиск идёт по индексу, который JDT строит при загрузке проекта, а не перебором файлов.

Внутри 75 инструментов: навигация по символам, поиск реализаций, рефакторинг вроде переименования и извлечения метода, метрики вроде цикломатической сложности, поиск мёртвого кода и тестов, которые транзитивно покрывают символ. Парсится исходник от Java 1.1 до 25, включая markdown-Javadoc и компактные файлы. Lombok-члены тоже резолвятся: в поставку входит агент, поэтому аксессоры от `@Data` не выглядят неопределёнными.

Для запуска нужна Java 21 или новее в `PATH` либо заданный `JAVA_HOME` — это условие для обоих способов установки. Node.js 18+ понадобится только если ставить через `npx`; при загрузке архива с релизов он не нужен. Проект подхватывается асинхронно: сервер отвечает сразу, а статус загрузки показывает `health_check`. Без Java 21 сервер просто не стартует, так что проверьте версию до установки.

Учтите смещение моделей: агенты чаще тянутся к `grep` и чтению файлов, даже когда семантический разбор точнее. В `CLAUDE.md` стоит прописать, чтобы для Java использовались инструменты JavaLens, а не текстовый поиск.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `JAVA_PROJECT_PATH`, `JAVALENS_TIMEOUT_SECONDS`, `JAVALENS_LOG_LEVEL` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env JAVA_PROJECT_PATH=<JAVA_PROJECT_PATH> --env JAVALENS_TIMEOUT_SECONDS=<JAVALENS_TIMEOUT_SECONDS> --env JAVALENS_LOG_LEVEL=<JAVALENS_LOG_LEVEL> --transport stdio javalens -- npx -y javalens-mcp
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add javalens --env JAVA_PROJECT_PATH=<JAVA_PROJECT_PATH> --env JAVALENS_TIMEOUT_SECONDS=<JAVALENS_TIMEOUT_SECONDS> --env JAVALENS_LOG_LEVEL=<JAVALENS_LOG_LEVEL> -- npx -y javalens-mcp
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "javalens": {
            "command": "npx",
            "args": [
                "-y",
                "javalens-mcp"
            ],
            "env": {
                "JAVA_PROJECT_PATH": "<JAVA_PROJECT_PATH>",
                "JAVALENS_TIMEOUT_SECONDS": "<JAVALENS_TIMEOUT_SECONDS>",
                "JAVALENS_LOG_LEVEL": "<JAVALENS_LOG_LEVEL>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "javalens": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "javalens-mcp"
            ],
            "env": {
                "JAVA_PROJECT_PATH": "<JAVA_PROJECT_PATH>",
                "JAVALENS_TIMEOUT_SECONDS": "<JAVALENS_TIMEOUT_SECONDS>",
                "JAVALENS_LOG_LEVEL": "<JAVALENS_LOG_LEVEL>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e JAVA_PROJECT_PATH=<JAVA_PROJECT_PATH> -e JAVALENS_TIMEOUT_SECONDS=<JAVALENS_TIMEOUT_SECONDS> -e JAVALENS_LOG_LEVEL=<JAVALENS_LOG_LEVEL> javalens npx -y javalens-mcp
```
Вместо <…> подставьте свои значения

## Когда брать
- найти все вызовы метода, не путая одноимённые методы из чужих классов
- отличить запись в поле от чтения
- собрать список реализаций интерфейса, а не любых упоминаний типа
- переименовать символ безопасно по всему проекту
- посчитать цикломатическую сложность метода

## Примеры запросов агенту
- Найди через JavaLens все вызовы `UserService.save()` в проекте
- Покажи реализации интерфейса `PaymentGateway` и где каждая используется
- Переименуй метод `calcTotal` в `calculateTotal` по всему проекту

## Похожие
- [Serena MCP: the IDE for your agent](https://affpapa.org/nevibecode/mcp/serena-mcp-the-ide-for-your-agent.md) — MCP-сервер · ★ 30677
- [Compiler Explorer](https://affpapa.org/nevibecode/mcp/compiler-explorer.md) — MCP-сервер · ★ 19148
- [Claude Code Explorer MCP](https://affpapa.org/nevibecode/mcp/claude-code-explorer-mcp.md) — MCP-сервер · ★ 6235
- [Tolgee](https://affpapa.org/nevibecode/mcp/tolgee.md) — MCP-сервер · ★ 4139
- [jshookmcp](https://affpapa.org/nevibecode/mcp/jshookmcp.md) — MCP-сервер · ★ 2061
- [pyscn](https://affpapa.org/nevibecode/mcp/pyscn.md) — MCP-сервер · ★ 1096

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
