mcpField
S
Serena

Serena

本地服务
oraios.github.io开发工具30.8k今天更新

关于 Serena

Serena 是面向编码 Agent 的 MCP 服务,提供语义代码导航、编辑、重构和调试能力。它支持语言服务器与 JetBrains 后端,并可配置工具和项目工作流记忆。

主要功能

  1. 01符号级代码检索
  2. 02语义编辑与重构
  3. 03诊断与代码检查
  4. 04基于 JetBrains 的调试
  5. 05可配置的项目记忆

适用场景

  1. 01浏览大型代码库
  2. 02跨文件重命名符号
  3. 03执行结构化代码编辑
  4. 04通过 Agent 调试程序

MCP 相关

Serena 向 MCP 客户端提供语义代码检索、编辑、重构和调试工具。客户端可通过启动命令运行服务,也可连接其 HTTP 模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"serena-agent"
]
}
}
}
启动命令uvx serena-agent

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiserena-agent1.5.3

工具

28

收录的工具列表 · 更新于 3 周前

参数类型必填说明
contentstring是要写入文件的内容(需采用适当的编码)。
relative_pathstring是要创建文件的相对路径。

详细介绍

README 配图 README 配图

为你的编码 Agent 打造的 IDE
discord license: GPL-3.0-or-later

  • Serena 提供 IDE 级别的核心能力,包括语义代码检索、编辑、重构和调试工具, 可在符号层面运作并利用代码的关系结构。
  • 它通过模型上下文协议(MCP)与任何客户端/大模型集成。

Serena 的Agent 优先工具设计采用稳健的高层抽象,使其有别于依赖行号或基础搜索模式等底层概念的方案。

实际上,这意味着你的 Agent 能够更快速、更高效、更可靠地运作,尤其是在规模较大、复杂度较高的代码库中。

提示

Serena v2 已发布,带来了全新的基于 REPL 的 Agent 接口。
了解详情 查看新接口的介绍,以及如何进行配置。

视频

README 配图

我们的“最终用户”怎么说

虽然下载并设置 Serena 的是人类,但我们的最终用户本质上是 AI Agent。 作为实际使用 Serena 工具的一方,它们最有资格评价 Serena。

我们设计了一份不带偏见的评估提示词,引导 Agent 完成约 20 项常规编码任务, 这些任务代表了日常开发工作, 以便评估在搭配 Agent 自带工具时,Serena 工具能带来多大价值。

以下是 Agent 反馈的一句话总结:

Claude Code 中的 Opus 4.6(high),用于大型 Python 代码库:

“Serena 基于 IDE 的语义工具是我工具箱中最有影响力的新增工具——跨文件重命名、移动和查找引用这些操作,原本需要 8–12 个谨慎且容易出错的步骤,现在只需一次原子调用就能完成。我一定会请合作的开发者为我配置它。”

Codex CLI 中的 GPT 5.4(high),用于 Java 代码库:

“作为编码 AI Agent,我会请我的主人添加 Serena,因为它为我补上了 IDE 级别的符号、引用和重构理解能力,让脆弱的文本修改变成更从容、更快速、更有把握的代码变更,尤其是在语义至关重要的地方。”

Copilot CLI 中的 GPT 5.4(medium),用于大型多语言单体代码库:

“作为编码 Agent,我一定会请我的主人添加 Serena,因为它让我在处理真实代码时明显更加敏锐、从容——尤其是在符号感知导航、跨文件重构和单体代码库依赖跳转方面——同时,我仍会使用内置工具完成细小的文本编辑和非代码工作。”

不同设置下的不同 Agent 独立得出了相同结论。

给你的 Agent 配上它一直想要的工具,并将 Serena MCP 添加到你的客户端吧!

查看我们的文档,了解完整的方法及更详尽的评估结果;也可以在你选择的项目上自行开展评估。

Serena 的工作原理

Serena 提供编码工作流所需的工具, 但实际工作需要由大模型来完成,并由其协调工具的使用。

