当前位置: 首页 > news >正文

JetBrains MCP协议详解:AI IDE底层交互范式革命

1. 这不是插件升级,是IDE底层逻辑的彻底重写

“IDEA 不再只是加个 AI 插件: JetBrains 这次直接重做了一套 AI IDE”——这句话不是营销话术,而是对2025年JetBrains技术演进最精准的概括。我从2018年开始用IntelliJ IDEA做Java后端开发,经历过从Code Completion到Live Templates,再到早期AI Assistant插件的每一轮迭代。但这一次,当我把2025.2版IDEA启动后第一眼看到的不是熟悉的Project窗口,而是一个带实时上下文感知的对话面板时,我就知道:我们正在见证一个分水岭。

核心关键词AI IDEMCPJayBrains(注意:这是社区对JetBrains AI能力体系的戏称,非官方命名)和AIR(AI-Integrated Runtime)已经不再是概念或预告,而是可触摸、可调试、可嵌入工作流的生产级能力。它解决的早已不是“代码补全准不准”这种表层问题,而是重构了开发者与工具之间的权力关系:过去是人指挥IDE执行命令,现在是人向AI提出意图,由IDE内部的AI Runtime调度数百个原子化工具链去协同完成。

这背后最关键的转折点,就是Model Context Protocol(MCP)协议的落地。它不是JetBrains自己搞的封闭协议,而是联合Claude、Codex、Cursor等主流AI编码助手共同推动的开放标准。你可以把它理解成IDE领域的“USB-C接口”——过去每个AI工具都要自己写一套IDE适配层(比如旧版的CodeWhisperer插件、GitHub Copilot的专用SDK),现在只要遵循MCP,就能即插即用。我上周在MacBook Pro M3上实测,用同一份MCP配置,让Claude Desktop、VS Code里的Codex插件、甚至本地跑的开源Cursor客户端,都能无缝调用IDEA里正在运行的Maven构建、数据库查询、断点调试等全部功能。这种跨客户端、跨IDE的互操作性,在2024年之前根本无法想象。

所以,如果你还在搜索“idea ai插件 安装教程”或者纠结“idea社区版能不能用AI”,说明你还没跳出旧范式。真正的门槛已经从“会不会装插件”变成了“能不能设计MCP工作流”。接下来的内容,我会完全基于一线实操经验,拆解这套新AI IDE的底层逻辑、配置细节、避坑要点,以及它如何重塑日常开发的每一个环节。这不是一篇功能说明书,而是一份给资深开发者的迁移指南。

2. MCP:AI与IDE之间那根看不见的“神经”

2.1 为什么MCP是这次重构的绝对核心?

很多人看到“MCP”这个词,第一反应是查缩写、看文档、找服务器。但作为每天和IDE打交道超过10小时的开发者,我必须说:MCP的本质,是把IDE从一个“被动响应工具”变成一个“主动服务提供者”。它的价值不在于协议本身多精妙,而在于它彻底打破了AI模型与IDE功能之间的信息壁垒。

举个最典型的例子:旧版AI插件想帮你“修复一个空指针异常”,流程是这样的:

  1. 你在聊天框输入:“这个NullPointerException怎么修?”
  2. AI模型分析你粘贴的错误堆栈和代码片段;
  3. 模型生成一段修改建议(比如加个判空);
  4. 你手动复制、粘贴、检查、保存。

整个过程,AI对你的项目结构、Maven依赖版本、Spring Boot配置、甚至当前调试器是否挂起都一无所知。它就像一个隔着毛玻璃给你递纸条的助手。

而MCP协议下的工作流是:

  1. 你在AI Assistant聊天框输入:“帮我定位并修复UserService里导致NPE的代码”;
  2. AI Assistant立刻通过MCP调用get_file_problems工具,扫描整个项目,精准定位到UserService.java第47行的user.getProfile().getName()
  3. 接着调用get_symbol_info,确认user对象的类型是Optional<User>,而getProfile()返回的是null
  4. 再调用list_directory_tree,发现src/main/resources/application-dev.ymluser.profile.enabled被设为false
  5. 最后,AI不是给你一段代码,而是直接执行replace_text_in_file,把user.getProfile().getName()替换成user.flatMap(User::getProfile).map(Profile::getName).orElse("default"),并自动触发reformat_file格式化。

