
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.
SKILL.md
Java LSP Tools
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.
Tools
lsp_java_findSymbol
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
lsp_java_getFileStructure
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
When to Use
| 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 |
Typical Workflow
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.
Fallback
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
More from Microsoft
View publisherplaywright-trace
inspect Playwright trace files
playwright
Apr 6DebuggingPlaywrightTestingrushstack-best-practices
manage Rush monorepos with best practices
rushstack
Apr 6EngineeringLocal DevelopmentMicrosoftProject Management +1azure-ai-agents-persistent-dotnet
build AI agents with Azure .NET SDK
skills
Jul 3.NETAgentsAzureLLMazure-ai-anomalydetector-java
build anomaly detection applications with Java
skills
May 13AnalyticsAzureData AnalysisJava +2azure-ai-contentsafety-java
build content moderation applications with Azure AI
skills
Jul 7AI InfrastructureAzureJavaSecurityazure-ai-contentsafety-py
detect harmful content with Azure AI Content Safety
skills
Jul 18AzureComplianceLLMMicrosoft +2