Skip to content

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:

bash
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:

bash
# 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/project

Khi 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ố directorypath trong 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:

  1. Sử dụng huy hiệu cài đặt:

Install in VS Code
Install in VS Code Insiders

  1. Sử dụng dòng lệnh:
bash
code --add-mcp '{"name":"repomix","command":"npx","args":["-y","repomix","--mcp"]}'

Cho VS Code Insiders:

bash
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:

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:

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

Hoặ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:

json
{
  "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ộcMặc địnhMô tả
directoryĐường dẫn tuyệt đối đến thư mục cần đóng gói
compressKhôngfalseKí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.
includePatternsKhôngFile để bao gồm sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "**/*.{js,ts}", "src/**,docs/**")
ignorePatternsKhôngFile 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.
outputPatternsKhôngCá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.
topFilesLengthKhông10Số lượng file lớn nhất theo kích thước để hiển thị trong tóm tắt metrics
styleKhôngxmlKiểu định dạng đầu ra: xml, markdown, json, hoặc plain

Ví dụ:

json
{
  "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ộcMặc địnhMô tả
remoteURL 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")
compressKhôngfalseKí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.
includePatternsKhôngFile để bao gồm sử dụng pattern fast-glob. Tách bằng dấu phẩy (ví dụ: "**/*.{js,ts}", "src/**,docs/**")
ignorePatternsKhôngFile 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.
outputPatternsKhôngCá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).
topFilesLengthKhông10Số lượng file lớn nhất theo kích thước để hiển thị trong tóm tắt metrics
styleKhôngxmlKiểu định dạng đầu ra: xml, markdown, json, hoặc plain

Ví dụ:

json
{
  "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ộcMặc địnhMô tả
outputIdID của file đầu ra Repomix cần đọc
startLineKhôngĐầu fileSố dòng bắt đầu (bắt đầu từ 1, bao gồm)
endLineKhôngCuối fileSố 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ụ:

json
{
  "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ộcMặc địnhMô tả
outputIdID của file đầu ra Repomix cần tìm kiếm
patternPattern tìm kiếm (cú pháp JavaScript RegExp)
contextLinesKhông0Số 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.
beforeLinesKhôngDòng hiển thị trước mỗi kết quả khớp (như grep -B). Ưu tiên hơn contextLines.
afterLinesKhôngDòng hiển thị sau mỗi kết quả khớp (như grep -A). Ưu tiên hơn contextLines.
ignoreCaseKhôngfalseThự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ụ:

json
{
  "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ý.

  1. 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
  1. 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ặc src)
  • 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ụ:

typescript
// Đọ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ế:

  1. 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.
  2. 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.
  3. Đầ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.
  4. 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

Released under the MIT License.