Serena 可通过**模型上下文协议(MCP)**扩展现有 AI 客户端的功能。 大多数现代 AI 聊天客户端都直接支持 MCP,包括:

  • 基于终端的客户端,如 Claude Code、Codex、OpenCode 或 Gemini-CLI;
  • VSCode、Cursor 和 JetBrains IDE 的 IDE 及 IDE 助手插件(Copilot、Junie、JetBrains AI Assistant 等);
  • 桌面和 Web 客户端,如 Claude Desktop、Codex App 或 OpenWebUI。
README 配图

:tv: 另请参阅:5 分钟了解 Serena(YouTube)

要将 Serena MCP 服务连接到客户端,你可以:

  • 向客户端提供启动命令,以便其启动 MCP 服务;或
  • 自行以 HTTP 模式启动 Serena MCP 服务,并向客户端提供 URL。

请参阅下方的快速入门部分,了解如何开始使用。

编程语言支持与语义分析能力

Serena 提供一系列多用途的代码查询和编辑功能, 这些功能基于对代码的符号理解。 借助这些能力,你的 Agent 可以像经验丰富的开发者利用 IDE 功能那样发现和编辑代码。 即使面对非常庞大且复杂的项目,Serena 也能高效找到合适的上下文并完成正确的操作!

这些能力由两种可选技术提供支持:

  • 语言服务:实现语言服务协议(LSP)的服务——免费开源的替代方案,也是默认选项。
  • Serena JetBrains 插件:利用 JetBrains IDE 强大的代码分析和编辑能力(付费插件;提供免费试用)。

你可以根据偏好和需求选择其中一种后端。

语言服务

Serena 集成了强大的抽象层,用于接入实现语言服务协议(LSP)的语言服务。 底层语言服务通常是开源项目,或至少可免费使用。

使用 Serena 的语言服务后端时,我们支持 40 多种编程语言,包括: Ada / SPARK、AL、Angular、Ansible、Astro、Bash、BSL、C#、C/C++、Clojure、Crystal、CUE、Dart、Deno、Elixir、Elm、Erlang、Fortran、F#、GDScript、Gleam、GLSL、Go、GraphQL、Groovy、Haskell、Haxe、HLSL、HTML、Java、JavaScript、JSON、Julia、Kotlin、LaTeX、Lean 4、Lua、Luau、Markdown、MATLAB、mSL、Nextflow、Nix、OCaml、Pascal、Perl、PHP、PowerShell、Python、QML、R、Rego、Ruby、Rust、Scala、SCSS / Sass / CSS、Solidity、Svelte、Swift、SystemVerilog、Terraform、TOML、TypeScript、VB.NET、Vue、WGSL、Wolfram Language、YAML 和 Zig。

Serena JetBrains 插件

付费版 Serena JetBrains 插件(提供免费试用) 利用 JetBrains IDE 强大的代码分析能力。 该插件自然支持 JetBrains IDE 所支持的所有编程语言和框架, 包括 IntelliJ IDEA、PyCharm、Android Studio、WebStorm、PhpStorm、RubyMine、GoLand,以及可能还有其他 IDE(但不支持 Rider 和 CLion)。

README 配图

更多详情以及插件应用说明,请参阅我们的文档页面。

功能

Serena 提供丰富的工具,可高效检索、编辑和重构代码,还提供用于长期运行 Agent 工作流的记忆系统。

Serena 涵盖范围广泛,并通过多层配置系统适应你的需求。

详情 ### 检索

Serena 的检索工具让 Agent 能够在符号层面探索代码库,了解其结构和关系, 而无需读取整个文件。

能力语言服务器JetBrains 插件
查找符号是是
符号概览(文件大纲)是是
查找引用符号是是
搜索项目依赖--是
类型层次结构--是
查找声明是*是
查找实现是**是
查询外部项目是是
诊断/检查是是

*: 通常无法用于外部依赖中的声明。
**: 仅适用于部分语言,且受语言服务器功能限制。

重构

如果没有精准的重构工具,Agent 就不得不采用不可靠且成本高昂的搜索和替换操作。

能力语言服务器JetBrains 插件
重命名是(仅限符号)是(符号、文件、目录)
移动(符号、文件、目录)--是
内联--是
传播删除(移除未使用的代码)--是
符号化编辑

