尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Repomix MCP 服务器完整指南:让 AI 助手直接打包、搜索与读取代码库

Repomix MCP 服务器完整指南:让 AI 助手直接打包、搜索与读取代码库 Repomix MCP 服务器完整指南让 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 官方中文文档website/client/src/zh-tw/guide/mcp-server.md编写并结合仓库源码src/mcp/目录补充实现级细节。本指南讲解如何将 Repomix 以 Model Context ProtocolMCP服务器模式运行使 Claude、ChatGPT 等 AI 助手能够绕过手动生成文件 → 上传文件的繁琐流程直接调用工具完成代码库的打包、检索与分析。读完本文你将掌握--mcp与--sandbox的启动方式、VS Code / Cursor / Claude Code 等主流客户端的接入配置、全部 MCP 工具的参数语义与典型调用示例以及沙箱模式下路径隔离与工具降级的底层实现原理。[!NOTE] 这是一个实验性功能项目方表示会根据用户反馈和实际使用情况持续改进。从 CLI 工具到 MCP 服务器Repomix 的能力升级Repomix 的本职工作是将整个仓库打包成一个 AI 友好的单一文件。MCPModel Context Protocol是 AI 工具与外部数据源之间的开放标准协议Repomix 对它的支持意味着当以 MCP 服务器运行时Repomix 直接向 AI 助手暴露一组工具使其无需人工准备任何文件即可打包本地或远程仓库进行分析。启动方式非常简单只需要--mcp标志repomix --mcp该命令会以 MCP 服务器模式启动 Repomix使其可供任何支持 Model Context Protocol 的 AI 助手使用。从源码调用链看入口在 src/cli/actions/mcpAction.ts 的runMcpAction它继而调用 src/mcp/mcpServer.ts 的runMcpServer服务器名为repomix-mcp-server版本号取自仓库自身的package.json传输层使用StdioServerTransport基于标准输入/输出的 stdio 传输这也是绝大多数 MCP 客户端默认支持的方式注册完成后监听SIGINT/SIGTERM信号收到后优雅关闭服务器并退出。服务器启动时会根据是否处于沙箱模式向客户端注入不同的instructions能力说明与路径使用规则引导 AI 助手正确调用工具。沙箱模式把文件工具关进工作区默认情况下MCP 服务器可以读取运行用户所能访问的任意路径。这对受信任的本地助手很方便但当服务器暴露给不受信任的客户端或 agent 时范围就过于宽松了。--sandbox标志将服务器的文件工具限制在单一工作区目录内# 限制在当前工作目录 repomix --mcp --sandbox # 限制在特定目录 repomix --mcp --sandbox path/to/project沙箱模式下的路径规则启用沙箱模式后所有路径都相对于工作区根目录解析规则非常严格绝对路径如/x、C:\x、UNC 路径、~家目录引用、任何..穿越片段都会被拒绝解析后落在根目录之外的结果包括通过符号链接逃逸的情况同样会被丢弃返回结果与错误信息均采用相对路径不会暴露主机路径这适用于下文工具参数中的directory与path沙箱模式下请传入相对于工作区根目录的路径例如.或src而非表中描述的绝对路径。这些规则并非文档层面的约定而是由 src/mcp/pathScope.ts 中的isEscapingPath与resolveWithinRoot硬性实现isEscapingPathpathScope.ts逐一识别path.isAbsolute、Windows 盘符相对路径如C:foo、~/~/、..及任意分隔符下的..片段resolveWithinRootpathScope.ts在词法解析之外还会调用fs.realpath解析符号链接防止根目录内的软链接指向根目录外的逃逸toVirtualPath则把绝对路径转成根目录相对路径用于展示从而保证主机路径不外泄。对应的行为契约测试见 tests/mcp/pathScope.test.ts。沙箱模式下仅注册只读工具沙箱模式下服务器只会注册以下五个唯读且限定在根目录内的工具pack_codebaseread_repomix_outputgrep_repomix_outputfile_system_read_filefile_system_read_directory而远程打包、Skills 生成、附加外部输出等功能均被停用因为它们会访问网络、写入文件或引用任意路径。两个file_system_*工具本身就只在沙箱模式下才注册可用其可访问范围被工作区根目录所约束。这段分支逻辑在 mcpServer.ts 中一目了然先无条件注册三个打包/检索类工具仅当sandboxed为真时才注册文件系统工具非沙箱模式才注册远程打包与 Skills 工具。沙箱不是操作系统级隔离需要特别强调的是这是在应用层面对工具接口所做的限制纵深防御并非操作系统层面的沙箱。若要为不受信任的客户端托管此服务器仍应在平台惯用的隔离机制容器、专用用户等下运行。另外--sandbox只影响 MCP 服务器不搭配--mcp使用时不会生效。完整的 CLI 说明可参考 命令列选项。沙箱模式的更多实现细节源码补充在沙箱模式下pack_codebase的底层实现还做了几件额外的事见 src/mcp/tools/packCodebaseTool.ts跳过一切配置文件同时跳过目标工作区的repomix.config.*与操作者的全局配置防止配置文件通过output.instructionFilePath把工作区外的文件读入 agent 可见输出或通过input.processors执行命令文件搜索限定在根目录内设置confineToBaseDir: true作为兜底即使 include/ignore 模式存在无法静态展开的语法如 extglob下游也会丢弃任何解析出根目录的匹配include/ignore 模式的花括号展开检查patternsEscapeRoot先把逗号分隔的 glob 按minimatch的braceExpand展开再逐一检查防止{/etc/**,x}这类花括号备选把绝对路径走私进来关闭 git 变更排序gitSortByChanges: false默认的按变更频率排序会执行git -C workspace log从而读取不受信任工作区的.git/config例如gpg.program存在主机命令执行风险。此外沙箱模式下的错误响应采用白名单机制mcpToolRuntime.ts 的sandboxErrorReason绝不透传error.message它可能内嵌工作区根路径、安装路径、Node 运行时或操作者家目录而是仅根据错误码映射为not found、permission denied等固定原因再拼接 agent 自己输入的 subject 返回。端到端的零主机路径泄漏由 tests/mcp/tools/sandbox.contract.test.ts 等沙箱契约测试断言保障。在各类 AI 客户端中配置 Repomix MCP 服务器要配合 Claude 等 AI 助手使用需要在客户端侧配置 MCP 设置。以下配置对绝大多数支持 MCP 的客户端同样成立。VS CodeVS Code 可通过两种方式安装 Repomix MCP 服务器使用安装徽章点击 VS Code 官方的 MCP 安装徽章一键安装安装命令等价于下方的 CLI 配置使用命令行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]}ClineVS Code 扩展编辑cline_mcp_settings.json文件{ mcpServers: { repomix: { command: npx, args: [ -y, repomix, --mcp ] } } }Cursor在 Cursor 中从Cursor SettingsMCP Add new global MCP server添加新的 MCP 服务器配置方式与 Cline 类似同样是npx -y repomix --mcp。Claude Desktop编辑claude_desktop_config.json文件配置内容与 Cline 的mcpServers结构一致。Claude Code在 Claude Code 中通过一条命令即可添加claude mcp add repomix -- npx -y repomix --mcp此外也可以使用官方 Repomix 插件获得更便捷的体验——插件提供自然语言指令和更简单的配置详见 Claude Code 插件 文档。使用 Docker 代替 npx如果不希望在本机安装 Node 依赖可以使用官方 Docker 镜像代替 npx 运行 MCP 服务器{ mcpServers: { repomix-docker: { command: docker, args: [ run, -i, --rm, ghcr.io/yamadashy/repomix, --mcp ] } } }注意-i保持 stdin 开启是必要的因为 MCP 服务器通过 stdio 传输与客户端通信。可用的 MCP 工具当作为 MCP 服务器运行时Repomix 提供以下工具。下面每个工具都同时给出参数表、JSON 调用示例以及对应的源码实现路径。pack_codebase将本地代码目录打包成一个用于 AI 分析的 XML 文件。它分析代码库结构、提取相关代码内容并生成包含指标、文件树和格式化代码内容的综合报告。参数参数必需默认值说明directory是—要打包的目录的绝对路径沙箱模式下为相对工作区根目录的路径compress否false启用 Tree-sitter 压缩以提取基本代码签名和结构同时删除实现细节。在保持语义含义的同时减少约 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。topFilesLength否10在指标摘要中显示的最大文件数按大小排序style否xml输出格式样式xml、markdown、json或plain示例{ 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.tscompress、topFilesLength等参数通过 zod schema 声明了默认值与语义描述outputPatternsSchema由 mcpToolRuntime.ts 提供结构与配置文件中的OutputPattern类型一一对应可直接透传给 CLI 的outputPatterns选项。工具内部实际上复用了完整的打包流水线runCli并默认开启安全扫描。pack_remote_repository获取、克隆并将 GitHub 仓库打包成一个用于 AI 分析的 XML 文件。它会自动克隆远程仓库、分析其结构并生成综合报告。参数参数必需默认值说明remote是—GitHub 仓库 URL 或user/repo格式例如yamadashy/repomix、https://github.com/user/repo或https://github.com/user/repo/tree/branchcompress否false启用 Tree-sitter 压缩以提取基本代码签名和结构同时删除实现细节。在保持语义含义的同时减少约 70% 的令牌使用量。由于grep_repomix_output允许增量内容检索通常不需要。includePatterns否—使用 fast-glob 模式指定要包含的文件。多个模式用逗号分隔例如**/*.{js,ts}、src/**,docs/**ignorePatterns否—使用 fast-glob 模式指定要排除的附加文件。多个模式用逗号分隔例如test/**,*.spec.js。补充.gitignore和内置排除。outputPatterns否—按文件设置内容包含层级语义与pack_codebase的outputPatterns一致。topFilesLength否10在指标摘要中显示的最大文件数按大小排序style否xml输出格式样式xml、markdown、json或plain示例{ remote: yamadashy/repomix, compress: true, includePatterns: src/**/*.ts,**/*.md, ignorePatterns: **/*.log,tmp/, outputPatterns: [ { pattern: src/core/** }, { pattern: docs/**/*, directoryStructureOnly: true } ], topFilesLength: 10 }实现上src/mcp/tools/packRemoteRepositoryTool.ts该工具把remote参数直接透传给 CLI 的--remote选项复用完整的远程克隆与打包链路。值得注意的细节是返回结果中的仓库地址会经过redactUrl脱敏——带凭证的远程地址不会残留在 MCP 对话记录、客户端日志与模型上下文中。read_repomix_output读取 Repomix 生成的输出文件的内容支持对大型文件进行行范围指定的部分读取。此工具专为直接文件系统访问受限的环境如基于 Web 的环境、沙箱应用而设计。参数参数必需默认值说明outputId是—要读取的 Repomix 输出文件的 IDstartLine否文件开头起始行号从 1 开始包含endLine否文件末尾结束行号从 1 开始包含功能专为基于 Web 的环境或沙箱应用设计使用其 ID 检索先前生成的输出内容无需文件系统访问权限即可访问打包的代码库支持大型文件的部分读取示例{ outputId: 8f7d3b1e2a9c6054, startLine: 100, endLine: 200 }底层机制在 mcpToolRuntime.ts每次打包成功后会生成一个 16 位十六进制的outputIdcrypto.randomBytes(8).toString(hex)并把「ID → 输出文件路径」登记在内存注册表中read_repomix_outputsrc/mcp/tools/readRepomixOutputTool.ts通过getOutputFilePath(outputId)反查路径后按需切片读取同时校验startLine endLine、行号为正数等边界条件。grep_repomix_output使用 JavaScript RegExp 语法在 Repomix 输出文件中执行类似 grep 的搜索返回匹配行及其周围的可选上下文行。参数参数必需默认值说明outputId是—要搜索的 Repomix 输出文件的 IDpattern是—搜索模式JavaScript RegExp 语法contextLines否0在每个匹配项前后显示的上下文行数。如果指定了beforeLines/afterLines则被覆盖。beforeLines否—在每个匹配项前显示的行数类似grep -B。优先于contextLines。afterLines否—在每个匹配项后显示的行数类似grep -A。优先于contextLines。ignoreCase否false执行不区分大小写的匹配功能使用 JavaScript RegExp 语法进行强大的模式匹配支持上下文行以更好地理解匹配允许单独控制前/后上下文行区分大小写和不区分大小写的搜索选项示例{ outputId: 8f7d3b1e2a9c6054, pattern: function\\s\\w\\(, contextLines: 3, ignoreCase: false }实现上src/mcp/tools/grepRepomixOutputTool.ts搜索会把内容按行切分一次后同时用于匹配与上下文格式化避免对 3–5MB 的大文件重复split匹配行以行号:前缀标识、上下文行以行号-前缀标识块与块之间用--分隔。file_system_read_file 和 file_system_read_directory这两个文件系统工具仅在沙箱模式--sandbox下才可用其可访问范围由工作区根目录限定不使用--sandbox时它们不会被注册。file_system_read_file读取相对于工作区根目录路径下的文件内容例如src/index.ts作为额外的启发式防护拒绝符合已知敏感信息格式Secretlint的内容访问边界是工作区根目录而非该扫描对无效路径返回清晰的错误信息且不会暴露主机路径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 });从源码看file_system_read_filesrc/mcp/tools/fileSystemReadFileTool.ts的路径处理由resolveToolPath统一完成沙箱模式下先resolveWithinRoot限定边界再toVirtualPath虚拟化展示路径非沙箱模式下保持绝对路径旧契约并前置校验。读取内容后它会调用 src/core/security/workers/securityCheckWorker.ts 中的runSecretLint做一次 secretlint 扫描命中则拒绝返回。类似地read_repomix_output与grep_repomix_output在输出 ID 来自attach_packed_output这类不受信任来源时requiresSecretScan也会在每次提供服务前重新扫描内容——因为被附加的文件可能在被附加后被修改。这些工具在 AI 助手需要以下操作时特别有用分析工作区中的特定文件导航目录结构验证文件存在性和可访问性沙箱之外generate_skill 与 attach_packed_output源码补充除文档列出的六个工具外非沙箱模式下服务器还会注册另外两个工具mcpServer.tsgenerate_skillsrc/mcp/tools/generateSkillTool.ts从本地代码目录生成 Claude Agent Skills 格式的技能包输出到project/.claude/skills/name/目录包含SKILL.md入口文件与references/下的summary.md、project-structure.md、files.md、tech-stacks.md。因为涉及文件写入它在沙箱模式下被禁用。attach_packed_outputsrc/mcp/tools/attachPackedOutputTool.ts把一个已存在的 Repomix 输出文件.xml、.md、.txt、.json附加进来供 AI 分析可传目录自动按优先级查找输出文件或文件路径同样因为可引用任意路径沙箱模式下被禁用。两者在打包、远程获取之外进一步完善了 MCP 工作流打包 → 分析 → 按需读取/检索 →可选生成 Agent Skill。将 Repomix 作为 MCP 服务器使用的好处将 Repomix 作为 MCP 服务器使用提供了几个优势直接整合AI 助手可以直接分析你的代码库无需手动准备文件。高效工作流通过消除手动生成和上传文件的需求简化了代码分析过程。一致输出确保 AI 助手以一致、最优化的格式接收代码库。高级功能复用 Repomix 的全部能力如代码压缩、令牌计数和安全检查。配置完成后AI 助手可以直接使用 Repomix 的功能来分析代码库使代码分析工作流更加高效。推荐的典型工作流是先调用pack_codebase或pack_remote_repository打包再通过read_repomix_output按行范围读取、grep_repomix_output精准检索从而实现大代码库的打包一次、增量取用避免一次性把全部内容塞进模型上下文。相关资源Claude Code 插件 - 便捷的 Claude Code 插件集成配置 - 自定义 Repomix 行为含output.patterns等选项命令列选项 - 完整的 CLI 参考含--mcp与--sandbox输出格式 - 了解可用的输出格式MCP 服务器源码 - 服务器创建与工具注册逻辑路径作用域实现 - 沙箱路径隔离的底层实现沙箱契约测试 - 沙箱模式零主机路径泄漏的端到端断言【免费下载链接】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),仅供参考
返回列表