Máy chủ MCP
Repomix hỗ trợ Model Context Protocol (MCP), cho phép các trợ lý AI tương tác trực tiếp với codebase của bạn. Khi chạy như một máy chủ MCP, Repomix cung cấp các công cụ cho phép các trợ lý AI đóng gói repository cục bộ hoặc từ xa để phân tích mà không cần chuẩn bị file thủ công.
NOTE
Đây là một tính năng thử nghiệm mà chúng tôi sẽ tích cực cải thiện dựa trên phản hồi của người dùng và việc sử dụng thực tế
Chạy Repomix như một Máy chủ MCP
Để chạy Repomix như một máy chủ MCP, sử dụng flag --mcp:
repomix --mcpĐiều này khởi động Repomix ở chế độ máy chủ MCP, làm cho nó có sẵn cho các trợ lý AI hỗ trợ Model Context Protocol.
Chế độ Sandbox
Theo mặc định, máy chủ MCP có thể đọc bất kỳ đường dẫn nào mà người dùng host có thể truy cập. Điều này thuận tiện cho một trợ lý cục bộ đáng tin cậy, nhưng lại quá rộng khi máy chủ được expose cho một client hoặc agent không đáng tin cậy. Flag --sandbox giới hạn các công cụ tệp của máy chủ trong một thư mục workspace duy nhất:
# Giới hạn trong thư mục làm việc hiện tại
repomix --mcp --sandbox
# Giới hạn trong một thư mục cụ thể
repomix --mcp --sandbox path/to/projectKhi chế độ sandbox được bật:
- Mọi đường dẫn đều tương đối với gốc workspace. Đường dẫn tuyệt đối,
~,.., và đường dẫn ổ đĩa/UNC của Windows đều bị từ chối, và các đường dẫn phân giải ra bên ngoài gốc (kể cả thông qua symlink) đều bị loại bỏ. Kết quả và thông báo lỗi cũng tương đối, vì vậy đường dẫn trên máy host không bị lộ ra. Điều này áp dụng cho các tham sốdirectoryvàpathtrong phần công cụ tham chiếu bên dưới: ở chế độ sandbox, hãy truyền chúng dưới dạng tương đối với gốc workspace, thay vì đường dẫn tuyệt đối như các bảng đó thường mô tả. - Chỉ các công cụ chỉ-đọc, bị giới hạn trong thư mục gốc mới được đăng ký:
pack_codebase,read_repomix_output,grep_repomix_output,file_system_read_file, vàfile_system_read_directory. Đóng gói từ xa, tạo skill, và đính kèm đầu ra bên ngoài đều bị vô hiệu hóa, vì chúng cần truy cập mạng, ghi tệp, hoặc tham chiếu đến các đường dẫn tùy ý. Bản thân hai công cụfile_system_*cũng chỉ khả dụng ở chế độ sandbox, nơi gốc workspace giới hạn phạm vi mà chúng có thể truy cập.
Đây là một biện pháp giới hạn ở cấp độ ứng dụng đối với bề mặt công cụ (phòng thủ theo chiều sâu), không phải một sandbox ở cấp độ hệ điều hành. Khi host máy chủ cho các client không đáng tin cậy, bạn vẫn nên chạy nó dưới cơ chế cách ly thông thường của nền tảng (container, người dùng riêng biệt).
--sandbox chỉ ảnh hưởng đến máy chủ MCP; nó không có tác dụng gì nếu không có --mcp.
Cấu hình Máy chủ MCP
Để sử dụng Repomix như một máy chủ MCP với các trợ lý AI như Claude, bạn cần cấu hình các thiết lập MCP:
Cho VS Code
Bạn có thể cài đặt máy chủ MCP Repomix trong VS Code bằng một trong các phương pháp sau:
- Sử dụng huy hiệu cài đặt:
- Sử dụng dòng lệnh:
code --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'Cho VS Code Insiders:
code-insiders --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'Cho Cline (phần mở rộng VS Code)
Chỉnh sửa file cline_mcp_settings.json:
{
"mcpServers": {
"repomix": {
"command": "npx",
"args": [
"-y",
"repomix",
"--mcp"
]
}
}
}Cho Cursor
Trong Cursor, thêm một máy chủ MCP mới từ Cursor Settings > MCP > + Add new global MCP server với cấu hình tương tự như Cline.
Cho Claude Desktop
Chỉnh sửa file claude_desktop_config.json với cấu hình tương tự như Cline.
Cho Claude Code
Để cấu hình Repomix như máy chủ MCP trong Claude Code, sử dụng lệnh sau:
claude mcp add repomix -- npx -y repomix --mcpHoặc, bạn có thể sử dụng plugin Repomix chính thức để có trải nghiệm thuận tiện hơn. Các plugin cung cấp lệnh ngôn ngữ tự nhiên và thiết lập dễ dàng hơn. Xem tài liệu Plugin Claude Code để biết chi tiết.
Sử dụng Docker thay vì npx
Thay vì sử dụng npx, bạn có thể sử dụng Docker để chạy Repomix như một máy chủ MCP:
{
"mcpServers": {
"repomix-docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/yamadashy/repomix",
"--mcp"
]
}
}
}Các công cụ MCP có sẵn
Khi chạy như một máy chủ MCP, Repomix cung cấp các công cụ sau:
pack_codebase
Công cụ này đóng gói một thư mục code cục bộ thành một file XML để phân tích AI. Nó phân tích cấu trúc codebase, trích xuất nội dung code liên quan và tạo ra một báo cáo toàn diện bao gồm metrics, cây file và nội dung code được định dạng.
Tham số:
| Tham số | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|
directory | Có | — | Đường dẫn tuyệt đối đến thư mục cần đóng gói |
compress | Không | false | Kích hoạt nén Tree-sitter để trích xuất các chữ ký code cần thiết và cấu trúc trong khi loại bỏ chi tiết triển khai. Giảm sử dụng token khoảng 70% trong khi bảo toàn ý nghĩa ngữ nghĩa. Thường không cần thiết vì grep_repomix_output cho phép truy xuất nội dung tăng dần. |
includePatterns | Không | — | File để bao gồm sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "**/*.{js,ts}", "src/**,docs/**") |
ignorePatterns | Không | — | File bổ sung để loại trừ sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "test/**,*.spec.js"). Bổ sung cho .gitignore và loại trừ tích hợp. |
outputPatterns | Không | — | Các cấp độ bao gồm theo từng file, phản ánh tùy chọn output.patterns trong file cấu hình. Một mảng các mục { "pattern": string, "compress"?: boolean, "directoryStructureOnly"?: boolean }. Pattern khớp đầu tiên sẽ được áp dụng; directoryStructureOnly được ưu tiên hơn compress, và một kết quả khớp không có cờ nào trong hai cờ này sẽ buộc hiển thị nội dung đầy đủ (hữu ích để loại trừ file khỏi compress toàn cục). Ghi đè mọi output.patterns từ repomix.config.json của repository đích. |
topFilesLength | Không | 10 | Số lượng file lớn nhất theo kích thước để hiển thị trong tóm tắt metrics |
style | Không | xml | Kiểu định dạng đầu ra: xml, markdown, json, hoặc plain |
Ví dụ:
{
"directory": "/path/to/your/project",
"compress": true,
"includePatterns": "src/**/*.ts,**/*.md",
"ignorePatterns": "**/*.log,tmp/",
"outputPatterns": [
{ "pattern": "src/core/**" },
{ "pattern": "docs/**/*", "directoryStructureOnly": true }
],
"topFilesLength": 10
}Với ví dụ trên (compress: true đóng vai trò là phương án bao quát cho các file không khớp), các file trong src/core/ được giữ nguyên nội dung đầy đủ, các file trong docs/ chỉ được liệt kê trong cấu trúc thư mục, và mọi thứ còn lại đều được nén.
pack_remote_repository
Công cụ này lấy, clone và đóng gói một repository GitHub thành một file XML để phân tích AI. Nó tự động clone repository từ xa, phân tích cấu trúc của nó và tạo ra một báo cáo toàn diện.
Tham số:
| Tham số | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|
remote | Có | — | URL repository GitHub hoặc định dạng user/repo (ví dụ: "yamadashy/repomix", "https://github.com/user/repo", hoặc "https://github.com/user/repo/tree/branch") |
compress | Không | false | Kích hoạt nén Tree-sitter để trích xuất các chữ ký code cần thiết và cấu trúc trong khi loại bỏ chi tiết triển khai. Giảm sử dụng token khoảng 70% trong khi bảo toàn ý nghĩa ngữ nghĩa. Thường không cần thiết vì grep_repomix_output cho phép truy xuất nội dung tăng dần. |
includePatterns | Không | — | File để bao gồm sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "**/*.{js,ts}", "src/**,docs/**") |
ignorePatterns | Không | — | File bổ sung để loại trừ sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "test/**,*.spec.js"). Bổ sung cho .gitignore và loại trừ tích hợp. |
outputPatterns | Không | — | Các cấp độ bao gồm theo từng file, phản ánh tùy chọn output.patterns trong file cấu hình. Một mảng các mục { "pattern": string, "compress"?: boolean, "directoryStructureOnly"?: boolean }. Pattern khớp đầu tiên sẽ được áp dụng; directoryStructureOnly được ưu tiên hơn compress, và một kết quả khớp không có cờ nào trong hai cờ này sẽ buộc hiển thị nội dung đầy đủ (hữu ích để loại trừ file khỏi compress toàn cục). |
topFilesLength | Không | 10 | Số lượng file lớn nhất theo kích thước để hiển thị trong tóm tắt metrics |
style | Không | xml | Kiểu định dạng đầu ra: xml, markdown, json, hoặc plain |
Ví dụ:
{
"remote": "yamadashy/repomix",
"compress": true,
"includePatterns": "src/**/*.ts,**/*.md",
"ignorePatterns": "**/*.log,tmp/",
"outputPatterns": [
{ "pattern": "src/core/**" },
{ "pattern": "docs/**/*", "directoryStructureOnly": true }
],
"topFilesLength": 10
}read_repomix_output
Công cụ này đọc nội dung của một file đầu ra được tạo bởi Repomix. Hỗ trợ đọc một phần với chỉ định phạm vi dòng cho các file lớn. Công cụ này được thiết kế cho các môi trường mà việc truy cập hệ thống file trực tiếp bị hạn chế.
Tham số:
| Tham số | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|
outputId | Có | — | ID của file đầu ra Repomix cần đọc |
startLine | Không | Đầu file | Số dòng bắt đầu (bắt đầu từ 1, bao gồm) |
endLine | Không | Cuối file | Số dòng kết thúc (bắt đầu từ 1, bao gồm) |
Tính năng:
- Được thiết kế đặc biệt cho các môi trường dựa trên web hoặc ứng dụng sandbox
- Truy xuất nội dung của các đầu ra được tạo trước đó bằng ID của chúng
- Cung cấp quyền truy cập đến codebase được đóng gói mà không cần truy cập hệ thống file
- Hỗ trợ đọc một phần cho các file lớn
Ví dụ:
{
"outputId": "8f7d3b1e2a9c6054",
"startLine": 100,
"endLine": 200
}grep_repomix_output
Công cụ này tìm kiếm các pattern trong một file đầu ra Repomix sử dụng chức năng giống grep với cú pháp JavaScript RegExp. Trả về các dòng khớp với các dòng ngữ cảnh tùy chọn xung quanh các kết quả khớp.
Tham số:
| Tham số | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|
outputId | Có | — | ID của file đầu ra Repomix cần tìm kiếm |
pattern | Có | — | Pattern tìm kiếm (cú pháp JavaScript RegExp) |
contextLines | Không | 0 | Số dòng ngữ cảnh trước và sau mỗi kết quả khớp. Bị ghi đè bởi beforeLines/afterLines nếu được chỉ định. |
beforeLines | Không | — | Dòng hiển thị trước mỗi kết quả khớp (như grep -B). Ưu tiên hơn contextLines. |
afterLines | Không | — | Dòng hiển thị sau mỗi kết quả khớp (như grep -A). Ưu tiên hơn contextLines. |
ignoreCase | Không | false | Thực hiện khớp không phân biệt chữ hoa chữ thường |
Tính năng:
- Sử dụng cú pháp JavaScript RegExp cho khớp pattern mạnh mẽ
- Hỗ trợ các dòng ngữ cảnh để hiểu rõ hơn về các kết quả khớp
- Cho phép điều khiển riêng biệt các dòng ngữ cảnh trước/sau
- Tùy chọn tìm kiếm phân biệt và không phân biệt chữ hoa chữ thường
Ví dụ:
{
"outputId": "8f7d3b1e2a9c6054",
"pattern": "function\\s+\\w+\\(",
"contextLines": 3,
"ignoreCase": false
}file_system_read_file và file_system_read_directory
Hai công cụ hệ thống file này chỉ khả dụng ở chế độ sandbox (--sandbox), nơi gốc workspace giới hạn phạm vi mà chúng có thể truy cập. Nếu không có --sandbox, chúng sẽ không được đăng ký.
file_system_read_file
- Đọc nội dung file tại một đường dẫn tương đối với gốc workspace (ví dụ
src/index.ts) - Từ chối nội dung khớp với các định dạng bí mật đã biết (Secretlint) như một biện pháp bảo vệ heuristic bổ sung; ranh giới truy cập là gốc workspace, không phải việc quét
- Trả về thông báo lỗi rõ ràng cho các đường dẫn không hợp lệ, mà không làm lộ đường dẫn trên máy host
file_system_read_directory
- Liệt kê nội dung của một thư mục tại một đường dẫn tương đối với gốc workspace (ví dụ
.hoặcsrc) - Hiển thị file và thư mục với các chỉ báo rõ ràng (
[FILE]hoặc[DIR]) - Hữu ích cho việc khám phá cấu trúc dự án và hiểu tổ chức codebase
Ví dụ:
// Đọc một file
const fileContent = await tools.file_system_read_file({
path: 'src/index.ts'
});
// Liệt kê nội dung thư mục
const dirContent = await tools.file_system_read_directory({
path: 'src'
});Các công cụ này đặc biệt hữu ích khi các trợ lý AI cần:
- Phân tích các file cụ thể trong workspace
- Điều hướng cấu trúc thư mục
- Xác minh sự tồn tại và khả năng truy cập của file
Lợi ích của việc sử dụng Repomix như một Máy chủ MCP
Sử dụng Repomix như một máy chủ MCP mang lại nhiều lợi thế:
- Tích hợp trực tiếp: Các trợ lý AI có thể phân tích codebase của bạn trực tiếp mà không cần chuẩn bị file thủ công.
- Luồng công việc hiệu quả: Tối ưu hóa quy trình phân tích code bằng cách loại bỏ nhu cầu tạo và tải lên file thủ công.
- Đầu ra nhất quán: Đảm bảo rằng trợ lý AI nhận được codebase ở định dạng nhất quán, được tối ưu hóa.
- Các tính năng nâng cao: Tận dụng tất cả các tính năng của Repomix như nén code, đếm token và kiểm tra bảo mật.
Một khi được cấu hình, trợ lý AI của bạn có thể sử dụng trực tiếp các khả năng của Repomix để phân tích codebase, làm cho luồng công việc phân tích code hiệu quả hơn.
Tài nguyên liên quan
- Plugin Claude Code - Tích hợp plugin tiện lợi cho Claude Code
- Cấu hình - Tùy chỉnh hành vi Repomix
- Tùy chọn dòng lệnh - Tham chiếu CLI đầy đủ
- Định dạng đầu ra - Tìm hiểu về các định dạng đầu ra có sẵn