与常见替代方案相比,Serena 的符号化编辑工具不易出错,且能大幅节省令牌。

能力语言服务器JetBrains 插件
替换符号主体是是
在符号后插入是是
在符号前插入是是
安全删除是是
交互式调试

Serena 的高度通用调试工具仅在 JetBrains 插件中提供, Agent 可通过持久的 REPL 式界面设置断点、检查变量、计算表达式并控制执行流程。

基本功能

除了语义功能外,Serena 还包含一组基本实用工具,以完善其功能。 在 Claude Code 或 Codex 等 Agent 工作框架中使用 Serena 时,这些工具通常默认处于禁用状态, 因为外围工作框架已提供功能重叠的文件、搜索和 shell 能力。

  • search_for_pattern – 在整个代码库中灵活地进行正则表达式搜索
  • replace_content – 面向 Agent 优化的正则表达式和字面文本替换
  • list_dir / find_file – 列出目录内容并搜索文件
  • read_file – 读取文件或文件片段
  • execute_shell_command – 运行 shell 命令(例如构建、测试、代码检查)
记忆管理

记忆系统是长期运行的 Agent 工作流不可或缺的一部分,尤其是在需要跨会话、用户和项目共享知识时。 尽管它很简单,我们仍收到许多用户的积极反馈;他们通常会将 Serena 的记忆管理系统与 Agent 的内部系统(例如 AGENTS.md 文件)结合使用。 如果你更喜欢使用其他方案,也可以轻松禁用它。

可配置性

Serena 的活动工具、工具描述、提示词、语言后端详细信息以及许多其他方面, 都可以通过调整几行 YAML 灵活地按需配置。 为此,Serena 提供了多个层级(可组合)的配置:

  • 全局配置
  • MCP 启动命令(CLI)配置
  • 按项目配置(支持本地覆盖)
  • 特定执行上下文的配置(例如,针对特定客户端)
  • 可动态组合的配置片段(模式)

快速开始

重要

请勿通过 MCP 或插件市场安装 Serena!其中包含过时且不理想的安装命令。

前提条件。Serena 由 uv 管理,唯一必需的前提条件是安装 uv。

安装 Serena。通过 uv 安装 Serena 的方式如下:

uv tool install -p 3.13 serena-agent

成功安装后,命令 serena 应可在你的 Shell 中使用。

说明

使用语言服务器后端时,可能需要安装一些额外依赖,以支持特定语言; 详情请参阅语言支持页面。

初始化 Serena。要初始化 Serena 并确认设置正常运行,只需运行:

serena init

默认情况下,这会将 Serena 配置为使用语言服务器后端。若要改用 JetBrains 后端,请添加参数 -b JetBrains (更多使用详情请参阅 JetBrains 插件文档页面)。
无论使用哪种后端,你都应该会看到一条成功消息,表明 Serena 已成功初始化。

配置客户端。要将 Serena 连接到你偏好的 MCP 客户端,通常需要在客户端中配置启动命令。 请访问链接,查看如何为 Claude Code、Codex、Claude Desktop、支持 MCP 的 IDE 以及其他客户端(例如本地和基于 Web 的 GUI)设置 Serena 的具体说明。

提示

虽然可以轻松快速上手,但 Serena 是一套功能强大的工具包,提供许多配置选项。 我们强烈建议阅读用户指南,以充分发挥 Serena 的作用。

我们特别建议阅读以下内容……

用户指南

有关如何有效使用 Serena 的详细说明,请参阅用户指南。

致谢

Serena 的很大一部分内容,尤其是对各种语言的支持,来自开源社区的贡献。 我们非常感谢众多贡献者,是他们让这一切成为可能,并为 Serena 发展 成为如今的样子发挥了重要作用。

许可证

Serena 按组件分别授权:SolidLSP(src/solidlsp)采用 MIT 许可证, Serena 应用程序(其余所有内容)采用 GPL-3.0-or-later。 将两者结合的发行版本整体受 GPL 约束。

权威概览请参阅 LICENSE,背景信息请参阅 许可证文档。 贡献者须接受我们的 CLA;请参阅 CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。