news 2026/9/13 4:07:39

Repomix MCP Server 实战指南:让 AI 助手直接打包、检索与读取你的代码库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Repomix MCP Server 实战指南:让 AI 助手直接打包、检索与读取你的代码库

Repomix MCP Server 实战指南:让 AI 助手直接打包、检索与读取你的代码库

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

导读

Repomix 支持 Model Context Protocol (MCP) 为核心骨架,结合仓库源码,系统讲解如何将 Repomix 作为 MCP 服务器运行、配置到 VS Code / Cline / Cursor / Claude Desktop / Claude Code 等 AI 客户端、理解--sandbox沙箱安全边界,以及逐个掌握 6 个可用 MCP 工具的完整参数与调用示例。读完本文,你将能把代码库分析工作流无缝接入任意 MCP 兼容的 AI 助手,并在安全与效率之间取得平衡。

[!NOTE] 这是一个实验性特性,团队将根据用户反馈和真实世界使用情况持续改进它。

快速开始:以 MCP 服务器模式运行 Repomix

在终端中执行:

repomix --mcp

该命令将 Repomix 以 MCP 服务器模式启动,通过标准输入输出(stdio)与支持 Model Context Protocol 的 AI 助手通信。从源码看,mcpAction.ts 将工作目录(cwd)作为服务器根目录传入runMcpServer;而 mcpServer.ts 使用StdioServerTransport建立连接,并在收到SIGINT/SIGTERM信号时优雅关闭服务器。

启动后,Repomix 默认注册 6 个打包与分析类工具(见 mcpServer.ts),并在服务器指令中向 AI 助手描述其能力:先用pack_codebasepack_remote_repository将代码整合为单个 XML 文件,再用read_repomix_outputgrep_repomix_output进行分析。

安全边界:Sandbox 沙箱模式

默认情况下,MCP 服务器可以读取运行用户可访问的任何路径。这对可信的本地助手很方便,但当服务器暴露给不受信任的客户端或 Agent 时,范围就过于宽泛了。--sandbox标志将服务器的文件工具限制在单个工作区目录内:

# 限制在当前工作目录 repomix --mcp --sandbox # 限制在指定目录 repomix --mcp --sandbox path/to/project

开启沙箱模式后:

  • 每个路径都相对于工作区根目录。绝对路径、~..以及 Windows 驱动器/UNC 路径都会被拒绝,解析到根目录之外的路径(包括通过符号链接解析的)会被丢弃。结果和错误消息也是相对的,因此不会暴露主机路径。这也适用于下文工具参考中的directorypath参数:在沙箱模式下,请将它们作为相对于工作区根目录的路径传递,而不是表格中通常描述的绝对路径。
  • 仅注册只读、限定根目录的工具:pack_codebaseread_repomix_outputgrep_repomix_outputfile_system_read_filefile_system_read_directory。远程打包、技能生成和附加外部输出会被禁用,因为它们需要访问网络、写入文件或引用任意路径。两个file_system_*工具本身也仅在沙箱模式下可用,其可访问范围由工作区根目录界定。

需要特别说明的是,这不是操作系统级别的沙箱,而是工具表面的应用级限制(纵深防御)。为不受信任的客户端托管服务器时,仍应在平台常规隔离手段(容器、专用用户)下运行。

从实现上看,沙箱边界的核心在 pathScope.ts:isEscapingPath拒绝绝对路径、Windows 相对驱动器路径(如C:foo)、~家目录引用和任何..穿越段;resolveWithinRoot进一步通过realpath解析符号链接,确保指向根目录之外的链接同样被拦截。此外,cliRun.ts 在--sandbox生效时会跳过工作区的repomix.config.*与全局配置(防止配置文件读取工作区外文件或执行命令)、将文件搜索限定在根目录,并禁用基于 git 的排序(git log可能读取不受信任的.git/config成为主机命令执行向量)。若仅指定--sandbox配合--mcp,它会警告“无效果”,因为它只影响 MCP 服务器。

配置 MCP 服务器:各主流 AI 客户端接入方式

VS Code

安装 Repomix MCP 服务器有两种方式:

方式一:使用安装徽章(点击即可注入配置)

方式二:使用命令行

code --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'

VS Code Insiders 对应:

code-insiders --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'

Cline(VS Code 插件)

编辑cline_mcp_settings.json文件:

