PhpStorm 2026.2 Help

MCP 服务器

2025.2 版本起,PhpStorm 随附集成的 MCP server ,允许 Claude Desktop、Cursor、Codex、VS Code 等外部客户端访问 IDE 提供的工具。 这使用户能够在其首选应用中控制并与 JetBrains IDE 交互。

启用 MCP 服务器插件

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

  1. Ctrl+Alt+S 打开设置,然后选择 Plugins

  2. 打开 已安装 选项卡,找到 MCP 服务器 插件,然后选择插件名称旁边的复选框。

外部客户端设置

对于 Claude CodeClaude DesktopCursorVS CodeCodexWindsurf 等外部客户端,可自动完成配置:

  1. 在主菜单中,进入 设置 | 工具 | MCP Server.

  2. 点击 启用 MCP Server

  3. 客户端自动配置 部分中,为每一个要与 MCP server 配合使用的客户端点击 自动配置。 这将自动更新其 JSON 配置。

    MCP 服务器设置
  4. 请重启客户端以使配置生效。

如果您希望从其他客户端连接到 MCP server,则需要进行手动配置:

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

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

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

无需确认执行操作

MCP server 允许已连接的外部客户端无需每次都用户确认即可在 IDE 中执行终端命令或运行配置。

要启用此模式:

  1. 在主菜单中,进入 设置 | 工具 | MCP Server.

  2. 命令执行 部分,启用 在无需确认的情况下运行 shell 命令或运行配置(大胆模式) 设置。

  3. 点击 Apply

支持的工具

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

您可以在 设置 | 工具 | MCP 服务器 | Exposed Tools 中查看和管理所有可用工具列表。 在此页面可以根据工作流程和偏好设置启用或禁用特定工具。

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

分析工具

构建项目标题

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

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

参数:

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

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

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

get_file_problems

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

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

参数:

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

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

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

get_project_dependencies

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

参数:

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

get_project_modules

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

参数:

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

代码洞察工具

get_symbol_info

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

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

参数:

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

  • line :以 1 为起点的行号。

  • column :以 1 为起点的列号。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

特定数据库工具

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

获取数据库对象描述

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

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

参数:

  • connectionId :唯一连接ID。

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

  • schemaName :架构名称。

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

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

list_database_connections

获取项目中已配置的数据库连接或数据源列表。 每个连接会返回其唯一 ID、名称、DBMS 和驱动名称。

test_database_connection

返回连接诊断信息:

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

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

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

参数:

  • id :唯一连接ID。

list_database_schemas

获取指定数据库连接中的数据库架构列表。

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

参数:

  • connectionId :唯一连接ID。

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

list_schema_object_kinds

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

参数:

  • connectionId :唯一连接ID。

list_schema_objects

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

参数:

  • connectionId :唯一连接ID。

  • schemaName :架构名称。

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

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

list_recent_sql_queries

此功能在免费订阅计划中不可用。

获取给定数据库连接下最近(包括当前运行中)查询的列表。

对于每个查询返回:

  • 查询会话的唯一ID。

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

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

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

  • 查询文本。

参数:

  • connectionId :唯一连接ID。

cancel_sql_query

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

参数:

  • sessionId :查询会话ID。

execute_sql_query

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

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

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

参数:

  • connectionId :唯一连接ID。

  • queryText :要执行的SQL查询。

preview_table_data

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

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

参数:

  • connectionId :唯一连接ID。

  • schemaName :架构名称。

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

  • tableName :表名称。

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

开发者工具包 MCP 工具

查找锁要求用法

分析文本光标下方法的读/写锁用法。 还会分析调用路径的部分深度。 使用此工具可识别可能的读/写锁要求用法。 返回包含调用路径的锁要求列表。

参数:

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

  • line :光标所在的行。

  • column :光标所在的列。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

查找线程要求用法

分析文本光标下方法的线程约束用法(即方法是否需要在 UI 线程或后台线程运行)。 还会分析调用路径的部分深度。 使用此工具可识别可能的线程要求用法。 返回包含调用路径的线程要求列表。

参数:

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

  • line :光标所在的行。

  • column :光标所在的列。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

执行工具

execute_run_configuration

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

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

传递 configurationName 或将 filePathline 一起传递。 这些模式互斥。

