PhpStorm 2026.3 Help

MCP 服务器

从版本 2025.2 开始,PhpStorm 随附集成的 MCP 服务器 ,允许 Claude Code、Codex、VS Code 等外部客户端访问 IDE 提供的工具。 这样,用户无需离开自己选择的应用程序,即可控制 JetBrains IDE 并与之交互。

启用 MCP 服务器插件

此功能依赖于 MCP 服务器插件,该插件默认随 PhpStorm 捆绑并启用。 如果相关功能不可用,请确保您未禁用该插件。

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

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

启用 MCP 服务器

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

  1. 转到 设置 | 工具 | MCP 服务器。

  2. 请选择 启用 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 可以显示横幅,建议配置连接。

要控制此行为:

  1. 转到 设置 | 工具 | MCP 服务器。

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

  3. 点击 应用。

支持的工具

MCP 服务器公开一组工具,允许外部客户端与 IDE 和项目交互,例如分析代码、修改文件、运行配置或执行终端命令。

您可以在 设置 | 工具 | MCP 服务器 | Exposed Tools 中查看和管理所有可用工具列表。 对于每个工具,选中或清除 已启用 复选框,以控制是否将该工具以 Exposed 状态提供给外部客户端。

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 :项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。

构建项目标题

触发项目或指定文件构建,等待完成,并返回构建错误。 使用此工具来构建项目或编译文件,并获取关于编译错误和警告的详细信息。

编辑后需要使用此工具以验证编辑是否有效。

参数:

  • 重新构建 :是否执行项目的完整重构建。 默认值为 false。 仅在未指定 要重新构建的文件 时生效。

  • 要重新构建的文件 :如果已指定,仅编译指定路径的文件。 路径是相对于项目根目录。

  • timeout :超时(毫秒)。

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

get_file_problems

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

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

参数:

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

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

  • timeout :超时(毫秒)。

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

get_project_dependencies

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

参数:

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

get_project_modules

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

参数:

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

检查文件

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

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

参数:

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

  • min_severity :要包含的最低严重性: warning 或 error。 默认为 warning。

  • timeout :超时(毫秒)。

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

代码洞察工具

get_symbol_info

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

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

参数:

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

  • line :从 1 开始的行号。

  • column :从 1 开始的列号。

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

数据库专用工具

要确保 AI 代理具有严格的只读访问权限,请使用具有适当受限(只读)权限的数据库用户,并将数据源配置为使用该用户。

取消 SQL 查询

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

参数:

  • sessionId :查询会话 ID。

创建数据库连接

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

参数:

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

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

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

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

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

编辑数据库连接

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

参数:

  • connectionId :唯一连接 ID。

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

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

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

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

执行 SQL 查询

对给定数据库连接执行 SQL 查询。

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

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

参数:

  • connectionId :唯一连接 ID。

  • queryText :要执行的 SQL 查询。

获取查询结果

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

使用此工具对之前由 执行 SQL 查询 或 预览表数据 返回的 resultSetId 进行分页。

参数:

  • resultSetId (必需):之前的 执行 SQL 查询 或 预览表数据 调用返回的不透明结果集 ID。

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

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

获取数据库对象描述

获取特定架构中数据库对象(列、类型、密钥、索引)的结构,并以层级文本形式表示。

存在歧义时,返回所有适用对象的定义。

参数:

  • connectionId :唯一连接 ID。

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

  • schemaName :架构的名称。

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

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

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

内省架构

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

参数:

  • connectionId :唯一连接 ID。

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

  • schemaName :架构的名称。

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

列出数据库连接

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

列出数据库架构

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

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

参数:

  • connectionId :唯一连接 ID。

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

列出最近的 SQL 查询

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

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

对于每个查询,返回:

  • 查询会话的唯一 ID。

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

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

  • 查询的补全状态。 例如,成功、因错误而完成、已取消等。

  • 查询的文本。

参数:

  • connectionId :唯一连接 ID。

列出架构对象种类

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

参数:

  • connectionId :唯一连接 ID。

列出架构对象

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

参数:

  • connectionId :唯一连接 ID。

  • schemaName :架构的名称。

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

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

预览表数据

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

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

