模型上下文协议(MCP)
AI Assistant 可通过 Model Context Protocol (MCP) 与外部工具和数据源交互。 连接到 MCP 服务器后,AI Assistant 可访问一系列极大扩展其功能的工具。
- 支持的传输机制
AI Assistant 支持以下用于连接到 MCP 服务器的 传输机制:
标准输入/输出(STDIO) – AI Assistant 作为子进程启动 MCP 服务器,并通过标准输入和输出交换数据。 此传输通常用于本地 MCP 服务器。
可流式 HTTP – AI Assistant 通过 HTTP 使用模型上下文协议规范中定义的可流式 HTTP 传输机制连接到 MCP 服务器。 此传输机制允许通过单个 HTTP 端点与本地或远程 MCP 服务器进行通信,并支持请求/响应和流式交互。
- 获取 MCP 服务器的位置
根据您的用例和设置,已有许多兼容 MCP 的服务器可供使用。 作为起点,您可以浏览 官方 MCP 仓库中提供的参考服务器,其中包括示例、使用说明和配置信息。
- 连接 MCP 服务器所需的内容
要将 AI Assistant 连接到 MCP 服务器,您需要一个 JSON 配置,其中定义了用于启动服务器的命令和参数。 确切的配置取决于具体的 MCP 服务器。 在大多数情况下,服务器开发者会提供可获取并使用的推荐配置。
连接到 MCP 服务器
连接到 MCP 服务器:
转到 。
或者,您可以在聊天中输入
/并选择 添加命令 选项,以打开带有 MCP 设置的界面。
在 模型上下文协议(MCP) 设置页面上,点击
添加 以添加新的 MCP 服务器配置。
在 新建 MCP 服务器 对话框中,选择要如何连接到 MCP 服务器,并提供 JSON 配置:

JSON 配置—— 提供包含启动 MCP 服务器所需参数的 JSON 代码段。 配置必须符合以下格式:
{ "mcpServers": { "yourServerName": { "command": "path-or-command-to-start-server", "args": [ "optional-arguments-passed-to-server" ] } } }工作目录—— 指定启动服务器的文件夹路径。 这使您可以在参数中使用相对路径,而无需使用绝对路径。
服务器级别 – 指定所配置的服务器是否必须在全局或仅在当前项目中可用。

JSON 配置—— 提供包含启动 MCP 服务器所需参数的 JSON 代码段。 配置必须符合以下格式:
{ "mcpServers": { "yourServerName": { "url": "https://example.com/mcp" } } }服务器级别 – 指定所配置的服务器是否必须在全局或仅在当前项目中可用。
点击 确定。 MCP 服务器将出现在列表中。
点击 Apply。 这将启动已配置的服务器并建立连接。 您可以在 状态 列中监控连接的状态。
由 MCP 服务器提供的工具将可供 AI Assistant 使用。 处理请求时,系统将自动触发这些功能,或者您也可以在聊天中手动输入适当的 / 命令来调用它们:

查看可用工具
连接 MCP 服务器成功建立后,您可以点击 状态 列中的图标,查看可用工具列表。

更改服务器级别
如果要更改 MCP 服务器的可用级别,请点击 按钮,在 级别 列中选择设置必须在全局可用还是仅在当前项目中可用。

停止 MCP 服务器
要停止 MCP 服务器:
取消选中您要停止的 MCP 服务器对应的复选框。