行为:

  • 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 是一次性启动重写(programArgumentsworkingDirectoryenvs )在 执行运行配置xdebug 启动调试器会话 中的权威能力标志。 仅当该标志对所选配置为 true 时,才传递这些重写参数。

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

参数:

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

文件工具

create_new_file

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

参数:

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

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

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

find_files_by_glob

搜索项目中所有相对路径与指定 glob 模式匹配的文件。 搜索会递归遍历项目目录或指定子目录中的所有子目录。 使用此工具可通过 glob 模式(例如 **/*.txt )查找文件。

参数:

  • globPattern :用于搜索的 glob 模式。 模式必须相对于项目根目录。 示例: src/**/*.java

  • subDirectoryRelativePath (可选):相对于项目的子目录以供搜索。

  • addExcluded :是否将已排除/忽略的文件包含在搜索结果中。 文件可能由用户或忽略规则排除。

  • fileCountLimit :返回文件的最大数量。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

find_files_by_name_keyword

搜索项目中所有名称包含指定关键字(区分大小写)的文件。 使用此工具可在知道部分文件名的情况下定位文件。

参数:

  • nameKeyword :要在文件名中搜索的子字符串。

  • fileCountLimit :返回文件的最大数量。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

get_all_open_file_paths

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

参数:

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

list_directory_tree

以类似 tree 工具的伪图形格式提供指定目录的树状结构表示。 使用此工具可查看目录或整个项目的内容。 建议使用此工具代替 lsdir 等命令行工具进行目录列表操作。

参数:

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

  • maxDepth :最大递归深度。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

open_file_in_editor

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

参数:

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

格式设置工具

reformat_file

在 JetBrains IDE 中重新格式化指定文件。 使用此工具可根据文件路径对文件应用代码格式化。

参数:

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

IDE 操作工具

invoke_ide_action

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

可选通过 filePaths 提供文件/文件夹上下文,以便需要选中文件、文件夹或模块的操作能正确工作(例如 MarkExcludeRootReformatCodeNewFile)。

参数:

  • actionId :要调用的操作 ID(例如 ActivateTerminalToolWindowTogglePresentationMode)。

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

搜索 IDE 操作

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

参数:

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

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

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

检查生成器 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() 的提示。

参数:

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

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

运行检查 KTS

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

参数:

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

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

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

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

检查工具

get_inspections

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

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

参数:

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

  • minSeverity :最小严重级别: ERRORWARNINGWEAK_WARNINGINFORMATION。 默认值: WEAK_WARNING

  • timeout :超时时间,单位为毫秒。

apply_quick_fix

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

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

参数:

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

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

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

  • quickFixName :要应用的快速修复名称(来自 quickFixes[].name ,在 get_inspections结果中)。

PHP 调试器工具

xdebug_single_file

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

参数:

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

xdebug 启动服务器

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

参数:

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

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

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

xdebug_request

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

参数:

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

xdebug 停止服务器

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

参数:none。

xdebug_set_breakpoint

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

参数:

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

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

xdebug 运行

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

参数:none。

xdebug_step_into

步入下一个函数调用。 会话将在被调用函数的第一行暂停。 使用 xdebug_stackxdebug_context进行检查。

参数:none。

xdebug_step_over

执行当前行并在相同作用域的下一行暂停。 使用 xdebug_stackxdebug_context进行检查。

参数:none。

xdebug 单步跳出

运行直到当前函数返回,然后在调用处暂停。 使用 xdebug_stackxdebug_context进行检查。

参数:none。

xdebug_stack

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

参数:none。

xdebug_context

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

参数:

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

xdebug 状态

返回当前调试器会话状态(startingrunningbreakstopping)。

参数:none。

xdebug 暂停

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

参数:none。

xdebug 求值

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

参数:

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

xdebug 获取属性

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

参数:

  • name :变量名称,例如 $myVar$this->field

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

xdebug 设置属性

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

参数:

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

  • :新值需为 PHP 文字,例如 42\"hello\"true

xdebug_breakpoint_list

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

参数:none。

xdebug 移除断点

按 ID 移除断点。 使用 xdebug_breakpoint_list查找断点 ID。

参数:

  • id :要移除的断点 ID。

xdebug 分离

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

参数:none。

xdebug 停止

立即终止 PHP 脚本并结束调试会话。 与 xdebug_single_file单脚本调试时使用。

参数:none。

PHP 项目上下文工具

获取 composer 依赖项

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

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

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

参数:

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

获取 PHP 项目配置

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

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

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

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

参数:none。

单仓库开发者工具包 MCP 工具

获取项目状态

检查项目是否已准备好进行代码分析操作。 返回索引和扫描状态。 在进行如 lint_files获取文件问题 等重操作之前使用,以避免超时。

参数:

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

读取工具

读取文件

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

模式:

  • slice

  • lines

  • line_columns

  • offsets

  • indentation

模式详情:

  • slice 使用 start_linemax_lines

  • lines 使用 start_line/end_line (包含上限)。

  • line_columns 使用 start_line/start_columnend_line/end_columnend 为不包含; end_line 默认为 start_line)。

  • offsets 使用 start_offset/end_offsetend 为不包含)。

  • indentation 使用 start_line ,并带有 max_levels/include_*

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