参数:

  • connectionId :唯一连接 ID。

  • schemaName :架构的名称。

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

  • tableName :表的名称。

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

测试数据库连接

返回连接诊断信息:

  • 指示连接是否存在问题的标志:是、否或未知。

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

  • 连接尝试结果的摘要。 如果失败,则包含 DBMS 提供的错误描述。

参数:

  • id :唯一连接 ID。

执行工具

execute_run_configuration

通过名称运行已存在的运行配置,或通过代码位置(filePath + line )创建的临时运行配置,然后等待至指定超时时间完成。 可结合由 获取运行配置 返回的配置名称,或结合由 获取运行配置(filePath = ...) 返回的运行点(filePath + line )使用此工具。

可选的启动重写(程序参数、 工作目录、 环境 )仅在本次运行时应用,不会被持久化。 除非确实需要更改本次运行的启动值,否则不要传递这些重写参数。 缺失或空值的重写参数会保持现有运行配置值不变。 对于字符串重写(程序参数、 工作目录 ),缺失、空值或空字符串("" )会保留现有值不变。 传递仅包含空格的字符串(如 " " )可清除本次启动的现有值。

传递 configurationName 或将 filePath 与 line 一起传递。 这些模式互斥。

行为:

  • 当 等待退出=true 时,最多等待 timeout 毫秒以进程终止。 如果超时,进程会在后台继续运行,结果中会省略 exitCode。

  • 当 等待退出=false 时,仅等待进程启动,然后立即返回而不应用 timeout。

  • 完整输出路径 指向一个包含完整原始输出的临时文件,在进程运行期间可能持续增长。

返回执行结果,包括当前输出快照、可选退出码和可选 完整输出路径。

参数:

  • configurationName :要执行的已存在运行配置的名称。

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

  • line :针对 filePath 的 1 开始行号。 需与 filePath 一起提供,且不要与 configurationName 组合使用。

  • timeout :超时(毫秒)。

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

  • 程序参数 :仅针对本次启动可选程序实参的重写。 缺失、空值或空字符串会保留现有值,仅空格字符串会清空现有值。

  • 工作目录 :仅针对本次启动的可选工作目录重写。 缺失、空值或空字符串会保留现有值,仅空格字符串会清空现有值。

  • 环境 :仅针对本次启动的可选环境变量重写。 若为缺失或空值则保留现有环境变量,若设置了值则覆盖合并到现有环境变量。

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

get_run_configurations

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

未指定 filePath 时,本工具将列出项目已存在的运行配置。 结果包含配置名称,以及可用时启动详情,如程序实参、工作目录、环境变量和 支持动态启动覆盖。

支持动态启动覆盖 是 执行运行配置 和 xdebug 启动调试器会话 中一次性启动重写(程序参数、 工作目录、 环境 )的真实来源能力标志。 仅当该标志对所选配置为 true 时,才传递这些重写参数。

使用 filePath 时,该工具会在该文件中发现可执行文件入口点(运行点),如测试方法、主方法或 IDE 显示运行装订区域图标的其他入口点。 结果包含 filePath 和 运行点 ;可使用返回的行号与 执行运行配置 结合从代码运行。

参数:

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

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

文件工具

create_new_file

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

参数:

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

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

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

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

get_all_open_file_paths

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

参数:

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

list_directory_tree

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

参数:

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

  • maxDepth :最大递归深度。

  • timeout :超时(毫秒)。

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

open_file_in_editor

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

参数:

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

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

格式设置工具

reformat_file

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

参数:

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

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

IDE 操作工具

调用 IDE 操作

按操作 ID 调用 IDE 操作。 用于以编程方式触发任何 IDE 操作(例如,打开工具窗口或切换设置)。

可选通过 文件路径 提供文件/文件夹上下文,以便需要选中文件、文件夹或模块的操作能正确工作(例如 标记排除根、 重新格式化代码、 新建文件)。

参数:

  • 操作 ID :要调用的操作 ID(例如 激活终端工具窗口、 切换演示模式)。

  • 文件路径 :提供给操作的可选文件/文件夹路径(相对于项目根目录)。

搜索 IDE 操作