整个过程,IDEA不是在“执行命令”,而是在“提供上下文服务”。MCP就是那个让AI能随时伸手拿到IDE所有能力的神经通路。它不传输原始代码,而是传输结构化、语义化的工具调用指令。这也是为什么JetBrains敢说“重做了一套AI IDE”——因为底层交互范式已经变了。

2.2 MCP的三种连接方式:STDIO、HTTP Stream、SSE,选哪个?

MCP协议定义了三种标准传输机制,选择哪一种,直接决定了你的AI工作流是“本地闭环”还是“云边协同”。我在不同场景下都做过压测,结论非常明确:

  • STDIO(标准输入/输出):这是最常用、也最推荐的本地开发模式。当你用npx @modelcontextprotocol/server-filesystem启动一个本地文件系统MCP服务器时,IDEA会以子进程方式启动它,并通过管道通信。优势是延迟极低(<50ms),完全离线,且能直接访问你项目目录下的任意文件(包括.gitignore里的敏感配置)。我测试过在10万行的Spring Cloud微服务项目里,用STDIO调用search_symbol查找@FeignClient注解,平均响应时间是127ms;而用HTTP方式,即使在同一台机器,也要210ms+。适用场景:日常开发、代码审查、本地调试。

  • HTTP Stream(流式HTTP):这是为远程协作和云IDE设计的。比如你的团队在用GitPod或GitHub Codespaces,后端MCP服务器部署在K8s集群里,前端IDEA客户端通过https://mcp.your-company.com/v1/stream连接。它支持真正的双向流式通信,AI可以一边接收get_project_dependencies的返回结果,一边开始解析依赖树,无需等待整个JSON加载完毕。但代价是网络抖动影响大,一次execute_run_configuration调用,在40ms RTT的网络下,失败率会比STDIO高3倍。适用场景:远程办公、CI/CD集成、需要统一管理MCP服务的大型团队。

  • SSE(Server-Sent Events):这是为兼容老系统保留的过渡方案。JetBrains官方文档里明确写了:“SSE transport is deprecated and will be removed in a future version.” 我强烈建议你忽略它。上周有个同事坚持用SSE连Claude Desktop,结果在调试时xdebug_control_sessionWAIT_FOR_PAUSE指令总是超时,排查了两天才发现是SSE的长连接在IDEA后台被系统休眠策略kill掉了。结论:除非你维护一个2024年之前的遗留MCP服务,否则永远不要选SSE。

提示:在IDEA设置里(Settings | Tools | AI Assistant | Model Context Protocol),你添加MCP服务器时,界面会根据你填写的JSON配置自动识别传输类型。如果JSON里有"url"字段,它就走HTTP Stream;如果有"command"字段,就走STDIO。别被选项迷惑,看配置本质。

2.3 那个神秘的mcpServersJSON配置,到底该怎么写?

网上搜到的教程,90%都只给你一个模板,然后说“把路径改一下就行”。但实际配置时,一个斜杠写错、一个引号没转义、一个参数顺序颠倒,都会导致MCP服务器启动失败,而IDEA的错误日志只会显示“Failed to start MCP server”,让你无从下手。我整理了四种最常见、也最容易出错的配置场景,附上真实可用的JSON和关键参数解释:

场景一:本地Node.js MCP服务器(如Filesystem Server)

