十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
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/repomixRepomix 通过 Model Context ProtocolMCP 与 MCP 模块源码系统讲解如何启动服务器、配置沙箱隔离、接入 VS Code / Cline / Cursor / Claude 全家桶并逐一定位pack_codebase、pack_remote_repository、read_repomix_output、grep_repomix_output等全部工具的底层实现。读完本文你将能亲手把 Repomix 接入任意 MCP 兼容客户端并掌握沙箱模式的权限边界与安全设计。[!NOTE] MCP 服务器是一个实验性功能Repomix 官方会根据用户反馈和实际使用情况积极改进。当前仓库内的实现与文档如 mcpServer.ts即为其最新形态。将 Repomix 作为 MCP 服务器运行Repomix 将 MCP 服务器能力直接内建于 CLI 中。要启动服务器使用--mcp标志repomix --mcp该命令以 MCP 服务器模式启动 Repomix通过标准输入输出stdio与支持 Model Context Protocol 的 AI 助手通信使其可以调用 Repomix 提供的工具而无需用户手动准备打包文件。从源码角度看--mcp与--sandbox标志定义在 src/cli/types.ts 的CliOptions中mcp?: boolean、sandbox?: boolean | string由 src/cli/actions/mcpAction.ts 转发给 mcpServer.ts 的runMcpServer。服务器本身基于modelcontextprotocol/sdk构建以repomix-mcp-server为名注册版本号取自当前 Repomix 包版本见 mcpServer.ts并通过StdioServerTransport挂载到标准输入输出上mcpServer.ts。进程收到SIGINT/SIGTERM时会优雅关闭服务器并退出。沙箱模式把工具权限限制在工作区内默认情况下MCP 服务器可以读取宿主用户能访问的任何路径。这对受信任的本地助手很便捷但当服务器暴露给不受信任的客户端或 Agent 时权限范围就过大了。--sandbox标志可将服务器的文件工具限制在单个工作区目录内# 限制在当前工作目录内 repomix --mcp --sandbox # 限制在指定目录内 repomix --mcp --sandbox path/to/project启用沙箱模式后行为变化体现在两个层面源码见 mcpServer.ts 的工具注册逻辑所有路径都相对于工作区根目录解析。绝对路径、~、..以及 Windows 驱动器/UNC 路径都会被拒绝解析后落在根目录之外的路径包括通过符号链接的情况也会被丢弃。返回结果和错误消息中的路径同样是相对路径因此不会暴露宿主路径。这也适用于下文工具参考中的directory和path参数在沙箱模式下应把它们指定为相对于工作区根目录的路径而不是表格中通常描述的绝对路径。仅注册只读且限定在根目录内的工具pack_codebase、read_repomix_output、grep_repomix_output、file_system_read_file和file_system_read_directory。远程打包、Skill 生成以及附加外部输出等功能均被禁用因为它们会访问网络、写入文件或引用任意路径。两个file_system_*工具本身也仅在沙箱模式下可用其可访问范围由工作区根目录限定。路径隔离的源码实现沙箱的核心实现在 src/mcp/pathScope.tsisEscapingPath负责判定输入是否逃逸工作区通过path.isAbsolute拦截绝对路径用正则/^[a-zA-Z]:(?![/\\])/拦截 Windows 驱动器相对路径如C:foo并拒绝~/~/家目录引用以及任何包含..的路径段兼容两种分隔符pathScope.ts。resolveWithinRoot先做词法层面的包含性校验candidate root || candidate.startsWith(root path.sep)再通过realpath解析符号链接捕捉根内链接指向根外的逃逸场景目标不存在时回退到已受词法约束的路径pathScope.ts。toVirtualPath将根目录内的绝对路径转换为工作区相对路径根目录本身表示为.保证返回给 Agent 的结果不携带宿主路径信息pathScope.ts。在pack_codebase中沙箱还额外做了三件加固见 packCodebaseTool.ts跳过工作区与操作者的全部配置文件防止output.instructionFilePath把工作区外文件读进 Agent 可见输出、或input.processors执行命令、启用confineToBaseDir作为语法无关的逃逸兜底、关闭基于 git 的排序避免执行不受信工作区.git/config中配置的外部命令。另外patternsEscapeRoot会先对 include/ignore 的 glob 做花括号展开检查防止{/etc/**,x}这类模式夹带绝对路径。沙箱模式的边界需要明确这是应用层面对工具能力范围做的限制纵深防御而非操作系统级沙箱。当为不受信任的客户端托管服务器时仍应在平台常规隔离机制容器、专用用户等下运行。另外--sandbox仅影响 MCP 服务器如果不搭配--mcp使用则不会生效。配置 MCP 服务器要将 Repomix 作为 MCP 服务器与 Claude 等 AI 助手一起使用需要在客户端侧配置 MCP 设置。核心配置形式为 JSON 中的mcpServers条目命令统一为npx -y repomix --mcp或 Docker 形式。对于 VS CodeVS Code 提供两种安装方式使用安装徽章点击即装分别对应 VS Code 与 VS Code Insiders安装命令均为npx -y repomix --mcp。使用命令行code --add-mcp {name:repomix,command:npx,args:[-y,repomix,--mcp]}对于 VS Code Insiderscode-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 类似即同上的mcpServersJSON。对于 Claude Desktop使用与 Cline 类似的配置编辑claude_desktop_config.json文件。对于 Claude Code使用以下命令在 Claude Code 中注册claude mcp add repomix -- npx -y repomix --mcp或者你可以使用官方 Repomix 插件获得更便捷的体验。插件提供自然语言命令和更简单的设置详情参阅 Claude Code 插件文档。使用 Docker 代替 npx如果不想依赖 npx也可以用 Docker 镜像运行。将command改为docker并传入镜像运行参数{ mcpServers: { repomix-docker: { command: docker, args: [ run, -i, --rm, ghcr.io/yamadashy/repomix, --mcp ] } } }可用的 MCP 工具当作为 MCP 服务器运行时Repomix 注册了如下工具注册逻辑见 mcpServer.ts。所有工具均声明readOnlyHint: true即只读、无破坏性副作用。pack_codebase将本地代码目录打包成一个用于 AI 分析的 XML 文件。它分析代码库结构、提取相关代码内容并生成包含指标、文件树和格式化代码内容的综合报告。实现上该工具将参数映射为 CLI 选项后调用runCli执行打包输出写入工具临时工作区并返回outputId、token 数等结构化结果packCodebaseTool.ts。参数参数必需默认值说明directory是—要打包的目录的绝对路径沙箱模式下为相对工作区根目录的路径如.或srccompress否false启用 Tree-sitter 压缩以提取基本代码签名和结构同时删除实现细节。在保持语义信息的同时减少约 70% 的 token 用量。由于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/下的文件仅在目录结构中列出其余文件都会被压缩。pack_remote_repository获取、克隆并将 GitHub 仓库打包成一个用于 AI 分析的 XML 文件。它自动克隆远程仓库、分析其结构并生成综合报告。该工具仅在非沙箱模式下注册需要网络访问实现于 packRemoteRepositoryTool.ts将remote直接透传给 CLI 的远程处理流程。参数参数必需默认值说明remote是—GitHub 仓库 URL 或user/repo格式例如yamadashy/repomix、https://github.com/user/repo或https://github.com/user/repo/tree/branchcompress否false启用 Tree-sitter 压缩以提取基本代码签名和结构同时删除实现细节。在保持语义信息的同时减少约 70% 的 token 用量。由于grep_repomix_output支持按需检索内容一般不需要启用此选项includePatterns否—使用 fast-glob 模式指定要包含的文件。多个模式用逗号分隔例如**/*.{js,ts}、src/**,docs/**ignorePatterns否—使用 fast-glob 模式指定要排除的额外文件。多个模式用逗号分隔例如test/**,*.spec.js。补充.gitignore和内置排除outputPatterns否—按文件设置内容包含级别与配置文件中的output.patterns选项对应。数组元素结构与pack_codebase相同{ pattern, compress?, directoryStructureOnly? }优先级规则一致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 }值得注意的安全细节该工具在回显仓库地址时会调用redactUrl对 URL 做脱敏packRemoteRepositoryTool.ts避免带凭据的远程地址残留在 MCP 会话记录、客户端日志与模型上下文中。read_repomix_output读取 Repomix 生成的输出文件内容支持对大文件按行范围部分读取。此工具专为直接文件系统访问受限的环境而设计如基于 Web 的环境或沙箱应用它通过outputId从输出注册表中查找文件路径无需 Agent 拥有文件系统访问权限即可读取打包结果readRepomixOutputTool.ts。参数参数必需默认值说明outputId是—要读取的 Repomix 输出文件的 IDstartLine否文件开头起始行号从 1 开始包含endLine否文件末尾结束行号从 1 开始包含功能专为基于 Web 的环境或沙箱应用程序设计使用其 ID 检索先前生成的输出内容无需文件系统访问权限即可访问打包的代码库支持大文件的部分读取示例{ outputId: 8f7d3b1e2a9c6054, startLine: 100, endLine: 200 }该工具对startLine/endLine做了完整校验均需 1、startLine不得大于endLine、起始行不得超过文件总行数并在读取内容前检查输出注册表与文件是否存在readRepomixOutputTool.ts。当输出来自不可信路径时还会先执行 Secretlint 扫描再返回内容。grep_repomix_output使用 JavaScript RegExp 语法在 Repomix 输出文件中执行类似 grep 的搜索返回匹配行及其可选上下文行。其搜索、格式化逻辑被拆分为可独立测试的searchInLines、formatSearchResults、performGrepSearch等函数grepRepomixOutputTool.ts输出中匹配行以行号:前缀标记、上下文行以行号-前缀标记。参数参数必需默认值说明outputId是—要搜索的 Repomix 输出文件的 IDpattern是—搜索模式JavaScript RegExp 语法contextLines否0在每个匹配项前后显示的上下文行数。如果指定了beforeLines/afterLines则被覆盖beforeLines否—在每个匹配项前显示的行数类似grep -B。优先于contextLinesafterLines否—在每个匹配项后显示的行数类似grep -A。优先于contextLinesignoreCase否false执行不区分大小写的匹配功能使用 JavaScript RegExp 语法进行强大的模式匹配支持上下文行以更好地理解匹配允许单独控制前/后上下文行区分大小写和不区分大小写的搜索选项示例{ outputId: 8f7d3b1e2a9c6054, pattern: function\\s\\w\\(, contextLines: 3, ignoreCase: false }典型工作流提示pack_codebase生成的 XML 可能很大直接全量读取会占用大量上下文。更高效的做法是先打包不开启compress再用grep_repomix_output精确检索感兴趣的模式配合read_repomix_output按行范围读取相关片段——这正是文档与源码中反复强调一般不需要启用compress的原因。file_system_read_file 和 file_system_read_directory这两个文件系统工具仅在沙箱模式--sandbox下可用可访问范围由工作区根目录限定如果不使用--sandbox它们不会被注册mcpServer.ts。非沙箱模式下直接文件访问应交给客户端自身的文件工具。file_system_read_file读取相对于工作区根目录的路径下的文件内容例如src/index.ts返回内容、大小、编码与行数fileSystemReadFileTool.ts作为一项额外的启发式防护措施拒绝匹配已知敏感信息格式Secretlint的内容访问边界是工作区根目录而非该扫描对无效路径返回清晰的错误消息且不会暴露宿主路径file_system_read_directory列出相对于工作区根目录的路径下的目录内容例如.或src并统计文件数、子目录数与总条目数fileSystemReadDirectoryTool.ts使用清晰的指示符[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 助手需要执行以下操作时特别有用分析工作区中的特定文件导航目录结构验证文件存在性和可访问性沙箱内推荐探索路径在沙箱模式下Agent 可以先用file_system_read_directory参数.了解工作区布局再用file_system_read_file读取单个文件或用pack_codebase参数.一次性打包整个工作区之后通过read_repomix_output/grep_repomix_output增量分析——整个过程不暴露任何工作区之外的路径信息。将 Repomix 作为 MCP 服务器使用的好处将 Repomix 作为 MCP 服务器使用提供了几个优势直接集成AI 助手可以直接分析你的代码库无需手动文件准备。高效工作流通过消除手动生成和上传文件的需求简化了代码分析过程。一致输出确保 AI 助手以一致、优化的格式接收代码库。高级功能利用 Repomix 的所有功能如代码压缩、token 计数和安全检查。打包过程默认启用securityCheck见 packCodebaseTool.ts输出文件中匹配已知敏感信息格式的内容会被拦截。配置完成后你的 AI 助手可以直接使用 Repomix 的功能来分析代码库使代码分析工作流更加高效。相关资源Claude Code 插件 —— 便捷的 Claude Code 插件集成配置 —— 自定义 Repomix 行为命令行选项 —— 完整的 CLI 参考输出格式 —— 了解可用的输出格式此外想深入理解工具实现与测试细节的读者可在仓库中继续阅读 MCP 服务器注册逻辑、沙箱路径隔离、pack_codebase 实现 以及 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),仅供参考
返回列表