通过文本查询搜索 IDE 操作。 在调用 调用 IDE 操作之前,可用此方法发现可用的操作。

参数:

  • query :在操作 ID、名称和描述中搜索的文本(不区分大小写子字符串匹配)。

  • 限制 :返回结果的最大数量(默认: 50)。

  • 包含组 :结果中是否包含操作组(默认: false)。

检查生成器 MCP 工具

验证检查 KTS

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

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

返回总体成功情况、每个示例的结果和汇总统计信息。

参数:

  • 检查 KTS 代码 :要编译和验证的 检查.kts 脚本内容。

  • 规范路径 :包含用于验证的示例的规范路径。

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

检查 KTS MCP 工具

生成检查 KTS API

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

参数:

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

  • 包装在标签中 :如果为 true,则将 API 内容包裹在 <API> 和 <api.kt> 标记中。

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

生成检查 KTS 示例

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

参数:

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

  • 包含其他示例 :如果为 true,则除模板外还包含额外精选示例。

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

生成 PSI 树

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

参数:

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

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

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

运行检查 KTS

编译一个 检查.kts 脚本并在目标文件上运行。 返回编译错误(如有)或检查发现的问题列表。 在开发过程中,使用此工具测试 检查.kts 脚本。

参数:

  • 检查 KTS 代码 :要编译和运行的 检查.kts 脚本内容。

  • 上下文路径 :要分析的目标文件在项目内的相对路径(例如, src/my/软件包/Example.kt )。

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

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

检查工具

获取检查

使用 IDE 的检查分析文件。 返回包含严重级别、描述、位置和可用快速修复的问题。 编辑文件后,可用此工具校验代码。

每个问题都包含可用的快速修复,可通过 应用快速修复应用。

参数:

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

  • 最低严重性 :最小严重级别: 错误、 警告、 弱警告、 信息。 默认值: 弱警告。

  • timeout :超时(毫秒)。

应用快速修复

应用快速修复以解决检查问题。

使用 快速修复 信息(来自 获取检查结果)以确定要应用的修复项。 该工具将在指定位置重新运行高亮显示并应用匹配的修复。

参数:

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

  • line :问题所在的 1 基行号。

  • column :问题所在的 1 基列号。

  • 快速修复名称 :要应用的快速修复名称(来自 快速修复[].名称 ,在 获取检查结果中)。

PHP 调试器工具

xdebug_单个_文件

启动对单个 PHP 脚本的 Xdebug 会话。

参数:

  • path :要调试的 PHP 脚本的绝对路径。

xdebug 启动服务器

启动 PHP 内置开发服务器和 Xdebug 监听器。 调用后,使用 xdebug_设置_断点设置断点,然后用 xdebug_请求调试特定 URL。

参数:

  • 项目根目录 :PHP 项目根目录的绝对路径。

  • host :开发服务器要绑定的主机(默认: localhost)。

  • 端口 :开发服务器的端口(默认: 8081)。

xdebug_请求

向开发服务器发起 HTTP 请求并开始调试。 自动建立调试连接并应用所有断点。 返回调试器状态:如果命中断点,会话会暂停,你可以使用 xdebug_堆栈、 xdebug_上下文检查,或用 xdebug_单步跳过/xdebug_单步进入步进。 如果未命中断点,则脚本已运行至补全。

参数:

  • url :要请求的完整 URL,例如 http://127.0.0.1:8081/add?a=3&b=5。

xdebug 停止服务器

停止 PHP 开发服务器和 XDebug 监听器。 调试彻底结束后使用此操作。

参数:none。

xdebug_设置_断点

设置行断点。 可在调试会话前或期间调用。 断点在请求间保持——每次新调用 xdebug_请求时会自动重新应用。

参数:

  • line :要设置断点的行号。

  • 文件 :文件路径(绝对或相对于项目根目录)。 单脚本模式可选。

xdebug 运行

恢复执行至下一个断点或脚本结束。 命中断点时,会话暂停,可进行检查或步进。 脚本结束时,会话也将结束。

参数:none。

xdebug_单步进入

步入下一个函数调用。 会话将在被调用函数的第一行暂停。 使用 xdebug_堆栈和 xdebug_上下文进行检查。

参数:none。