{ "mcpServers": { "local-filesystem": { "command": "node", "args": [ "/Users/yourname/mcp-servers/filesystem/dist/index.js", "/Users/yourname/MyProject" ], "workingDirectory": "/Users/yourname/mcp-servers/filesystem" } } }
  • command: 必须是可执行文件名,不能是完整路径(如/usr/local/bin/node会失败)。
  • args[0]: 是MCP服务器脚本的绝对路径,不是相对路径。./dist/index.js会报错。
  • args[1]: 是你允许该服务器访问的项目根目录。这里填/Users/yourname/MyProject,服务器就只能读写这个目录下的文件,安全隔离。
  • workingDirectory: 这个参数极其重要!它决定了args里路径的解析基准。如果不设,node会尝试在IDEA的安装目录下找dist/index.js,必然失败。

场景二:用NPX动态拉取(最省心的入门方式)

{ "mcpServers": { "npx-filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem@0.5.2", "/Users/yourname/MyProject" ] } } }
  • -y: 强制确认,避免npx第一次下载包时卡在交互式提示。
  • @modelcontextprotocol/server-filesystem@0.5.2:必须指定精确版本号。不写版本,npx会每次都拉最新版,而新版MCP协议可能和IDEA 2025.2不兼容。我踩过的坑:用@latest导致xdebug_evaluate_expression返回空值,降级到0.5.2后恢复正常。
  • 最后一个参数/Users/yourname/MyProject,和场景一一样,是授权访问的根目录。

场景三:Docker容器化MCP(适合隔离环境)

{ "mcpServers": { "docker-filesystem": { "command": "docker", "args": [ "run", "-i", "--rm", "--mount", "type=bind,src=/Users/yourname/MyProject,dst=/workspace,ro", "--mount", "type=bind,src=/Users/yourname/.m2,dst=/root/.m2,ro", "mcp/filesystem:0.5.2", "/workspace" ] } } }
  • --mount: 用ro(read-only)标记挂载宿主机目录,这是安全底线。/workspace是容器内路径,/Users/yourname/MyProject是宿主机路径。
  • mcp/filesystem:0.5.2: Docker镜像名,同样要锁定版本。
  • 最后一个/workspace:告诉容器,它被授权操作的根目录是/workspace,对应宿主机的/Users/yourname/MyProject

场景四:远程HTTP MCP服务器(企业级部署)

{ "mcpServers": { "prod-mcp-api": { "url": "https://mcp-api.your-company.com/v1/stream", "headers": { "Authorization": "Bearer your-jwt-token-here", "X-Project-ID": "my-awesome-project" } } } }
  • url: 必须是完整的、带/v1/stream后缀的URL。少一个/stream,IDEA会尝试用SSE协议连接,然后失败。
  • headers: 自定义HTTP头。企业级部署必备,用于鉴权和多租户隔离。Authorization头里的JWT token,需要后端MCP服务验证。

注意:所有JSON配置里,mcpServers对象的key(如"local-filesystem")是你在IDEA UI里看到的服务器名称,它不能包含空格或特殊字符。我试过用"My Filesystem Server",结果IDEA在解析时直接崩溃重启。用"local-filesystem""prod_mcp_api"就没问题。

3. 实操详解:从零配置一个可工作的AI IDE工作流

3.1 环境准备:版本、插件与基础设置

在动手前,请务必确认你的IDEA版本和环境。JetBrains的AI IDE能力是渐进式发布的,很多网上教程写的“2025.1版支持MCP”,其实是错的。我反复验证过:

  • 最低要求:IntelliJ IDEA 2025.2 EAP(Early Access Program)。2025.1正式版虽然有AI Assistant,但没有内置MCP Server插件,也无法作为MCP客户端连接外部服务器。你必须下载EAP版,地址是https://www.jetbrains.com/idea/nextversion/。别信什么“破解版2025.1也能用”的说法,那是旧版AI插件的混淆。

  • 插件状态:MCP Server插件必须启用。它在2025.2 EAP中是默认捆绑并启用的。但如果你之前禁用过,或者用了某些清理插件,它可能被关了。检查路径:Ctrl+Alt+SPluginsInstalled标签页 → 搜索MCP Server→ 确保复选框已勾选。如果没找到,说明你的IDEA版本不对。

  • Java环境:JDK 17+是硬性要求。MCP Server插件底层大量使用Java 17的VirtualThreadStructuredTaskScope特性。我用JDK 11试过,IDEA能启动,但MCP Server在设置页里显示为灰色不可用状态。升级到Adoptium Temurin JDK 17.0.2后,一切正常。

  • 网络:首次启动需要联网下载MCP协议Schema。IDEA 2025.2会在第一次打开AI Assistant时,自动从https://github.com/modelcontextprotocol/specification拉取最新的MCP JSON Schema文件(约120KB)。如果你在公司内网,可能需要配置HTTP代理。在Help | Edit Custom VM Options里添加:

    -Dhttp.proxyHost=your-proxy.company.com -Dhttp.proxyPort=8080

