llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

MCP 服务器

从版本 2025.2 开始,IntelliJ IDEA 随附集成的 MCP 服务器 ,允许 Claude Code、Codex、VS Code 等外部客户端访问 IDE 提供的工具。 这使用户能够在不离开所选应用程序的情况下控制 JetBrains IDE 并与之交互。

启用 MCP 服务器插件

此功能性依赖 MCP 服务器插件,该插件默认在 IntelliJ IDEA 中集成并启用。 如果相关功能不可用,请确保您没有禁用插件。

  1. 按 Ctrl+Alt+S 打开设置,然后选择 插件。

  2. 找到 MCP 服务器 插件并点击 启用。

启用 MCP 服务器

要启用 MCP 服务器,请执行以下操作:

  1. 前往 设置 | 工具 | MCP 服务器。

  2. 请选择 启用 MCP 服务器 复选框。

    选择“启用 MCP 服务器”复选框
  3. 在 启用 MCP 服务器? 对话框中,查看第三方应用程序将获得对 IDE 中已打开项目的哪些访问权限,然后点击 启用 继续。

  4. 点击 应用。

启用 MCP 服务器后,可以继续配置外部客户端。

外部客户端设置

对于检测到的外部客户端,例如 Junie、 VS Code、 Claude Code、 Codex、 Air 和 GitHub Copilot CLI ,可以自动执行配置。 设置客户端意味着将 IDE MCP 服务器的地址添加到该客户端的配置文件中。

为此:

  1. 前往 设置 | 工具 | MCP 服务器。

  2. 在 客户端自动配置 部分,为每个要与 MCP 服务器一起使用的客户端点击 自动配置。 这会自动更新客户端的配置文件。 已配置的传输设置取决于客户端。

    MCP 服务器设置

    要自行配置特定传输,请点击 旁边的 自动配置 ,然后从列表中选择所需选项。

    配置选项
  3. 重启客户端以使配置生效。

项目级客户端设置

某些客户端还会从项目的工作目录读取配置文件。 对于这些客户端,IDE 可以将连接设置直接写入当前打开项目中的配置文件,因此只有在处理该项目时 MCP 服务器才可用。

如果处理多个项目,并且不希望为每个客户端会话注册 MCP 服务器,请使用此选项。

  1. 前往 设置 | 工具 | MCP 服务器。

  2. 在 项目客户端自动配置 部分,为要设置的每个客户端点击 自动配置。 这会自动更新客户端的项目级配置文件。

    自动配置客户端的项目级配置

    如果要配置特定传输机制,请点击 旁边的 自动配置 ,然后从列表中选择所需选项。

  3. 重启客户端以使配置生效。

手动客户端设置

如果要连接的客户端不在列表中,请手动配置。

  1. 在 手动客户端配置 部分,根据连接类型点击 复制 SSE 配置、 复制 Stdio 配置 或 复制 HTTP 流配置。

    MCP 服务器手动配置
  2. 将复制的配置粘贴到您的客户端的设置或配置文件中。

  3. 重启客户端以使配置生效。

无需确认执行操作

MCP 服务器允许已连接的外部客户端在 IDE 中执行终端命令或运行配置,而无需每次都提示用户确认。

要启用此模式:

  1. 前往 设置 | 工具 | MCP 服务器。

  2. 在 命令执行 部分,启用 无需确认即可运行 shell 命令或运行配置(Brave 模式) 设置。

  3. 点击 应用。

在终端会话中显示设置建议

当 Codex 或 Claude 在终端会话中启动且没有匹配的 MCP 服务器设置时,IDE 可以显示横幅,建议配置连接。

在终端中更新 MCP 服务器配置的建议

要控制此行为:

  1. 前往 设置 | 工具 | MCP 服务器。

  2. 在 终端会话 部分,选中或清除 显示 Codex 和 Claude 终端会话的设置建议 复选框。

  3. 点击 应用。

支持的工具

MCP 服务器对外提供一套工具,使外部客户端能够与 IDE 及项目交互,例如分析编码、修改文件、运行配置或执行终端命令。

可在 设置 | 工具 | MCP 服务器 | 暴露工具 中查看和管理全部可用工具列表。 对于每个工具,选中或清除 已启用 复选框,以控制该工具是否向外部客户端公开。

Exposed Tools 设置页面

还可以为工具选中 仅路由器 复选框。 仅路由器工具会从直接 MCP 工具列表中隐藏,并且仅可通过专用路由器 工具使用。 这可避免不必要的工具描述出现在工具列表中,并节省上下文。 使用 为以下对象启用仅路由器模式 设置指定何时应用仅路由器模式,例如用于 所有智能体 或 仅限 ACP 智能体。

下方可查看 MCP 服务器提供的工具列表。

分析工具

分析调用

为方法、函数、构造函数或受支持的类型目标构建 IDE 调用层次结构树。 使用它可以查看谁调用了某个符号(INCOMING_CALLS ),或该符号调用了什么(OUTGOING_CALLS)。

按实际调用评估依赖项时,优先使用此工具,而不是用法搜索、文本搜索或正则表达式搜索。 它使用 IDE 调用层次结构数据,因此与基本搜索相比,可提供更精确的调用关系,噪音更少,后续调用也更少。

将 symbolFqn 作为完全限定名称传递,例如 com.example.Service.run。 如果名称不明确,工具会返回确切签名;请将其中一个作为 symbolFqn 传回。 如果只知道短名称或片段,请先使用 搜索符号 查找目标。

结果是一个可展开的文本树。 每个节点包含 filePath 和 treePath ;如果可能, filePath 是相对于项目的。 将 treePath 传回以渲染子树。 使用 childOffset 在截断的 之后继续…… 以及另外 n 个行。 depth、 maxChildren 和 maxNodes 会限制渲染的树。 当 IDE 能够解析符号时,符号可以来自项目源、源 jar 或反编译的二进制 jar 依赖项。

参数:

  • symbolFqn (必需): 普通的完全限定符号名称,或由歧义错误返回或从渲染的子节点复制的确切签名。 如果只知道短名称或片段,请先使用 搜索符号 ,并在此处传递最佳的完全限定可调用名称。 示例: com.example.Service.run、 com.example.Service.run(String) 或 org.assertj.core.api.Assertions.assertThat(String)。 不要传递文件路径、行、列或单独的目标签名。

  • analysisKind (必需): 调用分析方向。 使用 INCOMING_CALLS 显示 symbolFqn 的调用方,或使用 OUTGOING_CALLS 显示从 symbolFqn 调用的符号。

  • depth: 在请求的子树根下渲染的最大调用级别数。 默认为 5。 使用 0 仅渲染子树根。

  • maxChildren: 为每个节点渲染的直接子级最大数量。 默认为 50。

  • maxNodes: 渲染的调用节点总数上限。 默认为 1000。

  • treePath: 子树根的可选路径,从先前的 分析调用 结果中精确复制。 Null 或省略表示根路径 []。 每个组件都是确切签名,而不是显示名称。

  • childOffset: 对由 treePath 指定的节点的直接子级进行分页的偏移量。 默认为 0。

  • timeout :超时(毫秒)。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

