> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server

> Kết nối các ứng dụng AI với một dự án thông qua MCP server của dự án đó trên một bản triển khai Kubernetes.

MCP server của mỗi dự án chạy trong dịch vụ **web** (mô-đun `mcp-server`) của mọi pod Ayakaleaf Pro. Nó đi kèm với [Tích hợp Git](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/integrations/git-integration.md) và không có cài đặt riêng. Cách kết nối Claude Code, Codex và các ứng dụng khác được mô tả trong [MCP Server](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/overleaf-toolkit/integrations/mcp-server.md).

| | |
| - | - |
| Dịch vụ | web, trong mọi pod Ayakaleaf Pro |
| Được bật bởi | `GIT_BRIDGE_ENABLED: "true"` và StatefulSet git-bridge, xem [Tích hợp Git](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/integrations/git-integration.md) |
| Bên ngoài → Overleaf | các ứng dụng AI gửi `POST ${OVERLEAF_SITE_URL}/project/<id>/mcp` kèm một token xác thực Git; các liên kết tải PDF nằm dưới `${OVERLEAF_SITE_URL}/project/<id>/mcp/download/` |
| Pod → bên ngoài | không có |
| Trạng thái | không có giữa các yêu cầu; kết quả biên dịch nằm lại trên pod đã thực hiện biên dịch |
| Tác vụ định kỳ | không có |

### Cấu hình

Hãy thiết lập [Tích hợp Git](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/integrations/git-integration.md). Khi đó MCP server sẽ ở địa chỉ `${OVERLEAF_SITE_URL}/project/<project id>/mcp`, và địa chỉ này phải truy cập được từ nơi ứng dụng AI chạy.

### Nhiều replica

Một lần biên dịch qua MCP chạy trên replica đã nhận yêu cầu, và log cùng PDF của nó chỉ tồn tại ở đó. Các ứng dụng AI không gửi cookie, nên load balancer có thể chuyển yêu cầu tiếp theo, `get_compile_log` hoặc liên kết tải PDF, tới một replica khác, và replica đó sẽ trả lời "failed to fetch output file from CLSI" hoặc 404. Trong thử nghiệm của chúng tôi với ba replica và không có quy tắc bổ sung, 5 trên 6 yêu cầu log và 3 trên 4 lượt tải xuống đã thất bại theo cách này.

Hãy định tuyến mọi yêu cầu MCP của một dự án tới một replica duy nhất, giống như với `/git/`. Với HAProxy từ [Mở rộng theo chiều ngang](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/horizontal-scaling.md):

```text theme={null}
      use-server overleaf-0 if { path_reg ^/project/[0-9a-f]{24}/mcp(/|$) }
```

Khi đó tất cả các lần biên dịch MCP đều chạy trên node của `overleaf-0`. Với một ingress controller khác, hãy định tuyến đường dẫn `/project/<id>/mcp` và mọi thứ bên dưới nó tới tên riêng của một replica (`overleaf-0.overleaf-hl`).

Với quy tắc này, cùng thử nghiệm đó (một lần biên dịch, 6 yêu cầu log và 4 lượt tải PDF, tất cả đều không có cookie) đều thành công mọi lần.

### Đã kiểm thử trên Kubernetes

Trên Kubernetes 1.37 với ba replica phía sau HAProxy, các bài kiểm thử end-to-end của chúng tôi cho MCP server đều đạt (37 trường hợp): liệt kê các công cụ, từ chối token sai, đã bị xóa hoặc không có quyền truy cập, biên dịch và đọc log, đếm từ, cài đặt và lịch sử dự án, liên kết tải PDF, chỉnh sửa tệp với các thay đổi hiển thị trực tiếp trong trình soạn thảo đang mở và được pull về một bản clone Git, bình luận, quyền truy cập theo vai trò, giới hạn tần suất biên dịch và cài đặt, và các tài khoản bị đình chỉ. Các yêu cầu này đến từ một phiên trình duyệt, nên load balancer giữ chúng trên một replica; với các ứng dụng không có cookie, xem [Nhiều replica](#nhiều-replica).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.