完成以上准备,你就可以进入核心配置了。记住,我们的目标不是“让AI能说话”,而是“让AI能真正干活”。

3.2 第一步:配置本地Filesystem MCP服务器(最稳的起点)

这是99%的开发者应该从这里开始的配置。它不依赖网络,不依赖Docker,不依赖任何外部服务,纯粹利用IDEA自身的文件索引能力,却能提供80%的日常AI需求。

操作步骤:

  1. 打开IDEA,确保你的项目已正确加载(Project窗口里能看到src、pom.xml等)。
  2. Ctrl+Alt+S打开设置,导航到Tools | AI Assistant | Model Context Protocol (MCP)
  3. 点击右上角的Add按钮。
  4. 在弹出的对话框里,选择JSON configuration选项卡。
  5. 粘贴以下经过我实测的JSON配置(请将/Users/yourname/MyProject替换为你自己的项目绝对路径):
    { "mcpServers": { "local-filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem@0.5.2", "/Users/yourname/MyProject" ] } } }
  6. Working directory留空(npx不需要)。
  7. Server level选择Global(全局可用,所有项目都能用)。
  8. 点击OK,然后点击Apply

此时,IDEA会尝试启动MCP服务器。你会在右下角看到一个短暂的“Starting MCP server…”提示。如果成功,Status列会显示Connected。如果失败,Status会显示Failed,这时你需要查看日志。

实操心得:第一次启动失败,90%的原因是npx没装好。在终端里运行npx --version,如果报错,说明Node.js环境没配好。Mac用户用Homebrew装Node.js后,记得运行brew link node。Windows用户请确保npm的路径已加入系统PATH。

3.3 第二步:验证MCP连接并探索可用工具

连接成功只是第一步。真正的价值在于,你知道AI Assistant现在能调用哪些IDEA原生能力。这一步,我教你一个绝招:/命令触发工具列表

  1. 在IDEA右上角,找到AI Assistant的聊天输入框(图标是一个蓝色的</>)。
  2. 点击它,输入一个正斜杠/,然后稍等半秒。一个下拉菜单会自动弹出,里面列出了所有当前可用的MCP工具。
  3. 你会看到类似/get_file_problems,/search_symbol,/execute_run_configuration这样的命令。

这就是MCP的魔法:它把IDEA里几百个分散在菜单栏、右键菜单、快捷键里的功能,全部暴露成了AI可调用的API。你可以直接在聊天框里输入/get_file_problems /src/main/java/com/example/MyService.java,它就会立刻返回这个文件里所有的编译错误和警告,格式比IDEA底部的Problems窗口还要清晰。

更强大的是,AI Assistant会根据你的自然语言提问,自动组合这些工具。比如你问:“这个项目里所有用了@Async注解的方法,它们的返回类型是什么?”,AI Assistant会:

  • 先调用search_symbol查找所有@Async注解的出现位置;
  • 对每个位置,调用get_symbol_info获取其所在方法的签名;
  • 再调用get_symbol_info获取返回类型的详细信息;
  • 最后把结果汇总成表格发给你。

整个过程,你只需要说人话,剩下的交给MCP协议和IDEA的Runtime。

3.4 第三步:实战案例——用AI Assistant重构一个烂代码模块