构建项目标题

触发器会构建项目或指定文件,等待补全后返回构建错误。 使用此工具可构建项目或编译文件,并获取编译错误和警告的详细信息。

编辑完成后,必须使用此工具验证编辑是否有效。

参数:

  • rebuild :是否执行项目的完整重建。 默认值为 false。 仅当未指定 filesToRebuild 时有效。

  • filesToRebuild :如指定,仅编译指定路径的文件。 路径为相对于项目根目录。

  • timeout :超时(毫秒)。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

get_file_problems

使用 IntelliJ 检查分析指定文件中的错误和警告。 使用此工具识别特定文件中的代码问题、语法错误及其他问题。

返回问题列表,包括严重性、描述和位置信息。

参数:

  • filePath :相对于项目根目录的路径。

  • errorsOnly :是否仅包含错误,或同时包含错误和警告。

  • timeout :超时(毫秒)。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

get_project_dependencies

返回项目中定义的所有依赖项列表。 提供有关库名称的结构化信息。

参数:

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

get_project_modules

返回项目中所有模块及其类型的列表。 提供每个模块的结构化信息,包括其名称和类型。

参数:

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

lint_files

使用 IntelliJ 检查分析指定文件中的错误和警告。 编辑多个文件后,使用此工具对其进行 lint 检查。 返回每个文件的问题,包括严重性、描述和位置信息。

当单个文件超出可用预算时,批处理响应可能包含带有 timedOut: true 且 problems 为空的文件条目。 带有 notAnalyzedReason 的文件条目表示无法分析的文件,例如项目内容根之外的文件、已排除的文件或不支持的文件类型。 顶层 more: true 表示批处理不完整。

参数:

  • 文件 (必需): 要分析的项目相对文件列表。 规范化后会忽略重复路径。

  • min_severity: 要包含的最低严重性: 警告 或 错误。 默认为 警告。

  • timeout :超时(毫秒)。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

代码洞察工具

get_symbol_info

检索指定文件中指定位置的符号信息。 提供与 IntelliJ IDEA 的 快速文档 功能相同的信息。 这些信息可能包括符号的名称、签名、类型、文档及其他详细信息,具体取决于编程语言。

如果该位置引用了某个符号,且声明可用,该工具将返回包含该符号声明的代码片段。 使用此工具了解符号的声明、语义及位置。

参数:

  • filePath :相对于项目根目录的路径。

  • line :从 1 开始的行号。

  • 列 :从 1 开始的列号。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

特定于数据库的工具

要确保 AI 代理只能以只读方式访问,请使用权限受限(只读)的数据库用户,并将数据源配置为使用该用户。

cancel_sql_query

使用其唯一ID取消正在运行的查询。

参数:

  • sessionId :查询会话ID。

创建数据库连接

按名称、DBMS(dbms )、JDBC URL(url )以及用于检查连接的标志(needToCheckDs )创建新的数据库连接(数据源)。 所有形参均为必填项。 返回连接诊断信息。

参数:

  • 名称 (必需): 数据库连接的唯一名称。

  • dbms: 数据库管理系统(DBMS)的名称。

  • url: 数据库连接的完整 JDBC URL,例如 jdbc:postgresql://<host>:<port>/<database>。

  • needToCheckDs: 是否在创建或编辑数据源后立即测试连接。 批量配置多个连接时设置为 false — 每个连接的探测成本很高,并且可以针对重要连接显式调用 test_database_connection。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

编辑数据库连接

编辑由 connectionId 标识的现有数据库连接(数据源)。 更新连接的 DBMS 驱动程序和 JDBC URL;保留连接 名称。 返回连接诊断信息。

参数:

  • connectionId :唯一的连接ID。

  • dbms: 数据库管理系统(DBMS)的名称。

  • url: 数据库连接的完整 JDBC URL,例如 jdbc:postgresql://<host>:<port>/<database>。

  • needToCheckDs: 是否在创建或编辑数据源后立即测试连接。 批量配置多个连接时设置为 false — 每个连接的探测成本很高,并且可以针对重要连接显式调用 test_database_connection。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

execute_sql_query

针对指定的数据库连接执行SQL查询。

工具会报告执行状态:成功或错误。 对于错误,还会提供错误描述。

如果查询返回数据,将以 CSV 格式附加到工具响应中。

参数:

  • connectionId :唯一的连接ID。

  • queryText :要执行的SQL查询。

获取查询结果

按 ID 从已执行的查询中获取行,从给定的行偏移量开始。 返回与 execute_sql_query 相同的形状: resultSetId 以及 CSV 格式的渲染结果。

使用此工具对先前由 execute_sql_query 或 preview_table_data 返回的 resultSetId 进行分页。

参数:

  • resultSetId (必需): 由先前 execute_sql_query 或 preview_table_data 调用返回的不透明结果集 ID。

  • offset (必需): 开始获取的行偏移量。 默认为 0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

获取数据库对象描述

获取特定架构内数据库对象(列、类型、密钥、索引)的结构,并以分层文本展示。

如有歧义,返回所有适用对象的定义。

参数:

  • connectionId :唯一的连接ID。

  • databaseName :架构所属数据库的名称。 如果DBMS只有架构而没有数据库,则可以为空。

  • schemaName :架构名称。

  • kind :将此参数设置为特定对象类型代码,仅列出此类型的对象。 设置为null即可检索架构中的所有对象。

  • objectName :指定类型的对象名称(如表或视图名)。 不得为空。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

内省架构

内省数据库架构,将其元数据(表、列和索引)加载到本地模型中。 当架构的 isIntrospected 标志为 false 且需要调查架构结构,或刷新过时的元数据时,请使用此项。 返回架构标识符以及更新后的内省状态。

参数:

  • connectionId :唯一的连接ID。

  • databaseName :架构所属数据库的名称。 如果DBMS只有架构而没有数据库,则可以为空。

  • schemaName :架构名称。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

list_database_connections