点击 Apply。
重新连接到 MCP 服务器
要重新连接到 MCP 服务器:
请选择您想要重新连接的服务器。
点击
重新连接 按钮。
获取 MCP 服务器日志
为调试目的,您可能需要查看已启动的 MCP 服务器日志。要执行此操作: 为此:
在主菜单中,转到 并在 Windows 上选择 在资源管理器中显示日志 ,或在 macOS 上选择 在 Finder 中显示日志。 这将打开日志目录。
找到 mcp 文件夹并打开它。 该文件夹包含每个已配置 MCP 服务器的日志。
JSON 配置示例
本节提供将 AI Assistant 连接到 MCP 服务器的配置示例,具体取决于服务器的托管方式。 涵盖本地安装服务器、基于 NPX 的设置、基于 Docker 的环境和远程服务器。
- 本地安装
如果 MCP 服务器安装在您的本机上,您可以通过运行服务器可执行文件并附加所需参数来连接。 此类配置的模板如下所示:
{ "mcpServers": { "yourServerName": { "command": "command-to-run-server", "args": [ "path-to-server-executable-or-script", "optional-arguments-for-server" ] } } }command是启动 MCP 服务器的可执行文件或脚本。 这可以是node、指向可执行文件的直接路径,或用于启动服务器的其他命令。args列表包含在启动服务器时传递的参数,如服务器脚本路径或配置选项。
例如,如果您使用 Filesystem MCP server ,则配置可能如下所示:
{ "mcpServers": { "filesystem": { "command": "node", "args": [ "/Users/JohnDoe/IdeaProjects/servers/src/filesystem/dist/index.js", "/Users/JohnDoe/Desktop" ] } } }此处,
node命令用于运行服务器脚本。 第一个实参指定服务器脚本的路径,第二个实参指定允许服务器操作的目录。- 使用 NPX
如果未在本地安装 MCP 服务器,您可以使用
npx按需下载并运行它。 此类配置的模板如下所示:{ "mcpServers": { "yourServerName": { "command": "npx", "args": [ "-y", "npm-package-name", "optional-arguments-for-server" ] } } }command被设置为npx,用于从 npm registry 运行一个软件包,而无需全局安装。args列表包含:-y—— 用于在首次运行软件包时自动确认可能出现的提示,提供 MCP 服务器的软件包名称,
传递给服务器的其他实参,例如文件路径或配置选项。
例如,如果您使用 Filesystem MCP server ,则配置可能如下所示:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/JohnDoe/Desktop" ] } } }此处,
npx命令运行@modelcontextprotocol/server-filesystem软件包。 实参中提供的路径指定了允许服务器操作的目录。- 使用 Docker
您可以使用 Docker 在隔离环境中运行 MCP 服务器。 这将在容器内启动服务器,并将本地文件夹挂载到容器中,以便服务器能够访问它们。 此类配置的模板如下所示:
{ "mcpServers": { "yourServerName": { "command": "docker", "args": [ "run", "-i", "--rm", "--mount", "type=bind,src=/local/path,dst=/container/path", "docker-image-name", "/container/path" ] } } }command设置为docker,将在基于指定 Docker 镜像的容器中启动 MCP 服务器。args列表包含:运行—— 用于启动新容器,-i—— 用于保持容器为交互式,使 IDE 可与之通信,--rm—— 用于在使用后自动移除容器,一个或多个
--mount选项 —— 用于将本地文件夹(src)绑定到容器路径(dst),提供 MCP 服务器的 Docker 镜像名称,
用于告诉服务器容器内允许操作的目录的最终实参。
例如,如果您使用 Filesystem MCP server ,则配置可能如下所示:
{ "mcpServers": { "filesystem": { "command": "docker", "args": [ "run", "-i", "--rm", "--mount", "type=bind,src=/Users/JohnDoe/Desktop,dst=/projects/Desktop", "--mount", "type=bind,src=/Users/JohnDoe/Documents,dst=/projects/Documents,ro", "mcp/filesystem", "/projects" ] } } }此处,
docker命令运行mcp/filesystem镜像。 本地文件夹 /Users/JohnDoe/Desktop 和 /Users/JohnDoe/Documents 被挂载到容器中, /项目 实参告诉服务器在容器内的操作位置。- 远程服务器
如果 MCP 服务器托管在远程且可通过 HTTP 访问,您可以通过在配置中指定其 URL 进行连接。 此类配置的模板如下所示:
{ "mcpServers": { "yourServerName": { "url": "http://remote-server-address/mcp" } } }url参数表示 MCP 服务器的 HTTP 端点。 这应指向为服务器实现可流式 HTTP 传输的基础 URL。
例如,要连接到远程 MCP 服务器,您的配置可能如下:
{ "mcpServers": { "microsoftdocs": { "url": "https://learn.microsoft.com/api/mcp" } } }此时,AI Assistant 通过 HTTP 使用可流式 HTTP 传输机制连接到 MCP 服务器。 服务器由远程管理,AI Assistant 通过指定的 URL 直接与其通信。
将您的 IDE 用作 MCP 服务器
从 2025.2 版本起,JetBrains IDE 将集成 MCP server ,允许 Claude Desktop、Cursor、Codex、VS Code 等外部客户端访问 IDE 提供的工具。 这使用户无需离开其首选应用程序即可控制并与 JetBrains IDE 进行交互。
启用 MCP 服务器插件
此功能依赖于 MCP 服务器插件,该插件在 JetBrains IDE 中默认捆绑并启用。 如果相关功能不可用,请确保您未禁用该插件。
按 Ctrl+Alt+S 打开设置,然后选择 。
打开 已安装 选项卡,找到 MCP 服务器 插件,然后选中插件名称旁边的复选框。
外部客户端设置
对于 Claude Code、 Claude Desktop、 Cursor、 VS Code、 Codex 和 Windsurf 等外部客户端,可自动完成配置:
在主菜单中,进入 .
点击 启用 MCP Server。
在 客户端自动配置 部分,为每个要与 MCP 服务器一起使用的客户端点击 自动配置。 这将自动更新其 JSON 配置。

重启客户端以使配置生效。
如果您希望从其他任何客户端连接到 MCP 服务器,则需要执行手动配置:
在 手动配置客户端 部分,根据连接类型点击 复制 SSE 配置、 复制 Stdio 配置 或 复制 HTTP 流配置。