理论说完,来个硬核实战。假设你接手了一个遗留的Spring Boot项目,里面有个OrderProcessor.java,逻辑混乱,耦合严重,你想把它拆分成OrderValidatorOrderCreatorOrderNotifier三个独立类。手动做这件事,至少要花2小时:找引用、改包名、更新import、测试……而用AI IDE,流程是这样的:

Step 1:让AI理解上下文在聊天框输入:

/analyze_code /src/main/java/com/example/order/OrderProcessor.java

AI Assistant会调用get_file_problemsget_symbol_info,返回这个类的结构概览:它有3个public方法,12个private方法,依赖了PaymentServiceEmailService等7个其他类。

Step 2:发起重构请求输入:

请将OrderProcessor类按单一职责原则进行重构。提取出订单校验逻辑到OrderValidator,订单创建逻辑到OrderCreator,订单通知逻辑到OrderNotifier。保持原有public方法签名不变,内部实现委托给新类。生成所有新类的代码,并告诉我需要修改哪些地方。

Step 3:AI执行自动化操作几秒钟后,AI Assistant会回复:

  • “已创建OrderValidator.javaOrderCreator.javaOrderNotifier.java三个新文件。”
  • “已在OrderProcessor.java中注入这三个新类的实例。”
  • “已将原方法中的逻辑拆分并委托调用。”
  • “已更新pom.xml,添加了Lombok依赖(因为新类用了@RequiredArgsConstructor)。”

它不是给你一堆代码让你复制粘贴,而是直接在你的项目里执行了create_new_filereplace_text_in_fileopen_file_in_editor等一系列MCP工具调用。你刷新Project窗口,三个新文件已经存在;打开OrderProcessor.java,代码已经改好;pom.xml也同步更新了。

Step 4:一键验证最后,输入:

/run_tests /src/test/java/com/example/order/OrderProcessorTest.java

AI Assistant会调用execute_run_configuration,运行对应的测试用例,并把控制台输出实时发给你。如果测试失败,它还能自动分析失败原因,告诉你哪里需要调整。

这个案例,完美体现了新AI IDE的核心价值:它不是一个“回答问题的机器人”,而是一个“执行任务的协作者”。你给出意图,它负责规划、调用、执行、验证,全程在IDEA内部闭环。

4. 常见问题与排查技巧实录

4.1 “MCP server failed to start”:最常遇到的启动失败

这是新手配置MCP时的第一道坎。IDEA的错误提示极其吝啬,就一句“Failed to start”,让人抓狂。根据我帮20+个同事排查的经验,这个问题90%集中在以下三个根源:

根源一:路径权限问题(Mac/Linux最常见)

  • 现象:Status显示Failed,日志里有Error: EACCES: permission denied
  • 原因:你用npx启动的MCP服务器,试图写入一个它没有权限的目录(比如/usr/local/lib)。
  • 排查:打开IDEA日志目录(Help | Show Log in Finder),进入mcp文件夹,找到对应服务器的日志文件(如local-filesystem.log)。里面会有详细的spawn ENOENTEACCES错误。
  • 解决:在JSON配置里,显式指定workingDirectory,并确保这个目录你有读写权限。例如:
    { "mcpServers": { "local-filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem@0.5.2", "/Users/yourname/MyProject"], "workingDirectory": "/Users/yourname/tmp/mcp-work" } } }
    workingDirectory指向一个你100%有权限的临时目录。

根源二:Node.js版本不兼容

  • 现象:Status显示Failed,日志里有SyntaxError: Unexpected token '?'ReferenceError: TextEncoder is not defined
  • 原因@modelcontextprotocol/server-filesystem的某些版本(如0.6.0)要求Node.js 18+,而你的系统默认是Node.js 16。
  • 排查:在终端运行node --version,再运行npx @modelcontextprotocol/server-filesystem@0.5.2 --help,看是否能正常输出帮助信息。
  • 解决永远指定已知兼容的版本号。目前最稳定的组合是Node.js 18.17.0+@modelcontextprotocol/server-filesystem@0.5.2。用nvm管理Node版本是最稳妥的方案。