检索项目中已配置的数据库连接或数据源列表。 对于每个连接,返回其唯一 ID、名称、DBMS 和驱动程序名称。

list_database_schemas

检索指定数据库连接中的数据库架构列表。

对于每个架构,工具会返回架构自身的名称以及数据库名称(如不适用则为空)。

参数:

  • connectionId :唯一的连接ID。

  • selectedOnly :如果只应列出在数据库树中选定的架构,则为True;如果应列出所有架构,则为False。

list_recent_sql_queries

此功能在免费订阅方案中不可用。

检索指定数据库连接的最近查询列表,包括当前正在运行的查询。

对于每个查询返回:

  • 查询会话的唯一ID。

  • 运行该查询所花费的时间(以毫秒为单位)。

  • 查询的当前状态。 例如,运行中、取消中、已完成等。

  • 查询的完成状态。 例如,成功、出错完成、已取消等。

  • 查询的文本。

参数:

  • connectionId :唯一的连接ID。

list_schema_object_kinds

检索给定数据库连接支持的架构对象类型列表。 对于每个对象类型,返回对象类型的唯一代码和可读名称。

参数:

  • connectionId :唯一的连接ID。

list_schema_objects

检索给定架构中的数据库对象列表。 对于每个对象,返回其在架构中的名称及类型。

参数:

  • connectionId :唯一的连接ID。

  • schemaName :架构名称。

  • databaseName :架构所属数据库的名称。 如果DBMS只有架构而没有数据库,则可以为空。

  • kind :将此参数设置为特定对象类型代码,仅列出此类型的对象。 设置为null即可检索架构中的所有对象。

preview_table_data

使用指定的数据库连接返回表、视图、物化视图或其他类表对象的预览数据。

工具以CSV格式返回表内容。

参数:

  • connectionId :唯一的连接ID。

  • schemaName :架构名称。

  • databaseName :架构所属数据库的名称。 如果DBMS只有架构而没有数据库,则可以为空。

  • tableName :表名称。

  • maxRowCount :要返回的最大行数。 默认值为 100。

test_database_connection

返回连接诊断信息:

  • 标记连接是否存在问题:是、否或未知。

  • 关于数据库连接的详细信息,如 DBMS 类型、版本和 JDBC 驱动程序。

  • 连接尝试结果摘要。 在失败的情况下,包含DBMS提供的错误描述。

参数:

  • id :唯一的连接ID。

调试器工具

这些工具使外部客户端能够控制 IDE 的调试器: 它可以设置、列出和移除断点,启动调试会话并逐步执行,以及在运行时检查调用堆栈、线程和变量值。

xdebug 控制会话

控制调试会话的执行。 用此工具可步进执行编码、恢复执行、暂停或停止调试会话。

前提条件:

  • 必须存在调试会话。

  • STEP_* 和 RESUME 需要会话处于挂起状态。

操作:

  • STEP_INTO :步入下一个方法调用

  • STEP_OVER :步过当前行

  • STEP_OUT :步出当前方法

  • RESUME :恢复程序执行直到下一个断点

  • PAUSE :暂停程序执行

  • STOP :停止调试会话

  • WAIT_FOR_PAUSE :等待会话暂停(命中断点或手动暂停)

  • DRAIN_EVENTS :为会话排出跟踪点输出(所有操作都会排除断点错误)

重要说明:

  • 如果程序正在运行,应在 WAIT_FOR_PAUSE 或 PAUSE 之后再进行 STEP_*/RESUME 操作。

  • 使用来自 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 的当前 sessionId。 如果会话停止、超时或消失,请在下次会话范围调用前刷新会话列表。

  • RESUME不会设置断点。 如果没有启用断点(或接下来不会命中任何断点),程序可能会运行到补全并且会话会在未暂停的情况下停止。

  • RESUME后,请调用 WAIT_FOR_PAUSE以确认下次暂停。 如 WAIT_FOR_PAUSE超时,请考虑 PAUSE并重新检查断点。

  • DRAIN_EVENTS同样需要存在会话;会话结束后请勿复用过期的 sessionId。

下次调用:

结果中的状态值:

  • running :程序正在执行

  • paused :执行已挂起(断点、步进或手动暂停);暂停结果还包括 frameValues ,即当前帧的快照(如有则为 xdebug_get_frame_values(depth=0) 格式)

  • stopped :调试会话已终止

  • 任意操作都会返回 breakpointErrorsTail

  • tracepointOutputsTail 仅在 DRAIN_EVENTS 时返回

事件支持作用域:

  • 断点错误和跟踪点输出事件目前仅由基于 JVM 的调试器(Java、Kotlin 等)报告。

  • 在其他调试器后端,即使已配置断点/日志,这些事件尾部也可能为空。

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • action :要执行的操作: STEP_INTO、 STEP_OVER、 STEP_OUT、 RESUME、 PAUSE、 STOP、 WAIT_FOR_PAUSE、 DRAIN_EVENTS。 事件排除目前仅由基于 JVM 的调试器(Java、Kotlin 等)生成。

  • timeout :等待操作补全的超时时间,单位为毫秒。 建议: STEP_*/PAUSE 通常 5000-15000; WAIT_FOR_PAUSE 通常 30000-120000,具体取决于工作负载与断点。 默认值:30000。

  • eventsLimit :每个事件列表最多排除的最新事件数量。 对于 DRAIN_EVENTS ,此限制分别作用于 breakpointErrorsTail 和 tracepointOutputsTail。 默认值:100。

  • clearEventsAfterRead :兼容性标志。 返回的事件始终会从内部缓冲区中移除,无论此值为何。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 求值表达式

在当前堆栈帧上下文中评估表达式。 使用此工具可计算值、调用方法或在调试时检查表达式。

前提条件:

  • 会话必须处于挂起状态。

  • 所选帧/语言必须支持求值。

  • 表达式 必须为当前帧语言的有效表达式。

结果返回如下:

  • depth == 0 :仅为已求值表达式的展示

  • depth > 0 :展示及其子项的伪图形树,直至请求深度

输入规则:

  • 原样传递表达式文本,以便调试器求值器正确解析。

  • 请勿传递 JSON 转义负载或如 \\"text\\" 等文字转义序列。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • frameIndex :堆栈帧索引,整数(0 为顶层帧)。 请从当前暂停的 xdebug 获取堆栈 结果获取,不要在 RESUME、 STEP_*、 xdebug_run_to_line 或暂停位置发生变化后复用已缓存的帧索引。 如果为 null,则使用最顶层帧。 默认值:null。

  • 表达式 :在当前上下文中要计算的表达式。 需传递当前帧语言下的原始表达式文本,不要传递经过 JSON 转义的载荷或文字反斜杠转义的带引用文本。

  • depth :展开计算结果的子节点的最大深度(0 = 仅值,1 = 直接子节点,2 = 子节点及其子节点,依此类推)。 默认值:0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 获取调试器状态