xdebug_单步跳过

执行当前行并在相同作用域的下一行暂停。 使用 xdebug_堆栈和 xdebug_上下文进行检查。

参数:none。

xdebug 单步跳出

运行直到当前函数返回,然后在调用处暂停。 使用 xdebug_堆栈和 xdebug_上下文进行检查。

参数:none。

xdebug_堆栈

返回当前调用堆栈,包括文件路径和行号。 仅在暂停于断点时可用。

参数:none。

xdebug_上下文

返回给定堆栈深度下作用域中的所有变量(默认: 0 = 当前帧)。 包含局部变量和超级全局变量。 仅在暂停于断点时可用。

参数:

  • 堆栈深度 :要检查的堆栈深度(默认: 0 = 当前帧)。

xdebug 状态

返回当前调试器会话状态(正在启动…、 运行中、 break、 正在停止)。

参数:none。

xdebug 暂停

让执行在当前位置暂停。 脚本运行时如需检查当前位置,可用此操作。

参数:none。

xdebug 求值

在当前作用域下评估 PHP 表达式并返回结果。 仅在暂停于断点时可用。 例如: $user->获取名称()、 计数($items)、 $a + $b。

参数:

  • 表达式 :要评估的 PHP 表达式。

xdebug 获取属性

按名称返回特定变量的值。 支持嵌套属性,如 $obj->字段 或 $arr[0]。 仅在暂停于断点时可用。

参数:

  • name :变量名称,例如 $myVar、 $this->字段。

  • 堆栈深度 :要检查的堆栈深度(默认: 0 = 当前帧)。

xdebug 设置属性

更改当前作用域内变量的值。 仅在暂停于断点时可用。

参数:

  • name :变量名称,例如 $myVar。

  • value :新值需为 PHP 文字,例如 42、 \"您好\"、 true。

xdebug_断点_列表

列出 XDebug 引擎当前设置的所有断点。

参数:none。

xdebug 移除断点

按 ID 移除断点。 使用 xdebug_断点_列表查找断点 ID。

参数:

  • id :要移除的断点 ID。

xdebug 分离

结束调试,允许 PHP 脚本正常完成。 在用开发服务器调试时使用此操作——HTTP 响应完成后服务器即可处理下一个 xdebug_请求。

参数:none。

xdebug 停止

立即终止 PHP 脚本并结束调试会话。 与 xdebug_单个_文件单脚本调试时使用。

参数:none。

PHP 项目上下文工具

获取 composer 依赖项

返回项目中已安装的所有 Composer 软件包及其确切版本。

从已建立索引的 composer.lock 数据中读取 —— 无需磁盘 I/O 或网络调用。 在单仓库设置中,包含所有 composer.json 子项目的软件包。

可用于在生成代码之前确定哪些库和版本可用。

参数:

  • 名称筛选器 :用于按名称筛选软件包的 glob 模式(例如 "laravel/*"、 "*phpunit*"、 "symfony/控制台")。 不区分大小写。 省略时返回所有软件包。

获取 PHP 项目配置

返回 PhpStorm 看到的 PHP 项目配置。

包括:已配置的 PHP 语言级别、解释器详情(名称、路径、本地/远程)、PHP 运行时信息(准确版本、已加载扩展程序、 php.ini 路径、调试器)。

该数据来自 IDE 设置及缓存的解释器元数据 —— 无需磁盘 I/O 或网络调用。 可用于在生成或分析代码前,了解项目的 PHP 环境。

语言级别可能与系统 PHP 版本不同(例如项目目标为 8.1,而系统运行 8.3)。 对于远程解释器(Docker/SSH),这是获取 PHP 信息的唯一方式。

参数:none。

补丁工具

应用补丁

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

参数:

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

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

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

读取工具

读取文件

读取项目目录下或任何项目依赖或其他项目源根下的文件。 可读取 Jar/Jrt 文件内的源文件,并反编译 Jar/Jrt 内或磁盘上的 Java 类文件。 以文本形式返回带编号(1 起始)的行。

模式:

  • 切片

  • 行的堆栈跟踪

  • 行_列

  • 偏移量

  • 缩进