将复制的配置粘贴到您的客户端的设置或配置文件中。
重启客户端以使配置生效。
无需确认执行操作
MCP 服务器允许已连接的外部客户端在 IDE 中执行终端命令或运行配置,而无需每次都提示用户确认。
要启用此模式:
在主菜单中,进入 .
在 命令执行 部分,启用 在无需确认的情况下运行 Shell 命令或运行配置(勇敢模式) 设置。
点击 Apply。
支持的工具
MCP 服务器提供了一组工具,允许外部客户端与 IDE 和项目交互,例如分析代码、修改文件、运行配置或执行终端命令。
可在 中查看和管理全部可用工具列表。 可根据实际工作流和偏好,在此页面启用或禁用特定工具。
下方可找到由 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:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
特定数据库工具
可用于: DataGrip 及带有 数据库工具和 SQL 插件的 IDE
要为 AI 代理严格保证只读访问,请使用权限受限(只读)的数据库用户,并将数据源配置为使用该用户。
- 获取数据库对象描述
获取特定架构中数据库对象(列、类型、密钥、索引等)的结构,以分层文本方式表示。
如有歧义,将返回所有相关对象的定义。
参数:
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。
调试器工具
可用于:IntelliJ IDEA Ultimate
为提升外部客户端使用 IDE 调试器工具的能力,可将 /ij-debugger 技能复制到其技能文件夹内。 为此:
在主菜单中,转到 或按两次 Shift 以打开搜索窗口。
输入 将调试器技能复制到智能体 并按 Enter。
该技能会被复制到以下文件夹:
Claude Code:
%USERPROFILE%\.claude\skills\ij-debugger\
~/.claude/skills/ij-debugger/
~/.claude/skills/ij-debugger/
Codex:
%USERPROFILE%\.codex\skills\ij-debugger\
~/.codex/skills/ij-debugger/
~/.codex/skills/ij-debugger/
该技能是一份行为指南,用于指导外部客户端何时应用调试器工具、收集哪些运行时证据以及如何管理断点和会话状态。
如需在外部客户端调用此技能,请使用 /ij-debugger ,或在相关时自动激活。
- xdebug 控控制会话
控制调试会话的执行过程。 可用此工具逐步执行代码、恢复执行、暂停或停止调试会话。
前提条件:
需存在调试会话。
STEP_*和RESUME需要会话暂停。
操作:
STEP_INTO :步入下一个方法调用
STEP_OVER :步过当前行
STEP_OUT :步出当前方法
RESUME :恢复程序执行,直至下一个断点
PAUSE :暂停程序执行
STOP :停止调试会话
WAIT_FOR_PAUSE :等待会话暂停(命中断点或手动暂停)
DRAIN_EVENTS :提取会话的跟踪点输出(所有操作的断点错误均被提取)
重要说明:
如程序正在运行,请在 WAIT_FOR_PAUSE或 PAUSE前使用
STEP_*/RESUME。请使用来自
xdebug_get_debugger_status或xdebug_start_debugger_session的当前sessionId。 如会话已停止、超时或消失,下次涉及会话的调用前请刷新会话列表。RESUME不会设置断点。 如无已启用断点(或下一个不会命中任何断点),程序可能直接运行至结束,会话将不经过暂停而停止。
RESUME后,需调用 WAIT_FOR_PAUSE以确认下次挂起。 如 WAIT_FOR_PAUSE超时,请考虑 PAUSE并重新检查断点。
DRAIN_EVENTS同样需要现有会话,终止后请勿复用过期的
sessionId。
下次调用:
RESUME后,调用
xdebug_control_session(action=WAIT_FOR_PAUSE)。收到暂停结果后,调用
xdebug_get_stack/xdebug_get_frame_values/xdebug_evaluate_expression。
结果中的状态值:
running :程序正在执行
paused :执行已暂停(断点、步进或手动暂停);暂停结果还会包含
frameValues,即当前帧的xdebug_get_frame_values(depth=0)格式快照(如可用)stopped :调试会话已终止
breakpointErrorsTail会针对任意操作返回tracepointOutputsTail只会针对 DRAIN_EVENTS 返回
事件支持范围:
断点错误和跟踪点输出事件目前仅由基于 JVM 的调试器(Java、Kotlin 等)上报。
在其他调试器后端,即便已配置断点/日志,这些事件尾部也可能为空。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 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 计算表达式
在当前堆栈帧上下文中计算表达式。 可用此工具在调试期间计算值、调用方法或检查表达式。
前提条件:
会话需已暂停。
所选帧/语言需支持计算。
expression必须为当前帧所用语言的有效表达式。
结果返回格式为:
depth == 0:仅为表达式计算结果的展示depth > 0:为计算结果的展示和最多到请求深度的子项伪图结构树
输入规则:
请准确传递原始表达式文本,确保调试器求值程序能正确解析。
请勿传递 JSON 转义的载荷或类似
\\"text\\"这样的文字转义序列。
下次调用:
如表达式验证了假设,继续执行
xdebug_control_session(STEP_*|RESUME)。如果需要更多详细信息,请通过
xdebug_get_frame_values/xdebug_get_value_by_path检查相关值。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。frameIndex:堆栈帧索引(整数,0 = 顶部帧)。 从当前暂停的xdebug_get_stack结果中获取此值;在 RESUME、 STEP_*、xdebug 运行到行或暂停位置发生变化后,切勿重复使用已缓存的帧索引。 如果为 null,则使用顶部帧。 默认值为 null。expression:在当前上下文中要计算的表达式。 传递当前帧语言的原始表达式文本;请勿传递经过 JSON 转义的有效负载或反斜杠转义的引号文本。depth:展开已计算结果子级的最大深度(0 = 只显示值,1 = 直接子级,2 = 子级+孙级,依此类推)。 默认值:0。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 获取调试器状态
返回调试器的当前状态,包括所有活动的调试会话。 使用此工具可查看所有正在运行的调试会话及其状态概览。
前提条件:
无。
返回显式
sessions[]和activeSessionId。下次调用:
如果没有会话正在运行,请调用
xdebug_start_debugger_session。如有多个会话处于活动状态,请在后续调用中将返回的
id作为sessionId使用。
参数:
projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 获取帧值
以树结构返回指定堆栈帧中可见的值。 使用此工具可查看调用堆栈中特定点可用的局部变量、参数、字段或其他值。
前提条件:
会话需已暂停。
帧索引应来自当前暂停的
xdebug_get_stack结果(0 = 顶部帧)。
格式:
有子项的节点会用
+标记。
下次调用:
使用
xdebug_get_value_by_path可深入查看嵌套字段。在同一帧内,使用
xdebug_evaluate_expression进行计算检查。在 RESUME、 STEP_*、
xdebug 运行到行或暂停位置有变化后,切勿复用已缓存的frameIndex。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。frameIndex:堆栈帧索引(整数,0 = 顶部帧)。 从当前暂停的xdebug_get_stack结果中获取此值;在 RESUME、 STEP_*、xdebug 运行到行或暂停位置发生变化后,切勿重复使用已缓存的帧索引。 如果为 null,则使用顶部帧。 默认值为 null。depth:展开已计算结果子级的最大深度(0 = 只显示值,1 = 直接子级,2 = 子级+孙级,依此类推)。 默认值:0。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 获取调用栈
返回调试会话中某个线程的调用堆栈。 使用此工具可查看导致当前执行点的方法调用序列。
前提条件:
会话需已暂停。
行为:
threadId应该来自xdebug_get_threads,并与调试器线程显示名称匹配(默认为活动线程)。即使缺少源位置,也包括帧(
file/line可能为 null)。
分页:
offset/limit在收集完整堆栈后应用。
帧字段包括:
indexfilelineisCurrentpresentation
file以调试器提供的方式报告(无路径规范化)。下次调用:
在
xdebug_get_frame_values、xdebug_get_value_by_path或xdebug_evaluate_expression中使用当前暂停结果的帧索引。在 RESUME、 STEP_*、
xdebug 运行到行或暂停位置有变化后,切勿复用已缓存的frameIndex。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。threadId:要获取堆栈的线程 ID。 该值应来自xdebug_get_threads,并与调试器线程显示名称匹配,而不是不透明的数字 ID。 如果未指定,则使用当前/活动线程。 默认值为 null。limit:要返回的最大帧数。 默认值:200。offset:页偏移。 默认值:0。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 获取线程
返回调试会话中的线程列表。 使用此工具可查看所有线程及其当前状态。
前提条件:
会话需已暂停。
下次调用:
对于所选线程,使用
xdebug_get_stack。
分页:
在收集所有堆栈后应用
offset/limit。
排序:
活动线程优先。
其余线程按堆栈深度递减排序。
架构字段包括:
idnamestateisCurrentadditionalInfoadditionalInfoTooltipframeCount
additionalInfo/additionalInfoTooltip在可用时会使用更多显示信息。参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 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_get_frame_values/ 前一次xdebug_get_value_by_path输出结果中精确的子项名称,因为不同语言/调试器的索引节点名称可能不同(例如"[0]"与"0")。在 RESUME、 STEP_*、
xdebug 运行到行或暂停位置有变化后,刷新path标记。
下次调用:
如需进一步深入,请再次调用
xdebug_get_value_by_path。当直接名称路径导航不够时,请使用
xdebug_evaluate_expression。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。frameIndex:堆栈帧索引(整数,0 = 顶部帧)。 从当前暂停的xdebug_get_stack结果中获取此值;在 RESUME、 STEP_*、xdebug 运行到行或暂停位置发生变化后,切勿重复使用已缓存的帧索引。 如果为 null,则使用顶部帧。 默认值为 null。path:要导航的子项名称列表,例如['myObject', 'field', 'subField']或['items', '[0]', 'name']。 请使用当前暂停xdebug_get_frame_values/xdebug_get_value_by_path输出的精确节点名称,并在暂停位置变更时刷新过期路径标记。depth:展开已计算结果子级的最大深度(0 = 只显示值,1 = 直接子级,2 = 子级+孙级,依此类推)。 默认值:0。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 列出断点
列出项目中或指定文件中的所有断点。 使用此工具可查看所有当前设置的断点及其属性。
行为:
如果提供了
filePath,则仅返回该文件中的断点。为每个断点返回丰富的属性(
id、type、file、line、enabled、owner、condition、isLogMessage、isLogStack、temporary、suspendPolicy、hitCount)。
下次调用:
如果不存在合适的断点,请调用
xdebug_set_breakpoint。然后使用
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。
下次调用:
使用
xdebug_list_breakpoints验证剩余集合。
参数:
breakpointId:由xdebug_set_breakpoint或xdebug_list_breakpoints返回的规范断点 ID。filePath:可选的文件路径,用于筛选断点。 文件路径。 支持项目相对路径、带有 .. 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo.class 的归档条目,以及例如 file:// 、 jar:// 和 jrt:// 的 URL。 可以直接传递其他工具返回的任何路径(如来自search_*工具的路径)。 如果未指定,则返回所有断点。 默认值为 null。line:可选输入,欲移除断点的行号(从 1 开始)。owner:断点所有者筛选器。 默认值:agent。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 运行到行
恢复执行至目标行。 使用此工具可以运行到特定源代码位置,无需手动步进。
前提条件:
会话需已暂停。
目标文件/行必须有效。
结果:
paused:会话暂停在目标行或之后。stopped:会话在暂停前已终止。timeout:在超时窗口内未暂停/停止。
下次调用:
如果已暂停,请调用
xdebug_get_stack/xdebug_get_frame_values/xdebug_evaluate_expression。如会话已停止或消失,在发起另一会话范围调用前,请通过
xdebug_get_debugger_status刷新sessionId。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。filePath:相对于项目根目录的路径。line:目标行号(从 1 开始)。timeout:等待暂停/停止结果的超时时间,单位为毫秒。 默认: 30000。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 设置断点
创建或更新断点。 使用此工具可设置行断点、根据 ID 更新现有断点并控制跟踪点/日志行为。
目标模式:
按位置:提供
filePath+line,且省略breakpointId(或传入null)。 请勿使用""、"/"或"__omit__"这样的占位符字符串。按 ID:提供
xdebug_set_breakpoint或xdebug_list_breakpoints返回的现有不透明规范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_set_breakpoint响应成功并不保证condition或跟踪点表达式有效;请稍后检查breakpointErrorsTail后再依赖相关内容。成功的行断点响应还包含
lineText,即断点现在所处的实际源代码行的截断片段。 请在恢复前检查,以确认位置正确。
应用语义:
已提供的字段将被应用为目标断点的结果状态。
condition=null会清除已有条件。isLogMessage=true记录断点命中位置。isLogStack=true记录当前堆栈跟踪。如两个标志都为 true,则同时记录位置和堆栈。
有
isLogMessage/isLogStack+suspendPolicy=NONE时,断点作为跟踪点行为。在 ID 模式下,如果为行断点提供
filePath/line,则会在新位置重新定位(重新创建)该断点。在 ID 模式下,对于非行断点,
filePath/line会被忽略,并在message中报告。任何成功的操作都会将断点标记为
agent所有权(mcpBreakpointMarker)。
下次调用:
请使用返回的
lineText和/或xdebug_list_breakpoints验证位置。通过
xdebug 启动调试器会话或xdebug_control_session(action=RESUME)启动/继续执行。
参数:
breakpointId:由xdebug_set_breakpoint或xdebug_list_breakpoints返回的规范断点 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。enabled:断点是否启用。 默认值:true。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 设置变量
在所选堆栈帧中按路径修改变量值。 使用此工具在调试期间更改状态。
前提条件:
会话需已暂停。
值必须可修改。
path应来自当前暂停的xdebug_get_frame_values/xdebug_get_value_by_path输出。
路径格式与
xdebug_get_value_by_path中相同。newValue必须是当前帧语言中的原始表达式,并且调试器/评估器必须能够将其赋值给目标值。 不要传递 JSON 转义的载荷或如\\"text\\"这样的转义序列。结果:
返回
oldValue/newValue/applied。不支持的变量修改会返回带文本信息的错误。
下次调用:
通过
xdebug_get_value_by_path或xdebug_get_frame_values重新读取值以确认。
参数:
sessionId:调试会话 ID。 请使用xdebug_get_debugger_status或xdebug_start_debugger_session返回的当前 ID。 如会话已停止、超时或消失,重新使用旧 ID 前需刷新会话列表。 格式:默认使用会话名作为 ID;若有多个会话同名,则 ID 为<sessionName>#<executionId>。 如为 null 且恰好只有一个活动会话,则自动选择。 如有多个活动会话且未指定sessionId,则调用会失败。 默认值为 null。frameIndex:堆栈帧索引(整数,0 = 顶部帧)。 从当前暂停的xdebug_get_stack结果中获取此值;在 RESUME、 STEP_*、xdebug 运行到行或暂停位置发生变化后,切勿重复使用已缓存的帧索引。 如果为 null,则使用顶部帧。 默认值为 null。path:目标值的路径,格式与xdebug_get_value_by_path相同。 请使用当前暂停的xdebug_get_frame_values/xdebug_get_value_by_path输出中的精确节点名称,并在暂停位置变化时刷新过期的路径标记。newValue:要分配的新值表达式。 请传递当前帧语言中的原始表达式文本;调试器/评估器必须能够将其赋值给目标值。 不要传递 JSON 转义的载荷或带反斜杠转义的引号文本。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- xdebug 启动调试器会话
为当前项目中的已存在运行配置(通过名称)或代码位置(
filePath+line)启动调试器会话。 使用此工具启动调试器会话。 使用此工具,可通过现有运行配置名称或filePath+line启动会话。 当使用filePath+line时,包含可运行方法(如main)、测试或其它可执行入口点的行几乎总是可用。 如果不确定使用哪一行,get_run_configurations可以帮助发现文件中可运行的位置。 会话将启动,之后可用其他调试器工具控制执行。前提条件:
当使用
configurationName时,请传递精确的现有运行配置名称;不要传递测试方法名或其他派生目标标识符。当使用
filePath+line时,请指向可运行的代码位置,如main、测试或其他可执行入口点。请先设置至少一个断点,否则程序可能会直接执行完毕而不暂停。
请传递
configurationName,或同时传递filePath和line。 这些模式互斥。
行为:
等待会话创建,最长不超过
timeout。在会话启动后应用宽限期等待(
graceWaitMs)并返回刷新后的状态。可选启动覆盖参数(
programArguments、workingDirectory、envs)仅对本次调试启动生效,并不会被持久化。get_run_configurations是覆盖支持的依据:仅当所选运行配置报告supportsDynamicLaunchOverrides=true时传递启动覆盖。除非明确需要更改本次调试启动的配置值,否则不要传递这些覆盖参数。
缺失/null 的覆盖参数会保留现有运行配置值不变。
对于字符串覆盖(
programArguments、workingDirectory),缺失/null 或空字符串("")将保持现有值不变。如需清除本次调试启动的现有值,可传递仅包含空白字符的字符串,如
" "。
下次调用:
xdebug_control_session(action=WAIT_FOR_PAUSE)用于等待第一次挂起。暂停后,请调用
xdebug_get_stack和xdebug_get_frame_values(或xdebug_evaluate_expression) 获取运行时证据。
返回的平面结果包含调试器会话元数据以及运行快照字段:
sessionId、name、status,以及可选的runConfigurationNameoutput预览,以及可选的fullOutputPath当进程终止已经知晓时,可选的
exitCode
参数:
configurationName:要调试的现有运行配置名称。filePath:相对于项目根目录的文件路径。 请与line一起提供,以便从代码位置开始调试。line:用于filePath的从 1 开始的行号。 请与filePath一起提供,且不要与configurationName组合。timeout:等待调试会话启动的超时时间,单位为毫秒。 默认值:60000。graceWaitMs:会话开始后用于刷新状态的宽限等待时间,单位为毫秒。 默认值:2000。programArguments:仅本次启动生效的可选程序参数覆盖。 仅当所选运行配置在get_run_configurations中报告supportsDynamicLaunchOverrides=true时传递。 缺失/null 或空字符串会保持现有值不变,仅空白字符串会清除该值。workingDirectory:仅本次启动生效的可选工作目录覆盖。 仅当所选运行配置在get_run_configurations中报告supportsDynamicLaunchOverrides=true时传递。 缺失/null 或空字符串会保持现有值不变,仅空白字符串会清除该值。envs:仅本次启动生效的可选环境变量覆盖。 仅当所选运行配置在get_run_configurations中报告supportsDynamicLaunchOverrides=true时传递。 缺失/null 会保持现有环境变量不变;如有提供,则会将其值覆盖合并到现有环境中。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
开发者工具包 MCP 工具
- 查找锁需求用法
分析光标下方法中对读/写锁的用法。 还会分析调用路径的一定深度。 使用此工具识别可能需要读/写锁的用法。 返回锁要求列表及其调用路径。
参数:
filePath:相对于项目根目录的路径。line:光标所在的行。column:光标所在的列。timeout:超时(毫秒)。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- 查找线程需求用法
分析光标下方法的线程约束用法(即,方法是否需要在 UI 线程或后台线程上运行)。 还会分析调用路径的一定深度。 使用此工具识别可能的线程使用要求。 返回线程要求列表及其调用路径。
参数:
filePath:相对于项目根目录的路径。line:光标所在的行。column:光标所在的列。timeout:超时(毫秒)。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
执行工具
- execute_run_configuration
运行当前项目中按名称的现有运行配置,或由代码位置(
filePath+line)创建的临时运行配置,并等待其在指定超时时间内完成。 使用此工具,可以选择通过get_run_configurations返回的配置名称,或通过get_run_configurations(filePath = ...)返回的运行点(filePath+line)运行。可选启动覆盖(
programArguments、workingDirectory、envs)仅对本次运行生效,且不会被持久化。 除非明确需要更改本次运行的配置值,否则不要传递这些覆盖参数。 缺失/null 的覆盖参数会保留现有运行配置值不变。 对于字符串覆盖(programArguments、workingDirectory),缺失/null 或空字符串("")会保持现有值不变。 如需清除本次运行的现有值,可传递仅包含空白字符的字符串,如" "。请传递
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:仅本次启动生效的可选程序参数覆盖。 缺失/null 或空字符串会保持现有值不变,仅空白字符串会清除该值。workingDirectory:仅本次启动生效的可选工作目录覆盖。 缺失/null 或空字符串会保持现有值不变,仅空白字符串会清除该值。envs:仅本次启动生效的可选环境变量覆盖。 缺失/null 会保持现有环境变量不变;如有提供,则会将其值覆盖合并到现有环境中。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- get_run_configurations
根据输入,返回项目运行配置或可执行代码位置。
未提供
filePath时,该工具会列出项目中现有的运行配置。 结果包括配置名称,以及在有可用信息时,还包括启动详情,例如程序参数、工作目录、环境变量和supportsDynamicLaunchOverrides。supportsDynamicLaunchOverrides是一次性启动重写 (programArguments、workingDirectory、envs) 在execute_run_configuration和xdebug_start_debugger_session中的事实能力标志。 仅当该标志为true时,才为所选配置传递这些重写参数。通过
filePath,该工具会在该文件中发现可执行入口点(运行点),例如测试方法、main 方法或 IDE 显示运行装订区域图标的其他可执行入口点。 结果包含filePath和runPoints;请结合返回的行号和execute_run_configuration从代码运行。参数:
filePath:相对于项目根目录的可选文件路径。 提供该参数时,将返回文件中的运行点(可执行入口点),而不是项目级别的运行配置。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
文件工具
- create_new_file
在项目目录中的指定路径创建新文件。 可选择将提供的文本写入该文件。
参数:
pathInProject:应创建文件的路径,相对于项目根目录。text(可选):要写入新文件的内容。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实用工具。 使用此工具浏览目录或整个项目的内容。 列出目录时,优先使用此工具,而非ls或dir等命令行实用工具。参数:
directoryPath:相对于项目根目录的路径。maxDepth:最大递归深度。timeout:超时(毫秒)。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- open_file_in_editor
在 JetBrains IDE 编辑器中打开指定文件。 需要一个
filePath参数,其中包含要打开的文件路径。 文件路径可以是绝对路径,也可以是相对于项目根目录的路径。参数:
filePath:相对于项目根目录的路径。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
格式设置工具
- reformat_file
在 JetBrains IDE 中重新格式化指定文件。 使用此工具对通过其路径标识的文件应用代码格式化。
参数:
path:相对于项目根目录的路径。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
检查生成器 MCP 工具
- 验证检查 KTS
针对规范示例验证 inspection.kts 脚本。 编译该检查,并使用正/反例运行。 返回编译状态和详细验证结果。
正例应触发检查(预期存在问题)。 反例不应触发检查(在禁止行上不应有问题)。
返回整体成功情况、每个示例结果以及聚合统计信息。
参数:
inspectionKtsCode:要编译和验证的 inspection.kts 脚本内容。pathToSpecification:带有要验证示例的规范路径。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
检查 KTS MCP 工具
- 生成检查 KTS API
返回目标语言的 Inspection KTS API 文档。 提供可用于编写 inspection.kts 文件时的可用类和函数。
参数:
language:目标语言:“Java” 或 “Kotlin”。wrapInTags:如为 true,则将 API 内容包裹在<API>和<api.kt>标记中。projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
- 生成检查 KTS 示例
返回用于目标语言代码生成指导的示例 inspection.kts 模板。 提供如何使用 InspectionKts API 编写检查的 XML 包裹示例。
参数:
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:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
单仓库开发者工具包 MCP 工具
- 获取项目状态
检查项目是否已准备好进行代码分析操作。 返回索引和扫描状态。 在执行
lint_files或get_file_problems等高负载操作前使用,以避免超时。参数:
projectPath:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
读取工具
- 读取文件
读取项目目录或任何项目依赖项或其他项目源根目录内的文件。 可读取 Jar/Jrt 文件内的源文件,并反编译 Jar/Jrt 文件内或磁盘上的 Java 类文件。 以文本形式返回带编号的行(从 1 起始)。
模式:
slicelinesline_columnsoffsetsindentation
模式详情:
slice使用start_line和max_lines。lines使用start_line/end_line(包含两端)。line_columns使用start_line/start_column和end_line/end_column(end不包括在内;end_line默认为start_line)。offsets使用start_offset/end_offset(end不包括在内)。indentation使用start_line,并与max_levels/include_*。
max_lines限制所有模式下的总输出上限;context_lines适用于范围模式(每侧)。参数:
file_path:文件路径。 支持项目相对路径、带有 '..' 的路径、绝对路径、如 /path/lib.jar!/pkg/Foo .class 的归档条目,以及例如 file:// 、 jar:// 和 jrt:// 的 URL。 可以直接传递其他工具返回的任何路径(如来自search_*工具的路径)。mode:读取模式: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:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
运行 Notebook 工具
- 运行 Notebook 单元格
在 Jupyter Notebook 中执行一个或所有单元。
示例:
{"file_path": "/abs/path/demo.ipynb", "cell_id": "13c5cec416369e19"}{"file_path": "/abs/path/demo.ipynb"}
参数:
file_path: .ipynb Notebook 的绝对路径。cell_id:可选 Jupyter 单元 ID。 如未指定,则执行所有单元。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:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
终端工具
- 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:项目路径。 如已知,请始终提供此值,以减少歧义调用。 如果仅知道当前工作目录,您可以将其用作项目路径。
Rails 专用工具
适用于: RubyMine
- 获取 Rails 路由
检索项目中的 Rails 路由。 结果以分页列表形式返回,并基于包含/排除路径、操作(由限定名称指定)、目录及 HTTP 方法进行筛选。
建议优先使用该工具而非手动代码检查,因为它会对 Rails 路由进行深度分析。
参数:
page:分页页码。page_size:每页项目数。included_route_path_filters:要包含的路由路径模式列表。excluded_route_path_filters:要排除的路由路径模式列表。included_action_fqn_filters:要包含的限定操作名称列表。excluded_action_fqn_filters:要排除的限定操作名称列表。included_action_directory_filters:要包含的操作目录列表。excluded_action_directory_filters:要排除的操作目录列表。min_action_count:路由所需的最小操作数。max_action_count:路由可拥有的最大操作数。included_http_method_filters:要包含的 HTTP 方法列表(GET、POST 等)。excluded_http_method_filters:要排除的 HTTP 方法列表。
- 获取 Rails 模型
检索项目中的 Rails 模型。 结果为分页显示,并可通过 FQN 进行筛选
参数:
page:分页页码。page_size:每页项目数。included_fqn_filters:要包含的 FQN 模式列表。excluded_fqn_filters:要排除的 FQN 模式列表。included_directory_filters:要包含的目录列表。excluded_directory_filters:要排除的目录列表。controller_filter:只包含有或没有对应控制器的模型筛选。
- 获取 Rails 控制器
检索项目中的 Rails 控制器。 结果进行分页,并可按 FQN、目录、视图、抽象状态及对应模型的存在进行筛选。
参数:
page:分页页码。page_size:每页项目数。included_fqn_filters:要包含的 FQN 模式列表。excluded_fqn_filters:要排除的 FQN 模式列表。included_directory_filters:要包含的目录列表。excluded_directory_filters:要排除的目录列表。included_view_filters:要包含的视图筛选器列表。excluded_view_filters:要排除的视图筛选器列表。abstract_filter:筛选只包含抽象、非抽象或所有控制器。model_filter:筛选只包含有或没有对应模型的控制器。
- 获取 Rails 助手
检索项目中的 Rails 帮助程序。 结果进行分页,并可按 FQN 和目录进行筛选。
参数:
page:分页页码。page_size:每页项目数。included_fqn_filters:要包含的 FQN 模式列表。excluded_fqn_filters:要排除的 FQN 模式列表。included_directory_filters:要包含的目录列表。excluded_directory_filters:要排除的目录列表。
- 获取 Rails 视图
检索项目中的 Rails 视图。 结果进行分页,并可按是否为部分视图、布局、控制器关联、路径以及控制器目录/FQN 进行筛选。
参数:
page:分页页码。page_size:每页项目数。partiality_filter:筛选只包含部分视图、非部分视图或两者。layout_filter:筛选只包含布局视图、非布局视图或两者。controller_filter:筛选只包含有关联控制器的视图。included_path_filters:要包含的视图路径列表。excluded_path_filters:要排除的视图路径列表。included_controller_fqn_filters:要包含的控制器 FQN 列表。excluded_controller_fqn_filters:要排除的控制器 FQN 列表。included_controller_directory_filters:要包含的控制器目录列表。excluded_controller_directory_filters:要排除的控制器目录列表。
- 获取 Rails 邮件器
检索项目中的 Rails 邮件程序。 结果进行分页,并可按 FQN 和目录进行筛选。
参数:
page:分页页码。page_size:每页项目数。included_fqn_filters:要包含的 FQN 模式列表。excluded_fqn_filters:要排除的 FQN 模式列表。included_directory_filters:要包含的目录列表。excluded_directory_filters:要排除的目录列表。