返回调试器的当前状态,包括所有活动的调试会话。 使用此工具可查看所有运行中的调试会话及其状态概览。

前提条件:

  • 无。

返回显式的 sessions[] 和 activeSessionId。

下次调用:

  • 如果没有会话正在运行,则调用 xdebug_启动_调试器_会话。

  • 如有多个会话处于活动状态,在后续调用中请将返回的 id 用作 sessionId。

参数:

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 获取帧值

以树结构返回指定堆栈帧中可见的值。 使用此工具可检查调用堆栈中特定点的局部变量、形参、字段或其它可用值。

前提条件:

  • 会话必须处于挂起状态。

  • 帧索引应来源于当前暂停的 xdebug 获取堆栈 结果(0 = 最顶层帧)。

格式:

  • 拥有子节点的节点会通过 + 进行标记。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • frameIndex :堆栈帧索引,整数(0 为顶层帧)。 请从当前暂停的 xdebug 获取堆栈 结果获取,不要在 RESUME、 STEP_*、 xdebug_run_to_line 或暂停位置发生变化后复用已缓存的帧索引。 如果为 null,则使用最顶层帧。 默认值:null。

  • depth :展开计算结果的子节点的最大深度(0 = 仅值,1 = 直接子节点,2 = 子节点及其子节点,依此类推)。 默认值:0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 获取堆栈

返回调试会话中某线程的调用堆栈。 使用此工具可查看导致当前执行点的方法调用顺序。

前提条件:

  • 会话必须处于挂起状态。

行为:

  • threadId 应来自 xdebug 获取线程 ,并与调试器线程显示名称一致(默认为活动线程)。

  • 即使源位置信息缺失,也会包含帧(file/line 可能为 null)。

分页:

  • offset/limit 在收集全栈后应用。

帧字段包括:

  • index

  • file

  • line

  • isCurrent

  • presentation

file 按调试器提供的方式报告(不进行路径规范化)。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • threadId :需要获取堆栈的线程 ID。 该值应来自 xdebug 获取线程 ,并与调试器线程显示名称一致,而非不透明的数字 ID。 如未指定,则使用当前/活动线程。 默认值:null。

  • limit :返回的最大帧数。 默认值:200。

  • offset :分页偏移。 默认值:0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 获取线程

返回调试会话中的线程列表。 使用此工具可查看所有线程及其当前状态。

前提条件:

  • 会话必须处于挂起状态。

下次调用:

分页:

  • offset/limit 在收集所有堆栈后应用。

排序:

  • 活动线程优先。

  • 剩余线程按堆栈深度降序排列。

架构字段包括:

  • id

  • 名称

  • state

  • isCurrent

  • additionalInfo

  • additionalInfoTooltip

  • frameCount

additionalInfo/additionalInfoTooltip 在可用时使用额外的显示信息。

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • limit :分页大小。 默认值:50,最大值:200。

  • offset :分页偏移。 默认值:0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 按路径获取值

通过属性名称路径获取嵌套对象的值。 使用此工具可深入复杂对象并检查其嵌套属性。

前提条件:

  • 会话必须处于挂起状态。

  • 路径不能为空,且需引用选中帧/对象中可见的名称。

结果返回如下:

  • depth == 0 :仅呈现指定路径处的值

  • depth > 0 :呈现值以及其子节点到请求深度的伪图形树

示例:

  • 要获取 obj.field.subField 的值,请使用 path = ["obj", "field", "subField"]。

  • 对于数组/列表索引器,将索引符号作为普通路径元素(子节点名称)传递,例如 items[0].name-> path = ["items", "[0]", "name"]。

  • 请使用当前暂停 xdebug 获取帧值/ 上一次 xdebug 按路径获取值 输出中的确切子节点名称,因为索引节点名称可能因语言/调试器不同而异(例如 "[0]" 和 "0")。

  • 在 RESUME、 STEP_*、 xdebug_run_to_line 或其它暂停位置变化后,需刷新 路径 令牌。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • frameIndex :堆栈帧索引,整数(0 为顶层帧)。 请从当前暂停的 xdebug 获取堆栈 结果获取,不要在 RESUME、 STEP_*、 xdebug_run_to_line 或暂停位置发生变化后复用已缓存的帧索引。 如果为 null,则使用最顶层帧。 默认值:null。

  • 路径 :需要遍历的子节点名称列表,例如 ['myObject', 'field', 'subField'] 或 ['items', '[0]', 'name']。 请使用当前暂停 xdebug 获取帧值/xdebug 按路径获取值 输出中的确切节点名称,并在暂停位置变化后刷新已失效的路径令牌。

  • depth :展开计算结果的子节点的最大深度(0 = 仅值,1 = 直接子节点,2 = 子节点及其子节点,依此类推)。 默认值:0。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 列出断点

列出项目或指定文件中的所有断点。 使用此工具可查看当前已设置的所有断点及其属性。

行为:

  • 如果提供了 filePath ,仅返回该文件中的断点。

  • 为每个断点返回丰富的特性(id、 类型、 file、 line、 已启用、 owner、 condition、 isLogMessage、 isLogStack、 temporary、 suspendPolicy、 hitCount)。

下次调用:

  • 如不存在合适的断点,则调用 xdebug_设置_断点。

  • 然后继续执行 xdebug_control_session(action=RESUME) 和 xdebug_control_session(action=WAIT_FOR_PAUSE)。

参数:

  • filePath :可选文件路径,用于作为断点筛选器。 文件路径。 支持项目相对路径、带有 .. 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo.class 的归档项及如 file:// 、 jar:// 与 jrt:// 等 URL。 可以直接传递其他工具返回的任何路径(例如,来自 search_* 工具的路径)。 如未指定,则返回所有断点。 默认值:null。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 移除断点

移除按拥有者和可选选择器筛选器筛选的断点。 使用此工具可移除之前设置的断点。

行为:

  • owner 默认值为 agent。

  • 如仅提供 owner ,则移除该拥有者的所有断点。

  • 如果提供了 breakpointId ,则移除所选拥有者的匹配断点。

  • 如果提供了 filePath + line ,则移除所选拥有者的匹配行断点。

  • 如提供多个选择器,则全部合并(逻辑与)。

  • 幂等性:移除不存在的断点会返回 removed=false。

  • 若要移除所有断点,无论拥有者如何,请调用两次:一次用 owner=user ,一次用 owner=agent。