模式详情:

  • 切片 使用 起始行 和 最大行数。

  • 行的堆栈跟踪 使用 起始行/结束行 (包含上限)。

  • 行_列 使用 起始行/起始列 和 结束行/结束列 (end 为不包含; 结束行 默认为 起始行)。

  • 偏移量 使用 起始偏移量/结束偏移量 (end 为不包含)。

  • 缩进 使用 起始行 ,并带有 最大级别数/包含_*。

最大行数 限制所有模式下的总输出量; 上下文行 适用于区间模式(每侧)。

参数:

  • 文件路径 :文件路径。 支持项目相对路径、带有 '..' 的路径、绝对路径、类似于 /路径/lib.jar!/pkg/Foo .class 的归档条目,以及如 file:// 、 jar:// 、 jrt:// 这样的 URL。 其他工具返回的任何路径都可以直接传递(例如来自 搜索_* 工具的路径)。

  • mode :读取模式: 切片、 行的堆栈跟踪、 行_列、 偏移量 或 缩进。

  • 起始行 :基于 1 的起始行号。

  • 最大行数 :要返回的最大行数(切片模式下表示行数;所有模式都限制输出数量)。

  • 结束行: 行的堆栈跟踪/行_列 模式下基于 1 的结束行(对 行的堆栈跟踪 为包含,对 行_列 为不包含)。

  • 起始列: 行_列 模式下基于 1 的起始列。

  • 结束列 :范围读取时基于 1 的结束列(不包含)。

  • 起始偏移量 :偏移模式下基于 0 的起始偏移量(需要 结束偏移量)。

  • 结束偏移量 :偏移模式下基于 0 的结束偏移量(不包含)。

  • 上下文行 :需要包含在范围周围的上下文行数(每侧)。

  • 最大级别数 :缩进模式:要包含的最大缩进级别(0 = 只包含锚块)。

  • 包含同级项 :缩进模式:包含处于同一缩进级别的兄弟块。

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

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

重构工具

rename_refactoring

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

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

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

参数:

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

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

  • newName :符号的新名称。

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

搜索工具

搜索文件

根据 glob 模式在项目内搜索文件。 需要使用 glob 语法匹配文件路径时请使用此工具。

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

示例:

  • "**/*.kt"

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

  • "build.gradle.kts"

没有 '/' 的模式将被视为 "**/模式"。 paths 为相对于项目根目录的可选附加 glob 筛选器。

参数:

  • q :要搜索的 glob 模式。

  • paths :用于筛选结果的项目相对 glob 模式的可选列表。 支持 ! 排除。 结尾的 / 会扩展为 **。 没有 / 的模式将被视为 **/pattern。 空字符串会被忽略。

  • 包含已排除项 :是否在结果中包含已排除/已忽略的文件。

  • 限制 :要返回的最大结果数量。

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

搜索正则表达式

在项目文件中查找正则表达式匹配项。 需要正则表达式搜索并带有代码段结果时,请使用此工具。 结果在可用时包含匹配坐标(基于 1 的行/列,基于 0 的偏移量)。

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

示例:

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

  • ["**/*.kt"]

  • ["foo/"]

参数:

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

  • paths :用于筛选结果的项目相对 glob 模式的可选列表。 支持 ! 排除。 结尾的 / 会扩展为 **。 没有 / 的模式将被视为 **/pattern。 空字符串会被忽略。

  • 限制 :要返回的最大结果数量。

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

搜索符号

搜索符号(类、方法、字段)。 用该工具根据标识符片段进行语义查找。 结果在可用时包含匹配坐标(基于 1 的行/列,基于 0 的偏移量)。

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

默认情况下,仅搜索项目符号。 如果未找到合适的结果,请再次尝试使用 包含外部=true 以同时搜索 SDK 和库符号。

参数:

  • q :符号查询文本。

  • paths :用于筛选结果的项目相对 glob 模式的可选列表。 支持 ! 排除。 结尾的 / 会扩展为 **。 没有 / 的模式将被视为 **/pattern。 空字符串会被忽略。

  • 包含外部 :是否包含 SDK 和库符号。 默认情况下为禁用;如未找到合适结果,请再次尝试使用 包含外部=true。

  • 限制 :要返回的最大结果数量。

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