根源三:防火墙/杀毒软件拦截

  • 现象:Status长时间显示Connecting...,然后超时变Failed
  • 原因:某些国产杀毒软件(如360、腾讯电脑管家)会把npx进程识别为“可疑行为”并阻止其网络访问(即使MCP是本地的,npx启动时也会尝试访问npm registry)。
  • 排查:暂时退出杀毒软件,再试一次。如果成功,就是它的问题。
  • 解决:在杀毒软件的“信任区”或“白名单”里,添加你的IDEA安装目录(如/Applications/IntelliJ IDEA.app)和Node.js安装目录(如/usr/local/bin/node)。

4.2 “AI Assistant doesn't use my MCP tools”:连接了但不干活

连接状态是Connected,但你问问题,AI Assistant还是像以前一样,只做文本补全,不调用任何MCP工具。这通常是因为:

  • 问题一:你没在正确的上下文中提问。MCP工具是上下文敏感的。如果你在聊天框里问“Java里怎么创建线程?”,这是一个通用知识问题,AI Assistant会直接回答,不会调用search_symbol。但如果你先打开MyService.java文件,然后在聊天框里问“这个类里所有创建线程的地方,用的是new Thread()还是ExecutorService?”,它就会立刻调用search_regex在当前文件里搜索new Thread\(ExecutorService

  • 问题二:MCP工具被禁用了。在Settings | Tools | MCP Server | Exposed Tools里,你可以看到所有可用的工具,默认都是启用的。但如果你之前手动关闭过某个工具(比如关了execute_terminal_command),那么AI Assistant就永远无法调用它。检查这里,确保你需要的工具(尤其是search_*,get_*,execute_*系列)前面的复选框是勾选状态。

  • 问题三:AI Assistant的模型被设为“离线”。在Settings | Tools | AI Assistant里,有一个Model下拉菜单。如果你选了Offline model (small),这个模型根本没有MCP调用能力,它只是一个轻量级的本地文本生成器。必须选择JetBrains AI Cloud或你配置好的第三方模型(如Claude),才能触发MCP。

4.3 “Brave Mode”开启后,AI乱删我的代码!”

Brave Mode(在Settings | Tools | MCP Server | Command execution里)是一个双刃剑。它允许AI Assistant在执行execute_terminal_commandreplace_text_in_file等危险操作时,跳过人工确认。好处是效率极高;坏处是,一旦AI理解错了你的意图,后果很严重。

我亲身经历的一次事故:让AI“把所有System.out.println替换成log.info”,结果它把pom.xml<plugin>标签里的println也替换了,导致Maven构建失败。

安全实践:

  • 永远不要在主分支上开启Brave Mode。我只在feature/ai-refactor这样的特性分支上启用它。
  • 开启前,务必先做一次Git Commit。这样即使出错,git reset --hard HEAD就能瞬间回滚。
  • replace_text_in_file这类操作,强制要求AI先输出“将要执行的变更diff”。你可以在聊天框里明确说:“请先给我一个diff预览,确认后再执行。” AI Assistant会调用read_file读取原文件,生成一个标准的git diff格式,让你肉眼确认无误后,再执行真正的替换。

4.4 性能瓶颈:AI Assistant响应慢,CPU飙高

当项目很大(>50万行代码)时,MCP工具调用会明显变慢,IDEA的CPU占用率会持续在80%以上。这不是Bug,而是设计使然。MCP工具(如search_symbol)需要深度遍历IDEA的PSI(Program Structure Interface)树,这个过程本身就是计算密集型的。

优化方案:

  • 限制搜索范围:在JSON配置里,把args参数从"/Users/yourname/MyProject"缩小到"/Users/yourname/MyProject/src/main"。这样MCP服务器就只索引源码,不索引target/node_modules/等无关目录。
  • 关闭不必要的MCP服务器:如果你同时配置了local-filesystemdocker-filesystemremote-mcp三个服务器,IDEA会为每个都维持一个连接。在MCP设置页里,把不用的服务器前面的复选框取消勾选,只留一个活跃的。
  • 调整IDEA内存:在Help | Edit Custom VM Options里,把-Xmx参数从默认的2048m提高到4096m。大项目下,PSI索引需要更多堆内存,否则会频繁GC,拖慢所有操作。

5. 从AI IDE到AI工作流:超越IDE的扩展可能性

MCP协议最迷人的地方,不在于它让IDEA变得更聪明,而在于它把IDEA变成了一个可编程的AI中枢。IDEA不再是你写代码的终点,而是你整个AI开发工作流的起点。

5.1 让IDEA成为你的AI Agent“大脑”

想象一下这个场景:你有一个复杂的自动化测试Agent,它需要:

  • 从Jira API拉取最新Bug报告;
  • 分析报告里的错误堆栈,定位到IDEA项目里的具体文件和行号;
  • 启动IDEA的调试器,在对应位置打上断点;
  • 运行测试,捕获失败时的变量快照;
  • 把分析结果生成Markdown报告,发回Jira。

在过去,这需要你写一个Python脚本,用requests调Jira,用pydevd连IDEA调试器,再用markdown库生成报告,整个流程脆弱且难维护。

而现在,这一切都可以用MCP完成。你的Agent只需要:

  1. 调用https://mcp.your-company.com/jira-integration这个远程MCP服务器(它封装了Jira API);
  2. 得到文件路径后,调用IDEA的get_symbol_infoxdebug_set_breakpoint
  3. 调用execute_run_configuration运行测试;
  4. 调用xdebug_get_frame_values获取变量;
  5. 最后,调用create_new_file生成报告。

IDEA,就是这个Agent的“执行引擎”。你不需要在Agent里嵌入任何IDEA SDK,只需要遵循MCP协议,它就能和IDEA无缝对话。这就是JayBrains(JetBrains AI)生态的真正威力。

5.2 构建你自己的MCP服务器:一个极简示例

JetBrains官方提供了丰富的MCP服务器参考实现,但很多时候,你需要一个定制化的工具。比如,你想让AI Assistant能直接查询你们公司的Confluence知识库。这就需要你写一个自己的MCP服务器。

下面是一个用Python写的、极简的Confluence MCP服务器骨架(基于mcpPython库):

# confluence_mcp_server.py from mcp.server.stdio import stdio_server from mcp.types import ToolResult, TextContent from mcp.server import Server import requests # 初始化MCP服务器 server = Server("confluence-search") # 定义一个名为"search_confluence"的工具 @server.tool() def search_confluence(query: str, space_key: str = "DOC") -> ToolResult: """ 在Confluence空间中搜索文档 :param query: 搜索关键词 :param space_key: Confluence空间Key,默认为DOC """ # 这里调用你们公司的Confluence REST API url = f"https://confluence.your-company.com/rest/api/content/search" params = { "cql": f'space="{space_key}" and text ~ "{query}"', "limit": 5 } headers = {"Authorization": "Bearer your-confluence-api-token"} try: response = requests.get(url, params=params, headers=headers, timeout=10) response.raise_for_status() data = response.json() # 格式化返回结果 results = [] for item in data.get("results", []): title = item.get("title", "Untitled") url = item.get("_links", {}).get("webui", "") excerpt = item.get("excerpt", "No excerpt available.") results.append(f"- [{title}]({url})\n {excerpt[:100]}...") return ToolResult(content=[TextContent(text="\n\n".join(results))]) except Exception as e: return ToolResult(content=[TextContent(text=f"Search failed: {str(e)}")]) # 启动服务器 if __name__ == "__main__": stdio_server(server)

然后,在IDEA的MCP JSON配置里,添加:

{ "mcpServers": { "confluence-search": { "command": "python", "args": ["/path/to/confluence_mcp_server.py"] } } }

配置完成后,你就可以在AI Assistant里输入/search_confluence "spring boot actuator health check",它就会实时返回Confluence里的相关文档链接。这个过程,完全遵循MCP协议,IDEA无需任何额外配置。

5.3 AIR(AI-Integrated Runtime):下一个前沿

在2025.2版里,AIR还只是一个隐藏的、实验性的功能开关(在Help | Find Action里搜索AIR可以找到)。但它代表了JetBrains的终极愿景:把AI模型直接编译进IDEA的JVM进程里,实现毫秒级的本地推理

目前,AIR支持加载一个小型的、量化后的Phi-3模型。这意味着,即使你断网,AI Assistant依然能做代码补全、注释生成、简单重构。它不依赖云端模型,所有计算都在你本地的M3芯片上完成。

我实测过,在MacBook Air M2上,AIR的code_completion响应时间是38ms,比调用云端Claude的210ms快了5倍多。虽然它现在还不能处理复杂任务(比如分析整个项目依赖),但它的存在,标志着AI IDE正在走向真正的“离线可用”。

我个人在实际操作中的体会是:MCP协议是这场革命的基石,它让IDEA从一个编辑器,变成了一个可编程的AI服务平台。而AIR,则是为这个平台装上了本地引擎。未来一年,我们看到的不会是“更好的AI插件”,而是一个全新的、以AI为原生能力的开发操作系统。你现在学到的每一个MCP配置、每一个工具调用,都是在为这个新世界提前布局。

http://www.jsqmd.com/news/1204521/

相关文章:

  • YOLO26无NMS目标检测:架构革新与部署优化
  • 人形机器人:不是仿生炫技,而是适配人类世界的物理接口
  • GX Works2安装与FX系列PLC编程实战指南
  • 5分钟解锁网易云音乐加密文件:ncmdump完整免费解密指南
  • C++定时器实现:从最小堆与时间轮原理到多线程安全设计
  • 鸿蒙 ArkTS 实战:Music Practice Timer 从创作记录到状态反馈完整解析
  • 基于微信小程序的旧物交易平台系统开题报告
  • 2026年人形机器人产业落地实况:从Demo到产线的硬核跨越
  • 文件系统接口:存储管理的核心机制与应用实践
  • Windows软件故障排查与优化实战指南
  • 字节、阿里、腾讯为什么越来越爱开源?算完账就懂了。
  • Qt4 GUI编程实战:信号槽机制与现代开发环境适配指南
  • WAM:从VLA到世界动作建模的范式跃迁
  • 宇树科技与云深处IPO进展解析
  • Linux防火墙核心工具对比:iptables与firewalld原理、配置与选型指南
  • C++大学生技能展示平台:从零构建实战项目,打造高质量简历作品集
  • C++数据类型深度解析:从内存布局到智能指针的编程基石
  • C++多线程编程:深入理解std::mutex与std::lock_guard的RAII锁管理
  • 做B站别只盯播放量,B站关键词排名优化才是长尾流量入口
  • Linux chage命令详解:用户密码时效管理实战指南
  • js项目中多层循环嵌套循环(for循环)渲染数据注意事项
  • CW32L083 MCU的GCC工具链移植实战指南
  • 2026年7月宁波模具压射料筒/压铸机气缸行业供应商推荐_宁波市北仑方阳机械有限公司 - 品牌宣传支持者
  • Gemini AI编程技术解析与实战应用
  • PlayCover网络请求优化:3大核心技术提升iOS应用下载稳定性与性能
  • 计算机毕业设计之jsp新生报道系统管理的设计与实现
  • C++应用可观测性实践:5分钟快速集成OpenTelemetry实现链路追踪
  • 新能源产线安规测试的自动化改造:从手动测试到半自动线的5个关键步骤
  • [Bug已解决] torch.linalg.cross 在 MPS(Apple Silicon)上对 bool 输入报 RuntimeError 解决方案
  • 谭浩强C++实践项目深度解析:从语法到工程实战