下次调用:

参数:

  • breakpointId :由 xdebug_设置_断点 或 xdebug_列出_断点 返回的规范断点 ID。

  • filePath :可选文件路径,用于作为断点筛选器。 文件路径。 支持项目相对路径、带有 .. 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo.class 的归档项及如 file:// 、 jar:// 与 jrt:// 等 URL。 可以直接传递其他工具返回的任何路径(例如,来自 search_* 工具的路径)。 如未指定,则返回所有断点。 默认值:null。

  • line :可选输入,移除断点的行号(从1开始)。

  • owner :断点拥有者筛选器。 默认值:agent。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug_run_to_line

恢复执行到目标行位置。 使用此工具可运行到指定源代码位置,无需手动步进。

前提条件:

  • 会话必须处于挂起状态。

  • 目标文件/行必须有效。

结果:

  • paused :会话在目标处或之后暂停。

  • stopped :会话在暂停前已终止。

  • timeout :在超时窗口内未暂停/停止。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • filePath :相对于项目根目录的路径。

  • line :目标行号(从1开始)。

  • timeout :等待暂停/停止结果的超时时间,单位为毫秒。 默认值:30000。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 设置断点

创建或更新断点。 使用此工具可设置行断点,通过 ID 更新现有断点,并控制跟踪点/日志行为。

目标模式:

  • 按位置:提供 filePath + line ,并省略 breakpointId (或传递 null)。 请勿使用如 ""、 "/" 或 "__omit__" 这样的占位符字符串。

  • 按 ID:提供由 xdebug_设置_断点 或 xdebug_列出_断点 返回的现有不透明规范 breakpointId (可选 filePath/line 可移动行断点)。

验证:

  • 定位模式下, filePath 和 line 均为必填项。

  • ID 模式下,断点必须存在并由 breakpointId 唯一标识。

  • 定位模式下, filePath 相对项目根目录, line 从 1 开始,且目标位置必须是可执行文件。

事件报告:

  • 无效的 condition 表达式会通过 xdebug_control_session(...).breakpointErrorsTail 异步报告。

  • 来自具有 isLogMessage 和/或 isLogStack 断点的跟踪点输出会通过 xdebug_control_session(action=DRAIN_EVENTS).tracepointOutputsTail 进行收集。

  • 断点错误及跟踪点输出报告目前仅支持基于 JVM 的调试器(Java、Kotlin 等)。

  • 一次成功的 xdebug_设置_断点 响应并不保证 condition 或跟踪点表达式有效;请在依赖前检查后续 breakpointErrorsTail。

  • 成功的行断点响应还会包含 lineText ,即当前断点所在实际源代码行的截取片段。 请在恢复前检查以确认断点位置。

应用语义:

  • 提供的字段会作为目标断点的结果状态应用。

  • condition=null 会清除现有条件。

  • isLogMessage=true 记录断点命中位置。

  • isLogStack=true 记录当前堆栈跟踪。

  • 如两个标志均为 true,则同时日志位置与堆栈。

  • 在 isLogMessage/isLogStack + suspendPolicy=NONE 情况下,断点表现为跟踪点。

  • ID 模式下,若为行断点提供了 filePath/line ,则会在新位置重新定位(重建)该断点。

  • ID 模式下,对于非行断点, filePath/line 会被忽略并在 消息 中报告。

  • 任一操作成功后,该断点会被标记为 agent 拥有(mcpBreakpointMarker)。

下次调用:

  • 请使用返回的 lineText 和/或 xdebug_列出_断点 验证断点位置。

  • 通过 xdebug_start_debugger_session 或 xdebug_control_session(action=RESUME) 启动或继续执行。

参数:

  • breakpointId :由 xdebug_设置_断点 或 xdebug_列出_断点 返回的规范断点 ID。

  • filePath :可选文件路径,用于作为断点筛选器。 文件路径。 支持项目相对路径、带有 .. 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo.class 的归档项及如 file:// 、 jar:// 与 jrt:// 等 URL。 可以直接传递其他工具返回的任何路径(例如,来自 search_* 工具的路径)。 如未指定,则返回所有断点。 默认值:null。

  • line :从 1 开始的行号。 仅在定位模式下必需。 在 ID 模式下可选,用于重新定位行断点。

  • condition :可选条件表达式——仅当该表达式为 true 时断点触发器才会触发。 验证错误将通过 xdebug_control_session(...).breakpointErrorsTail (仅限基于 JVM 的调试器)异步报告。 默认值:null。

  • isLogMessage :到达断点时是否日志断点命中位置(源代码位置)。 在基于 JVM 的调试器中,可以通过 xdebug_control_session(action=DRAIN_EVENTS).tracepointOutputsTail 获得输出。 默认值:false。

  • isLogStack :到达断点时是否日志堆栈跟踪。 在基于 JVM 的调试器中,可以通过 xdebug_control_session(action=DRAIN_EVENTS).tracepointOutputsTail 获得输出。 默认值:false。

  • temporary :临时断点(首次命中后移除)。 默认值:false。

  • suspendPolicy :挂起策略: ALL、 THREAD、 NONE。 默认值: ALL。

  • 已启用 :断点是否启用。 默认值:true。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug 设置变量

在选定的堆栈帧中通过路径修改变量值。 可通过本工具在调试过程中更改状态。

前提条件:

路径格式设置与 xdebug 按路径获取值 相同。 newValue 必须是当前帧所用语言中的原始表达式,并且必须可由调试器/求值器赋给目标值。 请勿传递 JSON 转义的内容或如 \\"text\\" 这样的文字转义序列。

结果:

  • 返回 oldValue/newValue/applied。

  • 不支持的变更将返回包含文本的出错消息。

下次调用:

参数:

  • sessionId :调试会话 ID。 请使用 xdebug 获取调试器状态 或 xdebug_启动_调试器_会话 返回的当前 ID。 如果会话停止、超时或消失,在复用旧 ID 前请刷新会话列表。 格式设置:默认以会话名称作为 ID;如有多个会话同名,ID 为 <sessionName>#<executionId>。 如为 null 且仅有一个活动会话,将自动选择该会话。 如有多个会话处于活动状态且未指定 sessionId ,调用将失败。 默认值:null。

  • frameIndex :堆栈帧索引,整数(0 为顶层帧)。 请从当前暂停的 xdebug 获取堆栈 结果获取,不要在 RESUME、 STEP_*、 xdebug_run_to_line 或暂停位置发生变化后复用已缓存的帧索引。 如果为 null,则使用最顶层帧。 默认值:null。

  • 路径 :目标值路径,格式设置与 xdebug 按路径获取值 相同。 请使用当前暂停 xdebug 获取帧值/xdebug 按路径获取值 输出中的精确节点名称,并在暂停位置变化后刷新过期的路径标记。

  • newValue :要赋值的新值表达式。 请传递当前帧语言下的原始表达式文本,需可由调试器/求值器赋给目标值。 不要传递 JSON 转义内容或文字反斜杠转义的带引用文本。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

