AI Assistant Help

模型上下文协议(MCP)

AI Assistant 可通过 Model Context Protocol (MCP) 与外部工具和数据源交互。 连接到 MCP 服务器后,AI Assistant 可访问一系列极大扩展其功能的工具。

支持的传输机制

目前,AI Assistant 仅支持一种与 MCP 服务器通信的 传输机制stdio。 这意味着 AI Assistant 会将 MCP 服务器作为子进程启动,并通过其标准输入输出流交换数据。

获取 MCP 服务器的位置

根据您的用例和设置,已有许多兼容 MCP 的服务器可供使用。 作为起点,您可以浏览 官方 MCP 仓库中提供的参考服务器,其中包括示例、使用说明和配置信息。

连接 MCP 服务器所需的内容

要将 AI Assistant 连接到 MCP 服务器,您需要一个 JSON 配置,其中定义了用于启动服务器的命令和参数。 确切的配置取决于具体的 MCP 服务器。 在大多数情况下,服务器开发者会提供可获取并使用的推荐配置。

连接到 MCP 服务器

连接到 MCP 服务器:

  1. 转到 设置 | 工具 | AI Assistant | 模型上下文协议 (MCP)

    或者,您可以在聊天中输入 / 并选择 添加命令 选项,以打开带有 MCP 设置的界面。

    添加命令
  2. 模型上下文协议(MCP) 设置页面上,点击 添加 以添加新的 MCP 服务器配置。

  3. 新建 MCP 服务器 对话框中,选择您希望如何指定 MCP 服务器的参数:

    定义启动 MCP 服务器的命令:

    配置 MCP 服务器参数
    • 名称—— 指定 MCP 服务器的名称。

    • Command—— 指定用于启动 MCP 服务器的命令。

    • 参数—— 指定在服务器启动时传递给命令的附加参数。

    • 环境变量—— 指定服务器可能需要的可选变量(如 API 密钥或配置设置)。

    • 工作目录—— 指定启动服务器的文件夹路径。 这使您可以在参数中使用相对路径,而无需使用绝对路径。

    提供 JSON 配置:

    作为 JSON
    • JSON 配置—— 提供包含启动 MCP 服务器所需参数的 JSON 代码段。

      配置必须符合以下格式:

      { "mcpServers": { "yourServerName": { "command": "path-or-command-to-start-server", "args": [ "optional-arguments-passed-to-server" ] } } }
    • 工作目录—— 指定启动服务器的文件夹路径。 这使您可以在参数中使用相对路径,而无需使用绝对路径。

  4. 点击 确定。 MCP 服务器将出现在列表中。

  5. 级别 列中,选择此设置是否应在所有项目中全局可用,或仅在当前项目中可用。

  6. 点击 Apply。 这将启动已配置的服务器并建立连接。

由 MCP 服务器提供的工具将可供 AI Assistant 使用。 处理请求时,系统将自动触发这些功能,或者您也可以在聊天中手动输入适当的 / 命令来调用它们:

MCP 服务器上可用命令列表

查看可用工具

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

可用工具列表

停止 MCP 服务器

要停止 MCP 服务器:

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

    停止 MCP 服务器
  2. 点击 Apply

获取 MCP 服务器日志

为调试目的,您可能需要查看已启动的 MCP 服务器日志。要执行此操作: 为此:

  1. 在主菜单中,转到 Help 并在 Windows 上选择 在资源管理器中显示日志 ,或在 macOS 上选择 在 Finder 中显示日志。 这将打开日志目录。

  2. 找到 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 被挂载到容器中, /项目 实参告诉服务器在容器内的操作位置。

远程服务器的变通方法

例如,若要连接到使用 HTTP + SSEStreamable HTTP 传输机制的远程 MCP 服务器,您可以使用搭配
mcp-remote 的代理软件包进行替代。 此代理通过临时使用 npx ,在 AI Assistant 与远程服务器之间架起桥梁。 此类配置的模板如下所示:

{ "mcpServers": { "yourServerName": { "command": "npx", "args": [ "-y", "mcp-remote@latest", "https://remote-mcp-server.example.com/sse" ] } } }
{ "mcpServers": { "yourServerName": { "command": "npx", "args": [ "-y", "mcp-remote@latest", "https://remote-mcp-server.example.com/mcp" ] } } }
  • 命令被设置为 npx ,用于从 npm registry 运行一个软件包,而无需全局安装。

  • args 列表包含:

    • -y—— 用于在首次运行软件包时自动确认可能出现的提示,

    • mcp-remote@latest—— 用于连接 AI Assistant 与远程 MCP 服务器的代理软件包,

    • 远程 MCP 服务器的 URL(HTTP + SSEStreamable HTTP 传输)。

例如,若要将 AI Assistant 连接到 Microsoft Learn Docs MCP Server ,配置如下所示:

{ "mcpServers": { "microsoft.docs.mcp": { "command": "npx", "args": [ "-y", "mcp-remote@latest", "https://learn.microsoft.com/api/mcp" ] } } }

此处, npx 运行 mcp-remote 软件包,该软件包将来自 AI Assistant 的请求转发至指定的远程 MCP 服务器。

将您的 IDE 用作 MCP 服务器

2025.2 版本起,JetBrains IDE 将集成 MCP server ,允许 Claude Desktop、Cursor、Codex、VS Code 等外部客户端访问 IDE 提供的工具。 这使用户无需离开其首选应用程序即可控制并与 JetBrains IDE 进行交互。

外部客户端设置

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

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

  2. 点击 启用 MCP Server

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

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

如果您希望从其他任何客户端连接到 MCP 服务器,则需要执行手动配置:

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

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

  3. 请重新启动您的客户端以使配置生效。

无需确认执行操作

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

要启用此模式:

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

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

  3. 点击 Apply

支持的工具

以下是 MCP 服务器提供的工具列表:

execute_run_configuration

在当前项目中运行特定的运行配置,并等待其在指定超时时间内完成。 使用此工具执行通过 get_run_configurations 工具获取的运行配置。

返回执行结果,包括退出代码、输出和成功状态。

参数:

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

  • timeout :超时(毫秒)。

  • maxLinesCount :返回的最大行数。

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

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

get_run_configurations

返回当前项目的运行配置列表。 运行配置定义了如何从源代码运行应用、任务或测试套件。

如果可用,此工具还会提供命令行、工作目录和环境变量等附加信息。

使用此工具查询当前项目中可用的运行配置列表。

参数:

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

get_file_problems

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

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

参数:

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

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

  • timeout :超时(毫秒)。

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

get_project_dependencies

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

参数:

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

get_project_modules

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

参数:

  • 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 实用工具。 使用此工具浏览目录或整个项目的内容。 列出目录时,优先使用此工具,而非 lsdir 等命令行实用工具。

参数:

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

  • maxDepth :最大递归深度。

  • timeout :超时(毫秒)。

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

open_file_in_editor

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

参数:

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

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

reformat_file

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

参数:

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

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

get_symbol_info

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

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

参数:

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

  • line :从 1 开始的行号。

  • column :从 1 开始的列号。

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

rename_refactoring

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

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

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

参数:

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

  • symbolName :要重命名的现有符号的精确且区分大小写的名称(例如, getUserData)。

  • newName :用于该符号的精确且区分大小写的名称(例如, fetchUserData)。

  • 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_repositories

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

参数:

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

最后修改日期: 2025年 12月 5日