参数:

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

  • mode :读取模式: slicelinesline_columnsoffsetsindentation

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

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

  • end_linelines/line_columns 模式下基于 1 的结束行(对 lines 为包含,对 line_columns 为不包含)。

  • start_columnline_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 :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

结构搜索

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

模式语法示例(PHP)

基础模式:

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

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

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

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

模式中的变量:

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

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

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

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

使用 get_structural_patterns可查看带有描述的预定义 PHP 模式。

已知限制

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

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

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

  • 使用 get_structural_patterns可发现可靠运行的模式。

约束

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

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

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

  • minCount/maxCount :出现次数上下限。

  • exprType :匹配表达式类型(例如 "string""int")。

约束示例:

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

参数:

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

  • fileType :要搜索的语言文件类型名称(例如 PHPJavaKotlinPython)。

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

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

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

  • timeout :超时时间,单位为毫秒。

get_structural_patterns

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

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

类别:

  • 通用 :类、接口、特征定义及结构。

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

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

参数:

  • category :按类别筛选模式:'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 :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

文本工具

get_file_text_by_path

使用相对于项目根目录的路径获取文件文本内容。 当您拥有文件的相对于项目根目录的路径时,可使用此工具读取文件内容。

参数:

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

  • truncateMode :截断文本的方式:从开头、中间、结尾处截断,或不进行截断。

  • maxLinesCount :返回的最大行数。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

replace_text_in_file

通过灵活的查找和替换选项替换文件中的文本。 使用此工具可进行有针对性的更改,而无需替换整个文件内容。 当您清楚要替换的确切文本时,这是修改文件内容最高效的工具。

返回以下响应之一:

  • ok — 替换成功。

  • project dir not found — 无法确定项目目录。

  • file not found — 指定文件不存在。

  • could not get document — 无法访问文件内容。

  • no occurrences found — 文件中未找到要替换的文本。

参数:

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

  • oldText :要被替换的文本。

  • newText :替换文本。

  • replaceAll :是否替换所有匹配项。

  • caseSensitive :搜索是否区分大小写。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

search_in_files_by_regex

使用 IntelliJ 的搜索引擎在项目中的所有文件中搜索正则表达式模式。 优先使用此工具而不是通过命令行工具读取文件,因为速度更快。

结果中的出现项会被 || 字符包裹。 例如: some text ||substring|| text

参数:

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

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

  • fileMask :要搜索的文件掩码。 如未指定,将搜索所有文件。 示例: *.java

  • caseSensitive :搜索是否区分大小写。

  • maxUsageCount :返回的最大匹配条目数。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

search_in_files_by_text

使用 IntelliJ 的搜索引擎在项目的所有文件中搜索文本子串。 优先使用此工具而不是通过命令行工具读取文件,因为速度更快。

结果中的出现项会被 || 字符包裹。 例如 some text ||substring|| text

参数:

  • searchText :要搜索的文本子串。

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

  • fileMask :要搜索的文件掩码。 如未指定,将搜索所有文件。 示例: *.java

  • caseSensitive :搜索是否区分大小写。

  • maxUsageCount :返回的最大匹配条目数。

  • timeout :超时时间,单位为毫秒。

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

VCS 工具

get_repositories

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

参数:

  • projectPath :项目路径。 如已知该值,请务必提供,以减少调用歧义。 如果仅知道当前工作目录,可将其作为项目路径使用。

2026年 7月 16日