xdebug_start_debugger_session

为当前项目中现有的运行配置(按名称)或编码位置 filePath + line 启动调试器会话。 使用本工具可启动调试器会话。 可与现有运行配置名称或 filePath + line 一同使用本工具。 使用 filePath + line 时,runnable 方法行(如 main )、测试或其他可执行文件入口点基本都适用。 如不确定可用哪一行, 获取运行配置 可帮助发现文件中的 runnable 位置。 会话启动后,可用其他调试器工具来控制执行过程。

前提条件:

  • 使用 configurationName 时,需传递完整的现有运行配置名称;请勿传递测试方法名称或其他派生目标标识符。

  • 使用 filePath + line 时,请指向 runnable 编码位置,如 main 、测试或其他可执行文件入口点。

  • 请先设置至少一个断点,否则程序可能会直接运行到补全而不会暂停。

  • 只可传递 configurationName ,或 filePath 连同 line。 这些模式互斥。

行为:

  • 等待会话创建,最长 timeout。

  • 会话开始后应用延迟等待(graceWaitMs )并返回已刷新状态。

  • 可选的启动参数重写(programArguments、 workingDirectory、 envs )仅针对本次调试生效,不会持久保存。

  • 获取运行配置 为重写支持的权威来源:仅当所选运行配置报告 supportsDynamicLaunchOverrides=true 时才传递重写参数。

  • 仅在确实需要更改本次调试启动值时才传递这些覆写形参。

  • 缺省/空的覆写形参会保持现有运行配置值不变。

  • 对于字符串类重写(programArguments、 workingDirectory ),缺省/空或空字符串("" )会保持现有值不变。

  • 如需清空本次调试的现有值,可传递仅包含空格的字符串,如 " "。

下次调用:

返回带有调试器会话元数据的平面结果,还包含来自启动的执行快照字段:

  • sessionId、 名称、 状态 ,以及可选的 runConfigurationName

  • 输出 预览和可选的 fullOutputPath

  • 进程已知终止时可选 exitCode

参数:

  • configurationName :要调试的现有运行配置名称。

  • filePath :相对于项目根目录的文件路径。 需与 line 一起提供,以便从编码位置开始调试。

  • line: filePath 的从 1 开始的行号。 需与 filePath 一起提供,勿与 configurationName 混用。

  • timeout :等待调试会话启动的超时毫秒数。 默认值:60000。

  • graceWaitMs :会话开始后用于刷新状态的延迟等待,单位为毫秒。 默认值:2000。

  • programArguments :本次启动可选的程序实参重写。 仅当所选运行配置在 get_run_configurations 中报告 supportsDynamicLaunchOverrides=true 时才可传递。 缺省/空或空字符串会保持现有值不变;仅空格字符串会清空该值。

  • workingDirectory :本次启动可选的工作目录重写。 仅当所选运行配置在 get_run_configurations 中报告 supportsDynamicLaunchOverrides=true 时才可传递。 缺省/空或空字符串会保持现有值不变;仅空格字符串会清空该值。

  • envs :仅本次启动的可选环境变量重写。 仅当所选运行配置在 获取运行配置 中报告 supportsDynamicLaunchOverrides=true 时才可传递。 缺省/空将保持现有环境变量不变;如传递,则新值与现有环境合并。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

执行工具

execute_run_configuration

运行当前项目中按名称指定的现有运行配置或基于编码位置 filePath + line 创建的临时运行配置,并等待其在指定超时内执行完毕。 本工具可与 获取运行配置 返回的配置名称或 get_run_configurations(filePath = ...) 返回的运行点(filePath + line )一同使用。

可选启动参数重写(programArguments、 workingDirectory、 envs )仅对本次运行生效,且不会被持久保存。 仅在确实需要更改本次运行的配置形参或值时才传递这些覆写形参。 缺省/空的覆写形参会保持现有运行配置值不变。 对于字符串类重写(programArguments、 workingDirectory ),缺省/空或空字符串("" )会保持现有值不变。 如需清空本次运行的现有值,可传递仅包含空格的字符串,如 " "。

只可传递 configurationName ,或 filePath 连同 line。 这些模式互斥。

行为:

  • waitForExit=true 时,最多等待 timeout 毫秒以等待进程终止。 超时后,进程会继续在后台运行,结果中将不包含 exitCode。

  • waitForExit=false 时,仅等待进程启动,随后立即返回且不应用 timeout。

  • fullOutputPath 指向包含完整原始输出的临时文件,并且进程存活时该文件可能持续增长。

返回执行结果,包括当前输出快照、可选退出码及可选 fullOutputPath。

参数:

  • configurationName :要执行的现有运行配置名称。

  • filePath :相对于项目根目录的文件路径。 需与 line 一起提供,以从编码上下文创建并执行临时运行配置。

  • line: filePath 的从 1 开始的行号。 需与 filePath 一起提供,勿与 configurationName 混用。

  • timeout :超时(毫秒)。

  • waitForExit :是否等待进程终止。 如为 false,工具将在进程启动后立刻返回并忽略 timeout。

  • programArguments :本次启动可选的程序实参重写。 缺省/空或空字符串会保持现有值不变;仅空格字符串会清空该值。

  • workingDirectory :本次启动可选的工作目录重写。 缺省/空或空字符串会保持现有值不变;仅空格字符串会清空该值。

  • envs :仅本次启动的可选环境变量重写。 缺省/空将保持现有环境变量不变;如传递,则新值与现有环境合并。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

get_run_configurations

根据输入,返回项目运行配置或可执行文件编码位置。

未使用 filePath 时,此工具会列出项目中已有的运行配置。 结果包含配置名称,并在有可用信息时,包含如程序实参、工作目录、环境变量及 supportsDynamicLaunchOverrides 启动详情。

supportsDynamicLaunchOverrides 是 执行运行配置 和 xdebug 启动调试器会话 中一次性启动重写(programArguments、 workingDirectory、 envs )的核心功能标志。 仅当该标志为选定配置的 true 时,才传递这些覆写形参。

