This document lists all available MCP (Model Context Protocol) tools provided by the IntelliJ MCP Server.
Available Tools
| Tool Name | Description |
|---|---|
analyze_calls |
Builds the IDE Call Hierarchy tree for a method, function, constructor, or supported type target. Use it to see who calls a symbol ( INCOMING_CALLS) or what the symbol calls (OUTGOING_CALLS).Strongly prefer this tool over usage search, text search, or regex search when evaluating dependencies by actual calls. It uses IDE call hierarchy data, so it provides more precise call relationships with less noise and fewer follow-up calls than primitive searches. Pass symbolFqn as a fully qualified name, for example com.example.Service.run.If the name is ambiguous, the tool returns exact signatures; pass one of them back as symbolFqn.If you only know a short name or fragment, use search_symbol first to find the target.The result is an expandable text tree. Each node includes filePath and treePath; filePath is project-relative when possible.Pass treePath back to render the subtree.Use childOffset to continue after a truncated … and n more line.depth, maxChildren, and maxNodes bound the rendered tree.Symbols can come from project sources, source jars, or decompiled binary jar dependencies when the IDE can resolve them. Known limitation (2026.2): resolution fails for PHP and C#, where every symbolFqn form returns No callable symbol found (MCP analyze_calls always returns "No callable symbol found" for PHP symbols (JavaScript resolves in the same project), MCP analyze_calls always returns "No callable symbol found" for C# methods). For TypeScript the call can resolve to an unrelated class of the same name (analyze_calls resolves TypeScript constructors to unrelated same-named symbols). JavaScript resolves correctly in the same session, as do search_symbol, get_symbol_info, and Call Hierarchy inside the IDE, so the gap is in the MCP call-hierarchy resolver rather than in language indexing. For the affected languages, locate the symbol with search_symbol and find its call sites with search_text or search_regex, keeping in mind that text search does not distinguish same-named methods declared on different classes. |
apply_patch |
Apply a patch using the Codex apply_patch format or unified git diff format. Supports Add, Delete, and Update operations with optional Move to path for updates. Paths must stay inside the project directory. |
build_project |
Triggers building of the project or specified files, waits for completion, and returns build errors. Use this tool to build the project or compile files and get detailed information about compilation errors and warnings. You have to use this tool after performing edits to validate if the edits are valid. |
create_new_file |
Creates a new file at the specified path within the project directory and optionally populates it with text if provided. Use this tool to generate new files in your project structure. Note: Creates any necessary parent directories automatically |
execute_run_configuration |
Run either an existing run configuration by name or a temporary run configuration created from a code location (filePath + line) in the current project, then wait up to specified timeout for it to finish.Use this tool with either a configuration name returned by get_run_configurations, or with a run point( filePath + line) returned by get_run_configurations(filePath = ...).Optional launch overrides ( programArguments, workingDirectory, envs) are applied only for this run and are not persisted.Do not pass these override parameters unless you explicitly need to change the configured launch values for this run. Missing/null override parameters keep existing run configuration values unchanged. For string overrides ( programArguments, workingDirectory), missing/null or empty string ("") keeps the existing value unchanged.Pass a whitespace-only string such as " " to clear an existing value for this launch.Pass either configurationName, or filePath together with line.These modes are mutually exclusive. Behavior: - When waitForExit=true, waits up to timeout milliseconds for process termination.If the timeout expires, the process keeps running in the background and exitCode is omitted from the result.- When waitForExit=false, waits only for the process to start, then returns immediately without applying timeout.- fullOutputPath points to a temp file with the full raw output and may continue growing while the process is alive.Returns the execution result including current output snapshot, optional exit code, and optional fullOutputPath. |
execute_terminal_command |
Executes a specified shell command in the IDE's integrated terminal. Use this tool to run terminal commands within the IDE environment. Requires a command parameter containing the shell command to execute. Important features and limitations: - Checks if process is running before collecting output - Limits output to 2000 lines (truncates excess) - Times out after specified timeout with notification - Requires user confirmation unless "Brave Mode" is enabled in settings Returns possible responses: - Terminal output (truncated if > 2000 lines) - Output with interruption notice if timed out - Error messages for various failure cases |
execute_tool |
Universal tool executor that can invoke specific IDE MCP tool dynamically. |
get_all_open_file_paths |
Returns active editor's and other open editors' file paths relative to the project root. Use this tool to explore current open editors. |
get_file_problems |
Analyzes the specified file for errors and warnings using IntelliJ's inspections. Use this tool to identify coding issues, syntax errors, and other problems in a specific file. Returns a list of problems found in the file, including severity, description, and location information. Note: Only analyzes files within the project directory. Note: Lines and Columns are 1-based. |
get_project_dependencies |
Get a list of all dependencies defined in the project. Includes JPS module libraries and ecosystem-specific dependencies contributed by language plugins. (e.g. package.json, deno.json dependencies) Each entry has a name and, when known, a version, a dependencyType (e.g. devDependencies), and a source (e.g. jps-library, package.json). Returns structured information about project library names. |
get_project_modules |
Get a list of all modules in the project with their types. Returns structured information about each module including name and type. |
get_repositories |
Retrieves the list of VCS roots in the project. This is useful to detect all repositories in a multi-repository project. |
get_run_configurations |
Returns either project run configurations or executable code locations, depending on the input. Without filePath, this tool lists the project's existing run configurations.The result includes configuration names and, when available, launch details such as program arguments, working directory, environment variables, and supportsDynamicLaunchOverrides.supportsDynamicLaunchOverrides is the source-of-truth capability flag for one-time launch overrides( programArguments, workingDirectory, envs) in execute_run_configuration and xdebug_start_debugger_session.Only pass those override parameters when this flag is true for the selected configuration.With filePath, this tool discovers executable entry points (run points) in that file, such as test methods,main methods, or other executable entry points where the IDE shows a Run gutter icon. The result contains filePath andrunPoints; use the returned line numbers with execute_run_configuration to run from code. |
get_symbol_info |
Retrieves information about the symbol at the specified position in the specified file. Provides the same information as Quick Documentation feature of IntelliJ IDEA does. This tool is useful for getting information about the symbol at the specified position in the specified file. The information may include the symbol's name, signature, type, documentation, etc. It depends on a particular language. If the position has a reference to a symbol the tool will return a piece of code with the declaration of the symbol if possible. Use this tool to understand symbols declaration, semantics, where it's declared, etc. |
git_status |
Retrieves Git status for one or more repositories in the current project. Returns porcelain-style index/worktree status codes and summary counters. By default all Git repositories are returned. |
lint_files |
Analyzes the specified files for errors and warnings using IntelliJ's inspections. Use this tool to lint several files after editing them. Returns per-file problems with severity, description, and location information. Batch responses may include file entries with timedOut: true and empty problems when individual files exceed the available budget.File entries with a notAnalyzedReason indicate files that could not be analyzed (e.g., outside project content roots, excluded, or unsupported file type).Top-level more: true means the batch is incomplete.min_severity must be warning or error; defaults to warning.Note: Only analyzes files within the project directory. Note: Lines and Columns are 1-based. |
list_directory_tree |
Provides a tree representation of the specified directory in the pseudo graphic format like tree utility does.Use this tool to explore the contents of a directory or the whole project. You MUST prefer this tool over listing directories via command line utilities like ls or dir. |
open_file_in_editor |
Opens the specified file in the JetBrains IDE editor. Requires a filePath parameter containing the path to the file to open. The file path can be absolute or relative to the project root. |
read_file |
Reads a file in the project directory or from any project dependency or other project source root. Can read sources inside Jar/Jrt files and decompile Java class files inside Jar/Jrt files or on disk. Returns numbered lines (1-indexed) as text. By default, reads up to 2000 lines starting from the beginning of the file. The maximum accepted limit is 5000 lines. |
reformat_file |
Reformats the specified files in the JetBrains IDE. Use this tool to apply code formatting rules to files identified by their project-relative paths. |
rename_refactoring |
Renames a symbol (variable, function, class, etc.) in the specified file. Use this tool to perform rename refactoring operations. The rename_refactoring tool is a powerful, context-aware utility.Unlike a simple text search-and-replace, it understands the code's structure and will intelligently update ALL references to the specified symbol throughout the project, ensuring code integrity and preventing broken references. It is ALWAYS the preferred method for renaming programmatic symbols. Requires three parameters: - pathInProject: The relative path to the file from the project's root directory (e.g., src/api/controllers/userController.js)- symbolName: The exact, case-sensitive name of the existing symbol to be renamed (e.g., getUserData)- newName: The new, case-sensitive name for the symbol (e.g., fetchUserData).Returns a success message if the rename operation was successful. Returns an error message if the file or symbol cannot be found or the rename operation failed. |
search_file |
Searches for files by glob pattern within the project. Use this tool when you need to match file paths using glob syntax. Glob patterns are relative to the project root. Examples: "/*.kt", "src//Foo*.java", "build.gradle.kts". Patterns without '/' are treated as "**/pattern". Paths are optional additional glob filters relative to the project root. |
search_regex |
Searches for regex matches within project files. Use this tool when you need regex search with match coordinates. Results include match coordinates when available (1-based line/column, end exclusive). Paths are glob patterns relative to the project root. Examples: ["src/", "!/test/"], ["/*.kt"], ["foo/"]. |
search_symbol |
Searches for symbols (classes, methods, fields). Use this tool for semantic lookup by identifier fragments. Results include match coordinates when available (1-based line/column, end exclusive). For call graph questions, use this only to locate the target symbol, then pass the fully qualified callable name to analyze_calls instead of using text search or Find Usages manually.Paths are glob patterns relative to the project root. By default this searches project symbols only. If you don't find a suitable result, try again with include_external=true to search SDK and library symbols too. |
search_text |
Searches for a text substring within project files. Use this tool for fast text search with match coordinates. Results include match coordinates when available (1-based line/column, end exclusive). Paths are glob patterns relative to the project root. Examples: ["src/", "!/test/"], ["/*.kt"], ["foo/"]. |
For more commands: upvote the feature request MCP: Advanced refactoring tools
Comments
0 comments
Please sign in to leave a comment.