搜索文本

在项目文件中查找文本子字符串。 用于快速文本搜索并带有代码段结果时,请使用此工具。 结果在可用时包含匹配坐标(基于 1 的行/列,基于 0 的偏移量)。

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

示例:

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

  • ["**/*.kt"]

  • ["foo/"]

参数:

  • q :要搜索的文本。

  • paths :用于筛选结果的项目相对 glob 模式的可选列表。 支持 ! 排除。 结尾的 / 会扩展为 **。 没有 / 的模式将被视为 **/pattern。 空字符串会被忽略。

  • 限制 :要返回的最大结果数量。

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

技能搜索工具

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

  • 文件 :glob 路径搜索。

  • text :文字内容搜索。

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

  • symbol :语义符号查找。

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

参数:

  • mode (必需):搜索模式: 文件、 text、 正则表达式 或 symbol。

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

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

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

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

  • 限制 :要返回的最大结果数量。

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

结构搜索

使用结构化搜索(SSR)查找代码模式。 与文本/正则表达式搜索不同,SSR 能够语义化理解代码结构。

模式语法示例(PHP)

基础模式:

  • $a$->$b$()- 任何对象的方法调用。

  • 新建 $Class$()- 任何构造函数调用。

  • 类 $a$ 继承 $b$ {}- 类的继承。

  • $a$ 等于 $b$- 任何赋值操作。

模式中的变量:

  • $name$ 表示模式变量(可匹配该类型的任何元素)。

  • $a${2,5}- 次数约束:匹配 2 到 5 次出现。

  • $a$+- 一次或多次出现。

  • $a$*- 零次或多次出现。

使用 获取结构模式可查看带有描述的预定义 PHP 模式。

已知限制

与 Java SSR 相比,PHP SSR 有一些限制:

  • 某些类修饰符(例如 只读 )可能无法匹配。

  • 带有约束的复杂嵌套模式可能无法如预期那样工作。

  • 使用 获取结构模式可发现可靠运行的模式。

约束

可以通过 约束 参数为模式变量添加约束。 约束中的变量名称不包含美元符号(例如 "b" 代表 $b$):

  • 正则表达式 :根据正则表达式匹配变量文本(例如 "^get.*" ,匹配以"get"开头的方法)。

  • 反转正则表达式 :反转正则表达式匹配(即不匹配时才匹配)。

  • 最小计数/最大计数 :出现次数上下限。

  • 表达式类型 :匹配表达式类型(例如 "字符串"、 "整数")。

约束示例:

{ "b": {"regex": "^get.*", "minCount": 1, "maxCount": 1} }

参数:

  • pattern :要查找的 SSR 模式(例如用于方法调用的 $a$->$b$())。

  • 文件类型 :要搜索的语言文件类型名称(例如 PHP、 Java、 Kotlin、 Python)。

  • directoryToSearch :要搜索的目录,相对于项目根目录。 如果未指定,则搜索整个项目。

  • 约束 :变量约束,格式为从变量名称(不包含美元符号)到约束对象的映射。 示例: {"b": {"正则表达式": "^get.*"}}。

  • 最大结果数 :要返回的最大匹配项数量。 默认值: 100。

  • timeout :超时(毫秒)。

获取结构模式

列出带有描述的预定义 PHP 结构化搜索模式。

这些模式提供了常用的搜索模板,可直接使用或作为创建自定义模式的参考。

类别:

  • 常规 :类、接口、特征定义和结构。

  • 表达式 :赋值、方法调用、字段访问等。

  • 可疑 :可能存在问题的代码模式。

参数:

  • 类别 :按类别筛选模式:'General'、'Expressions'、'Suspicious'。 如未指定,将返回所有模式。

终端工具

execute_terminal_command

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

重要功能和限制:

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

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

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

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

返回的可能响应:

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

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

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

参数:

  • command :要执行的 shell 命令。

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

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

  • timeout :超时(毫秒)。

  • maxLinesCount :返回的最大行数。

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

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

通用工具

执行工具

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

参数:

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

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

VCS 工具

get_repositories

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

参数:

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

Git 状态

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

参数:

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

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

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

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

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

2026年 11月 9日