有了 filePath 后,该工具会在该文件内发现可执行文件入口点(运行点),如测试方法、main 方法或 IDE 显示 Run 装订区域图标的其它可执行文件入口点。 结果包含 filePath 和 runPoints ,可结合 执行运行配置 返回的行号从编码中运行。

参数:

  • filePath :相对于项目根目录的可选文件路径。 提供该参数时,返回文件内的运行点(可执行文件入口点),而不是项目范围的运行配置。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

文件工具

create_new_file

在项目目录中的指定路径创建新文件。 可选择将提供的文本写入该文件。

参数:

  • pathInProject :应创建文件的路径,相对于项目根目录。

  • 文本 (可选):要写入新文件的内容。

  • overwrite :是否覆盖现有文件。 如果设置为 false ,发生冲突时将抛出异常。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

get_all_open_file_paths

返回在活动编辑器或任何其他已打开的编辑器中打开进行编辑的所有文件的路径,相对于项目根目录。 使用此工具探索当前打开的编辑器。

参数:

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

list_directory_tree

以伪图形格式提供指定目录的树形表示,类似于 树 实用工具。 使用此工具浏览目录或整个项目的内容。 列出目录时,优先使用此工具,而非 ls 或 dir 等命令行实用工具。

参数:

  • directoryPath :相对于项目根目录的路径。

  • maxDepth :最大递归深度。

  • timeout :超时(毫秒)。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

open_file_in_editor

在 JetBrains IDE 编辑器中打开指定文件。 需要一个 filePath 参数,其中包含要打开的文件路径。 文件路径可以是绝对路径,也可以是相对于项目根目录的路径。

参数:

  • filePath :相对于项目根目录的路径。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

格式设置工具

reformat_file

在 JetBrains IDE 中重新格式化指定文件。 使用此工具对通过其路径标识的文件应用代码格式化。

参数:

  • 路径 :相对于项目根目录的路径。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

检查生成器 MCP 工具

校验检查 kts

根据规范示例验证 inspection.kts 脚本。 编译检查并在正例/反例上运行。 返回编译状态和详细验证结果。

正例应能触发器检查(预期存在问题)。 反例不应触发器检查(禁止行不应有问题)。

返回整体成功与否、各示例结果以及统计信息。

参数:

  • inspectionKtsCode :要编译和验证的 inspection.kts 脚本内容。

  • pathToSpecification :带示例的规范文件路径,用于验证。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

检查 KTS MCP 工具

生成检查 kts API

返回目标语言的检查 KTS API 文档。 提供可用于编写 inspection.kts 文件的类和函数/方法。

参数:

  • language :目标语言:'Java' 或 'Kotlin'。

  • wrapInTags :如为 true,则 API 内容将被已包装在 <API> 和 <api.kt> 标记内。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

生成检查 kts 示例

返回用于目标语言代码生成指导的示例 inspection.kts 模板。 提供已包装为 XML 的示例,展示如何使用 InspectionKts API 编写检查。

参数:

  • language :目标语言:'Java' 或 'Kotlin'。

  • includeAdditionalExamples :如为 true,则包含除模板外的额外精选示例。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

生成 PSI 树

为提供的 Java 或 Kotlin 编码创建 PSI 树,并以缩进文本形式返回。 编写检查时,可用此工具了解代码段的 PSI 结构。 输出显示元素类型及其层次结构,并提示什么时候需要 node.children()。

参数:

  • 代码 :要解析的源代码段。

  • language :目标语言:'Java' 或 'Kotlin'。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

运行检查 kts

编译 inspection.kts 脚本并在目标文件上运行。 如有,则返回编译错误;否则返回检查发现的问题列表。 开发过程中可用此工具测试 inspection.kts 脚本。

参数:

  • inspectionKtsCode :要编译并运行的 inspection.kts 脚本内容。

  • contextPath :项目内目标文件的相对路径(如 src/my/package/Example.kt )。

  • targetFileContent :要分析的目标文件内容。 如未提供,则目标文件必须在项目中存在。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

补丁工具

应用补丁

应用 Codex 应用补丁 格式或统一 Git 差异格式的补丁。 支持 Add、Delete 和 Update 操作,并为更新提供可选的移动目标路径。 路径必须位于项目目录内。

参数:

  • input: 应用补丁 格式或统一 Git 差异格式的补丁文本。

  • patch: input 的别名,用于兼容发送 {patch: ...} 的客户端。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

读取工具

读取文件

读取项目目录中的文件,或项目依赖、其它项目源根中的文件。 可读取 Jar/Jrt 文件内的源文件,并反编译 Jar/Jrt 文件或磁盘上的 Java class 文件。 以编号(从 1 开始)的文本返回行内容。

模式:

  • slice

  • lines

  • line_columns

  • offsets

  • indentation

模式详情:

  • slice 会使用 start_line 和 max_lines。

  • lines 会使用 start_line/end_line (包含端点)。

  • line_columns 会用 start_line/start_column 和 end_line/end_column (结束 为排除端点, end_line 默认为 start_line)。

  • offsets 会使用 start_offset/end_offset (结束 为排除端点)。

  • indentation 会结合 start_line 与 max_levels/include_* 使用。

max_lines 用于限定所有模式下的输出总量; context_lines 用于区间模式(每侧)。

参数:

  • file_path :文件路径。 支持项目相对路径、带有 '..' 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo .class 的归档项及如 file:// 、 jar:// 与 jrt:// 等 URL。 可以直接传递其他工具返回的任何路径(例如,来自 search_* 工具的路径)。

  • 模式 :读取模式: slice、 lines、 line_columns、 offsets 或 indentation。

  • start_line :读取的起始行号(1 起)。

  • max_lines :返回的最大行数(切片为行数;所有模式都有限制)。

  • end_line: lines/line_columns 模式下基于 1 的结束行号(lines 为包含、 line_columns 为排除)。

  • start_column: line_columns 模式下基于 1 的起始列号。

  • end_column :区间读取时的结束列号码(排除端点,从 1 开始)。

  • start_offset :偏移模式下的起始偏移量(从 0 开始,需 end_offset)。

  • end_offset :偏移模式下的结束偏移量(排除端点,0 起)。

  • context_lines :区间每侧所包含的上下文行数。

  • max_levels :缩进模式:最大缩进级数(0 只含锚块)。

  • include_siblings :缩进模式:包含同级的相邻代码块。

  • include_header :缩进模式:包含位于锚点正上方的页眉注释/注解块。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

