| name | java-lsp-tools |
|---|---|
| description | Compiler-accurate Java symbol navigation via the Java Language Server. Use lsp_java_findSymbol for Java identifiers and lsp_java_getFileStructure for known Java files; prefer them over generic search only for symbol/file-outline navigation. |
Two compiler-accurate tools backed by the Java Language Server (jdtls). They return structured JSON that is easier to interpret than generic search results for Java symbol navigation.
Search for Java symbol definitions (classes, methods, fields) by name across the workspace. Supports partial matching.
- Input:
{ query, limit? }— limit defaults to 20, max 50 - Output:
{ results: [{ name, kind, container?, file, startLine, endLine, readFileInput, range }], total };readFileInputis{ filePath, offset, limit }forread_file, andfilecan be passed tolsp_java_getFileStructure - Use instead of
grep_search,file_search,semantic_search, orsearch_subagentwhen looking for where a Java class/method/field is defined by identifier - When source is needed for a returned symbol, use its
readFileInputdirectly
Get hierarchical outline of a Java file (classes, methods, fields) with line ranges.
- Input:
{ uri, limit? }— workspace-relative path plus max outline items. Preferfilefromlsp_java_findSymbol; limit defaults to 20, max 60. Must be a known path from prior tool results or user input — do not guess - Output:
{ file, symbols: [{ name, kind, startLine, endLine, readFileRange, range, detail?, children? }], truncated? }; callread_filewithfilePath=fileand the selected symbol'sreadFileRange - Use before
read_filewhen you need to choose a precise line range in a known Java file
| Task | Use | Not |
|---|---|---|
| Find class/method/field definition | lsp_java_findSymbol |
grep_search |
| See known Java file outline before reading | lsp_java_getFileStructure |
read_file full file |
| Search non-Java files (xml, gradle) | grep_search |
lsp tools |
| Search string literals or comments | grep_search |
lsp tools |
| Explore broad concepts without identifiers | semantic_search or search_subagent |
lsp tools |
lsp_java_findSymbol → lsp_java_getFileStructure → read_file (specific lines only)
If lsp_java_findSymbol returns relevant symbols and source is needed, call read_file with the returned readFileInput, or call lsp_java_getFileStructure with the returned file when broader file context is needed.
findSymbolreturns empty → it already retried internally with a normalized identifier, so do not re-issue the same search. If the result says indexing is in progress, retry once after a short pause; otherwise fall back togrep_search- Path error (
fileNotFound) → usefindSymbolto discover the correct path first; do not guess paths - Tool error / jdtls not ready → fall back to
grep_search+read_file, don't retry more than once