{ "mcpServers": { "repomix": { "command": "npx", "args": [ "-y", "repomix", "--mcp" ] } } }

Cursor

在 Cursor 中,通过Cursor Settings>MCP>+ Add new global MCP server添加新的 MCP 服务器,配置与 Cline 类似。

Claude Desktop

编辑claude_desktop_config.json文件,配置与 Cline 类似。

Claude Code

在 Claude Code 中配置:

claude mcp add repomix -- npx -y repomix --mcp

另外,若希望获得更便捷的体验,可以使用官方 Repomix 插件——插件提供自然语言命令和更简单的安装方式,详见 Claude Code 插件指南。

使用 Docker 代替 npx

无需 npx,也可以用 Docker 运行 Repomix MCP 服务器:

{ "mcpServers": { "repomix-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "ghcr.io/yamadashy/repomix", "--mcp" ] } } }

MCP 工具详解(一):代码打包类

pack_codebase:打包本地代码库

该工具将本地代码目录打包为适合 AI 分析的合并 XML 文件。它会分析代码库结构、提取相关代码内容,并生成包含指标、文件树和格式化代码内容的综合报告。

参数说明:

参数必填默认值说明
directory要打包的目录路径。沙箱模式下为相对工作区根目录的路径(如".""src");非沙箱模式为绝对路径
compressfalse启用 Tree-sitter 压缩,提取核心代码签名和结构并移除实现细节。可将 Token 用量减少约 70% 同时保留语义。由于grep_repomix_output支持增量内容获取,通常不需要开启
includePatterns使用 fast-glob 模式指定要包含的文件,逗号分隔(如"**/*.{js,ts}""src/**,docs/**"
ignorePatterns使用 fast-glob 模式指定额外排除的文件,逗号分隔(如"test/**,*.spec.js"),补充.gitignore和内置排除规则
outputPatterns按文件设置包含级别,镜像配置文件中的output.patterns选项。数组元素形如{ "pattern": string, "compress"?: boolean, "directoryStructureOnly"?: boolean }。第一个匹配的模式生效;directoryStructureOnly优先于compress;两个标志都未设置时强制完整内容(可用于豁免全局compress的文件)。会覆盖目标仓库repomix.config.json中的所有output.patterns设置
topFilesLength10指标摘要中按大小展示的最大文件数量
stylexml输出格式风格:xmlmarkdownjsonplain

调用示例:

{ "directory": "/path/to/your/project", "compress": true, "includePatterns": "src/**/*.ts,**/*.md", "ignorePatterns": "**/*.log,tmp/", "outputPatterns": [ { "pattern": "src/core/**" }, { "pattern": "docs/**/*", "directoryStructureOnly": true } ], "topFilesLength": 10 }

在上面的例子中(compress: true作为未匹配文件的兜底规则),src/core/下的文件保持完整内容,docs/下的文件仅在目录结构中列出,其余所有文件被压缩。

实现细节:该工具的输入模式定义在 packCodebaseTool.ts。打包实际复用了 CLI 主流程runCli,因此 Tree-sitter 压缩、安全扫描(securityCheck: true)、token 计数等 Repomix 全部能力都自动生效。打包产物写入临时工作区(createToolWorkspace),并生成唯一的outputId注册到内存注册表,供read_repomix_output/grep_repomix_output后续访问。沙箱模式下,工具还会预先校验 include/ignore 模式(对花括号展开后的每一项做isEscapingPath检查,防止"{/etc/**,x}"这类模式夹带绝对路径)与目录存在性,并跳过本地/全局配置文件、限制搜索范围、禁用 git 排序。

pack_remote_repository:打包远程 GitHub 仓库

该工具获取、克隆并将 GitHub 仓库打包为适合 AI 分析的合并 XML 文件。它会自动克隆远程仓库、分析其结构并生成综合报告。

参数说明:

参数必填默认值说明
remoteGitHub 仓库 URL 或user/repo格式(如"yamadashy/repomix""https://github.com/user/repo""https://github.com/user/repo/tree/branch"
compressfalse同上:启用 Tree-sitter 压缩,Token 用量减少约 70%
includePatterns同上:fast-glob 包含模式,逗号分隔
ignorePatterns同上:fast-glob 排除模式,逗号分隔
outputPatterns同上:按文件设置包含级别
topFilesLength10指标摘要中的最大文件数量
stylexml输出格式风格:xmlmarkdownjsonplain

调用示例:

{ "remote": "yamadashy/repomix", "compress": true, "includePatterns": "src/**/*.ts,**/*.md", "ignorePatterns": "**/*.log,tmp/", "outputPatterns": [ { "pattern": "src/core/**" }, { "pattern": "docs/**/*", "directoryStructureOnly": true } ], "topFilesLength": 10 }

实现细节:该工具仅在非沙箱模式下注册(mcpServer.ts),因为远程获取需要网络访问。实现上同样复用runCli的远程模式,且回显给 Agent 的仓库地址会经过redactUrl脱敏处理(packRemoteRepositoryTool.ts),避免带凭据的远程地址残留在 MCP 对话记录中。

MCP 工具详解(二):输出检索类

打包完成后,AI 助手通过outputId对产物进行增量分析,无需直接访问文件系统——这正是大型仓库 Token 优化的关键。

read_repomix_output:读取打包输出

该工具读取 Repomix 生成的输出文件内容,支持通过行范围对大型文件进行部分读取。专为文件系统访问受限的环境(如 Web 环境、沙箱应用)设计。

参数说明:

参数必填默认值说明
outputId要读取的 Repomix 输出文件 ID
startLine文件开头起始行号(1 基,含该行)
endLine文件末尾结束行号(1 基,含该行)

特性:

  • 专为 Web 环境或沙箱应用设计
  • 通过 ID 获取此前生成的输出内容
  • 无需文件系统访问即可读取打包后的代码库
  • 支持大型文件的部分读取

调用示例:

{ "outputId": "8f7d3b1e2a9c6054", "startLine": 100, "endLine": 200 }

实现细节outputIdcrypto.randomBytes(8).toString('hex')生成,并连同输出文件路径注册到内存注册表(mcpToolRuntime.ts)。读取时若指定行范围,会先校验行号为正数且startLine <= endLine,再按区间切片返回contenttotalLineslinesRead等结构化结果(readRepomixOutputTool.ts)。

grep_repomix_output:在输出中检索模式

该工具使用 grep 式功能(JavaScript RegExp 语法)在 Repomix 输出文件中搜索模式,返回匹配行及可选的上下文行。

参数说明:

参数必填默认值说明
outputId要搜索的 Repomix 输出文件 ID
pattern搜索模式(JavaScript RegExp 语法)
contextLines0每个匹配前后显示的上下文行数;指定了beforeLines/afterLines时被覆盖
beforeLines每个匹配前显示的行数(类似grep -B),优先于contextLines
afterLines每个匹配后显示的行数(类似grep -A),优先于contextLines
ignoreCasefalse是否执行大小写不敏感匹配

特性:

  • 使用 JavaScript RegExp 语法进行强大的模式匹配
  • 支持上下文行以便更好理解匹配结果
  • 允许分别控制前后上下文行数
  • 支持大小写敏感与不敏感搜索

调用示例:

{ "outputId": "8f7d3b1e2a9c6054", "pattern": "function\\s+\\w+\\(", "contextLines": 3, "ignoreCase": false }

实现细节:搜索实现位于 grepRepomixOutputTool.ts。内容先按行切分一次(避免对 3~5MB 大文件重复 O(n) 拆分),逐行用new RegExp(pattern, flags)匹配,再按beforeLines/afterLines输出带行号前缀的格式化结果(匹配行用行号:前缀,上下文行用行号-前缀,间断处插入--分隔符)。无效正则会被捕获并返回明确错误。

MCP 工具详解(三):沙箱文件系统工具

file_system_read_filefile_system_read_directory两个文件系统工具仅在沙箱模式--sandbox)下可用,工作区根目录界定其可访问范围;不使用--sandbox时它们不会被注册(mcpServer.ts)。

  1. file_system_read_file

    • 读取工作区根目录相对路径的文件内容(如src/index.ts
    • 作为额外的启发式防护,拒绝匹配已知敏感信息格式(Secretlint,如 API Key、密码)的内容——访问边界是工作区根目录,而不是扫描
    • 对无效路径返回清晰错误消息,且不暴露主机路径
  2. file_system_read_directory

    • 列出工作区根目录相对路径的目录内容(如.src
    • 以明确指示符([FILE][DIR])展示文件和目录
    • 适用于探索项目结构、理解代码库组织方式

调用示例:

// 读取文件 const fileContent = await tools.file_system_read_file({ path: 'src/index.ts' }); // 列出目录内容 const dirContent = await tools.file_system_read_directory({ path: 'src' });

这些工具在 AI 助手需要以下场景时尤其有用:

  • 分析工作区中的特定文件
  • 在目录结构中导航
  • 验证文件的存在性与可访问性

实现细节:文件读取会先fs.stat区分文件/目录,读取后通过createSecretLintConfig+runSecretLint做敏感信息扫描,命中则拒绝返回(fileSystemReadFileTool.ts)。目录列出使用fs.readdirwithFileTypes选项生成[FILE]/[DIR]前缀,并附带totalItemsfileCountdirectoryCount统计(fileSystemReadDirectoryTool.ts)。沙箱模式下,路径统一经过resolveToolPathresolveWithinRoot的根目录约束与虚拟化(主机路径不会出现在任何返回内容与错误消息中);错误消息由sandboxErrorReason白名单(not foundpermission deniedpath is a directory等固定原因)与 Agent 自身的输入拼接而成,结构上杜绝了主机路径泄露(mcpToolRuntime.ts)。

使用 Repomix MCP 服务器的核心优势

  1. 直接集成:AI 助手无需手动准备文件即可直接分析代码库。
  2. 高效工作流:消除手动生成和上传文件的步骤,简化代码分析流程。
  3. 一致输出:确保 AI 助手以一致、优化的格式接收代码库。
  4. 高级特性:充分利用 Repomix 的代码压缩、Token 计数、安全扫描等全部能力。

配置完成后,你的 AI 助手可以直接使用 Repomix 的能力分析代码库,让代码分析工作流更高效。上述工具集与安全机制均有对应的测试保障,例如 mcpServer.test.ts 验证了非沙箱模式注册 6 个打包/分析工具、沙箱模式仅注册 5 个只读工具的行为,pathScope.test.ts 则覆盖了根目录逃逸拦截等路径边界用例。

相关资源

  • Claude Code 插件指南:Claude Code 的便捷插件集成
  • 配置指南:自定义 Repomix 行为(含output.patterns的配置说明)
  • 命令行选项参考:完整 CLI 参考
  • 输出格式指南:了解可用的输出格式

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 4:06:53

DVCon China 2021验证方法学解析:UVM架构、覆盖率收敛与形式验证融合

DVCon China 2021虽然已经过去&#xff0c;但那一届论文里暴露出来的验证痛点和技术转向&#xff0c;放在今天依然对得上号。如果你手头正好在做UVM验证平台、或者正在为覆盖率收敛发愁&#xff0c;翻一翻那届的论文清单&#xff0c;会发现很多问题的答案其实两年前就已经有人在…

作者头像 李华
网站建设 2026/9/13 4:06:48

疲劳驾驶检测:多模态时序建模与边缘部署实战

简介&#xff1a;本资源是一套基于Python与机器学习的疲劳驾驶检测系统完整源码实现&#xff0c;面向计算机视觉初学者、机器学习实践者及智能交通方向开发者&#xff0c;旨在解决真实道路场景中因驾驶员疲劳引发的安全隐患问题。压缩包共29个文件&#xff0c;总计151.9MB&…

作者头像 李华
网站建设 2026/9/13 4:05:28

光伏逆变器滤波器设计与控制:LC与LCL选型实战指南

1. 项目概述&#xff1a;为什么光伏逆变器滤波器设计不是“选个电感电容凑合用”的事上交大这个标题背后&#xff0c;藏着光伏并网系统里最常被低估、却最直接影响并网质量与设备寿命的核心环节——滤波器设计。很多人一看到“LC”“LCL”&#xff0c;下意识觉得就是两个电感加…

作者头像 李华
网站建设 2026/9/13 4:04:29

高效学习成果管理:从记录到应用的系统方法

1. 项目概述"今日学习成果"这个看似简单的标题背后&#xff0c;隐藏着每个学习者的成长轨迹。作为一名持续学习实践者&#xff0c;我每天都会记录自己的学习收获&#xff0c;这不仅是知识管理的有效方式&#xff0c;更是个人成长的见证。今天我想分享的是如何系统化地…

作者头像 李华
网站建设 2026/9/13 4:03:27

Steam多账号切换器:基于AutoHotkey的稳定账号管理方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华