重构工具

rename_refactoring

重命名指定文件中的符号(变量、函数、类等)。 使用此工具执行重命名重构操作。

与简单的文本查找并替换不同, rename_refactoring 工具是理解代码结构的上下文感知型实用工具。 它会智能更新整个项目中对指定符号的所有引用,确保代码完整性并防止引用失效。 它始终是重命名编程符号的首选方法。

如果重命名操作成功,该工具将返回成功消息;如果找不到文件或符号,或重命名操作失败,则返回错误消息。

参数:

  • pathInProject :相对于项目根目录的路径。

  • symbolName :要重命名的符号名称。

  • newName :符号的新名称。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

搜索工具

搜索文件

在项目中通过 glob 模式搜索文件。 需要用 glob 语法匹配文件路径时,可用此工具。

Glob 模式相对于项目根目录。

示例:

  • "**/*.kt"

  • "src/**/Foo*.java"

  • "build.gradle.kts"

未带 '/' 的模式视为 "**/pattern"。 paths 为可选的额外 glob 筛选器,相对项目根目录。

参数:

  • q :要搜索的 glob 模式。

  • paths :用于作为结果筛选器的可选项目根目录下 glob 模式列表。 支持 ! 排除。 末尾 / 会扩展为 **。 未带 / 的模式视为 **/pattern。 空字符串会被忽略。

  • includeExcluded :是否将被排除/忽略的文件纳入结果。

  • limit :返回的最大结果数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

正则表达式搜索

在项目文件中进行正则表达式匹配搜索。 需要正则表达式搜索并返回代码段结果时,请用此工具。 结果如有,包含匹配坐标(行/列从1,偏移从0)。

路径为相对于项目根目录的 glob 模式。

示例:

  • ["src/**", "!**/test/**"]

  • ["**/*.kt"]

  • ["foo/"]

参数:

  • q :要搜索的正则表达式模式。

  • paths :用于作为结果筛选器的可选项目根目录下 glob 模式列表。 支持 ! 排除。 末尾 / 会扩展为 **。 未带 / 的模式视为 **/pattern。 空字符串会被忽略。

  • limit :返回的最大结果数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

搜索符号

搜索符号(类、方法、字段)。 可用此工具按标识符片段语义查找。 结果如有,包含匹配坐标(行/列从1,偏移从0)。

路径为相对于项目根目录的 glob 模式。

默认仅搜索项目符号。 若未找到合适结果,可尝试用 include_external=true 同时搜索 SDK 和库符号。

参数:

  • q :符号查询内容。

  • paths :用于作为结果筛选器的可选项目根目录下 glob 模式列表。 支持 ! 排除。 末尾 / 会扩展为 **。 未带 / 的模式视为 **/pattern。 空字符串会被忽略。

  • include_external :是否包含 SDK 和库符号。 默认关闭;如找不到合适结果,可尝试用 include_external=true。

  • limit :返回的最大结果数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

搜索文本

在项目文件中搜索文本子字符串。 需要快速文本搜索与代码段结果时,可用此工具。 结果如有,包含匹配坐标(行/列从1,偏移从0)。

路径为相对于项目根目录的 glob 模式。

示例:

  • ["src/**", "!**/test/**"]

  • ["**/*.kt"]

  • ["foo/"]

参数:

  • q :要搜索的文本。

  • paths :用于作为结果筛选器的可选项目根目录下 glob 模式列表。 支持 ! 排除。 末尾 / 会扩展为 **。 未带 / 的模式视为 **/pattern。 空字符串会被忽略。

  • limit :返回的最大结果数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

Skill Search 工具

使用显式模式执行统一项目搜索:

  • file :glob 路径搜索。

  • 文本 :文字内容搜索。

  • regex :正则表达式内容搜索。

  • symbol :语义符号查找。

符号搜索默认聚焦于项目。 如果找不到合适的符号,请使用 include_external=true 重试,以同时搜索 SDK 和库符号。

参数:

  • 模式 (必需):搜索模式: file、 文本、 regex 或 symbol。

  • q (必需):搜索查询。 对于 mode=file ,这是一个 glob 模式。

  • paths :可选的项目相对 glob 筛选器。 支持 !-excludes 和尾随的 /。

  • include_external :是否为 mode=symbol 包含 SDK 和库符号。 默认禁用;如果找不到合适的内容,请使用 include_external=true 重试。

  • includeExcluded :是否包含已排除或已忽略的文件。 仅支持 mode=file。

  • limit :返回的最大结果数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

终端工具

execute_terminal_command

在 IDE 的集成终端中执行指定的 shell 命令。 使用此工具在 IDE 环境中运行终端命令。

重要功能和限制:

  • 在收集输出之前检查进程是否在运行。

  • 将输出限制为 2000 行(超出部分将被截断)。

  • 在指定的超时时间后超时,并发出通知。

  • 除非在设置中启用了 Brave Mode ,否则需要用户确认。

返回的可能响应:

  • 终端输出(超过 2000 行时将被截断)。

  • 如果命令超时,输出将包含中断通知。

  • 针对各种失败情况的错误消息。

参数:

  • 命令 :要执行的 shell 命令。

  • executeInShell :是否在用户的默认 shell(bash、zsh 等)中执行该命令。 如果该命令是 shell 脚本,或需要保留用户终端的真实环境,则非常有用。 如果设置为 false ,将以进程方式启动该命令。

  • reuseExistingTerminalWindow :是否重用现有终端窗口,以避免创建多个终端。

  • timeout :超时(毫秒)。

  • maxLinesCount :返回的最大行数。

  • truncateMode :如何截断文本:从开头、中间、末尾截断,或不截断。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

通用工具

execute_tool

通用工具执行器,可从命令行字符串动态调用特定的 IDE MCP 工具。

参数:

  • 命令 (必需):包含工具名称和实参的命令行字符串。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

VCS 工具

get_repositories

检索项目中的 VCS 根目录列表。 在多仓库项目中使用此工具识别所有仓库。

参数:

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

Git 状态

检索当前项目中一个或多个仓库的 Git 状态。 返回 porcelain 风格的索引和工作树状态代码以及摘要计数器。 默认返回所有 Git 仓库。

参数:

  • repositoryPathRelativeToProject :可选的相对于项目根目录的路径,用于选择包含该路径的单个仓库。

  • includeUntracked :是否包含未跟踪的文件。

  • includeIgnored :是否包含已忽略的文件。

  • limit :每个仓库返回的最大条目数。

  • projectPath :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

2026年 11月 3日