# Kết nối MCP server

> Cho trợ lý AI lấy và đọc transcript qua MCP. Hướng dẫn kết nối Claude, ChatGPT, Cursor, VS Code, Claude Code và các client khác.

Canonical: https://transcript1.com/vi/docs/mcp
Language: vi
Last updated: 2026-10-15

Nhờ trợ lý AI lấy transcript từ video bằng cách kết nối với MCP server từ xa của transcript1. Server dùng [Model Context Protocol](https://modelcontextprotocol.io/), nhận link YouTube, X, TikTok, Instagram, Facebook, Bluesky hoặc file audio và video tải lên. Sau khi xử lý xong, trợ lý đọc được transcript. Các nền tảng bổ sung, dạng video công khai đã ghi hình và giới hạn nằm trong [Link video và tùy chọn](https://transcript1.com/vi/docs/sources-and-options).

Bài đăng phải công khai; nếu có nhiều video, hệ thống chỉ lấy video đầu tiên. YouTube và X vẫn hỗ trợ phụ đề như trước. TikTok, Bluesky, Dailymotion và LinkedIn cũng cho phép lấy phụ đề phù hợp bằng ngôn ngữ gốc. Trong chế độ `auto`, nếu không dùng được phụ đề thì AI chuyển audio thành văn bản, giá mỗi phút không đổi.

Ngoài YouTube, phụ đề chỉ có mốc thời gian theo đoạn (`words: null`), kể cả bản tự động. Chế độ `captions` (chỉ phụ đề) không tải audio và không chạy STT. Nếu bật nhận diện người nói hoặc chọn `source=stt`, hệ thống bỏ qua phụ đề. Xem [cách chọn nguồn transcript](https://transcript1.com/vi/docs/sources-and-options).

- **Endpoint kết nối:** `https://api.transcript1.com/mcp` (streamable HTTP).
- **Đăng nhập và cấp quyền:** Claude và ChatGPT dùng OAuth 2.1; bạn đăng nhập transcript1 rồi cho phép truy cập. Cursor, VS Code, Claude Code và AI agent dùng khóa API qua `Authorization: Bearer t1_...`. Tạo khóa ở [“API keys”](https://transcript1.com/dashboard/account/tokens).

Mỗi tool dùng khóa hoặc token của bạn để gọi [REST API](https://transcript1.com/vi/docs/api-reference) `/v1`. Quy tắc kiểm tra dữ liệu, tính phí và mã lỗi giống REST API. Các kết nối MCP dùng chung số phút và hạn mức request của tài khoản với những lệnh gọi khác.

## Các tool có sẵn

| Tool | Khi nào dùng |
|---|---|
| `transcribe` | Gửi link video qua `url`; nền tảng được nhận diện tự động. Các tham số tùy chọn gồm `platform`, `source`, `language`, `diarize`, `format` và `wait_seconds`. Tool chờ để trả trang transcript đầu tiên; nếu chưa xong thì trả `id`. |
| `get_transcription` | Kiểm tra trạng thái hoặc đọc transcript bằng `id`. Có thể thêm `wait_seconds`, `format`, `from_seconds` và `max_chars`. |
| `list_transcriptions` | Xem job gần đây theo thứ tự mới nhất trước, không kèm nội dung transcript. Có thể thêm `status`, `platform`, `limit` và `cursor`. |
| `create_upload` | Tạo phiên tải file từ máy lên theo chunk. Cần `filename`, `size` và `request_id` là UUID do bạn tạo; có thể thêm `mime_type`, `language` và `diarize`. |
| `get_upload_status` | Kiểm tra server đã nhận chunk nào để tải tiếp phần còn thiếu. |
| `complete_upload` | Kiểm tra đủ chunk rồi đưa job vào hàng đợi xử lý. |
| `delete_transcription` | Hủy job đang chạy và hoàn lại phút, hoặc xóa job đã kết thúc cùng transcript. |
| `get_account` | Xem số phút còn dùng được, gói hiện tại và ngày gia hạn. |

### Định dạng, thời gian chờ và phân trang

- Mặc định `format` là `text`: mỗi đoạn một dòng có mốc thời gian. Nếu bật nhận diện người nói, dòng còn có nhãn, chẳng hạn `[00:01:02] Speaker 1: Good morning.` Bạn có thể đổi sang `srt`, `vtt` hoặc `json`.
- `wait_seconds` nhận từ 0 đến 55, mặc định là 50. Chưa xử lý xong thì tool báo đang chờ và trả `id`. Truyền ID đó vào `get_transcription` để chờ tiếp.
- Với transcript dài, dùng phân trang. `max_chars` mặc định là 60.000, cho phép từ 1.000 đến 100.000. Mỗi trang dừng ở cuối một đoạn, không cắt giữa đoạn. Lấy `next_from_seconds` trong response và truyền vào `from_seconds` cho trang tiếp theo.
- Tool luôn báo `transcript_source` để trợ lý biết nguồn văn bản: `youtube_captions`, `x_captions`, `tiktok_captions`, `bluesky_captions`, `dailymotion_captions`, `linkedin_captions` hoặc `speech_to_text`. Nếu có `caption_kind: null`, nguồn gốc track chưa rõ; không được hiểu là phụ đề do người đăng tải lên.

### Kiểm tra job cũ trước khi gửi lại

`transcribe` luôn bật `reuse_recent`. Nếu dùng link đầy đủ, gọi lại cùng video và tùy chọn trong 24 giờ sẽ lấy lại job trước đó, không tính thêm phí. Cách này không áp dụng với link rút gọn. Tool sẽ cho biết khi nào đã dùng lại job cũ. Thay vì gửi lại video, nên dùng `get_transcription` hoặc `list_transcriptions` để kiểm tra job đang có.

### Gửi file qua MCP

MCP không truyền trực tiếp dữ liệu file. Gọi `create_upload` để nhận `id` job, mẫu URL gửi chunk, `X-Upload-Token` và danh sách chunk. Trợ lý cần gửi từng chunk bằng HTTP `PUT` bên ngoài MCP, sau đó gọi `complete_upload`. Tool cũng trả đường dẫn trang tải file trong bảng điều khiển để bạn dùng nếu không gửi được qua trợ lý. Xem toàn bộ quy trình trong [Tải file lên](https://transcript1.com/vi/docs/uploads).

### Muốn nhận webhook?

Các tool MCP không nhận tham số webhook. Nếu cần [webhook](https://transcript1.com/vi/docs/webhooks), hãy gọi REST API.

## Claude

Trong Claude, thêm MCP server từ xa qua custom connector:

1. Vào cài đặt connector của Claude, chọn thêm custom connector.
2. Đặt tên `transcript1` và nhập URL `https://api.transcript1.com/mcp`.
3. Đăng nhập transcript1 theo hướng dẫn rồi cho phép truy cập hai scope `transcriptions:read` và `transcriptions:write`.

Sau khi kết nối, bạn có thể nhắn: “Lấy transcript của video https://www.youtube.com/watch?v=dQw4w9WgXcQ”. Việc dùng được custom connector hay không tùy gói Claude của bạn.

## ChatGPT

Với ChatGPT, bạn cũng thêm một custom connector:

1. Vào cài đặt connector của ChatGPT và thêm custom connector cho MCP server.
2. Dùng URL server `https://api.transcript1.com/mcp`.
3. Đăng nhập transcript1, sau đó cho phép ChatGPT truy cập.

Khả năng thêm custom connector tùy gói ChatGPT và cấu hình workspace. Bạn có thể cần bật developer mode.

## Kết nối trong Cursor

Cách nhanh nhất là mở link [thêm transcript1 vào Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=transcript1&config=eyJ1cmwiOiJodHRwczovL2FwaS50cmFuc2NyaXB0MS5jb20vbWNwIn0=).

Nếu muốn tự cấu hình, thêm đoạn dưới vào `.cursor/mcp.json` và điền khóa API trong header `Authorization`:

```json
{
  "mcpServers": {
    "transcript1": {
      "url": "https://api.transcript1.com/mcp",
      "headers": {
        "Authorization": "Bearer t1_YOURKEY"
      }
    }
  }
}
```

## VS Code

Mở link [thêm transcript1 vào VS Code](vscode:mcp/install?%7B%22name%22%3A%22transcript1%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.transcript1.com%2Fmcp%22%7D) để cài nhanh.

Bạn cũng có thể tự thêm cấu hình vào `.vscode/mcp.json` của workspace:

```json
{
  "servers": {
    "transcript1": {
      "type": "http",
      "url": "https://api.transcript1.com/mcp",
      "headers": {
        "Authorization": "Bearer t1_YOURKEY"
      }
    }
  }
}
```

## Kết nối trong Claude Code

Điền khóa API của bạn vào chỗ `t1_YOURKEY`, rồi chạy lệnh sau:

```bash
claude mcp add --transport http transcript1 https://api.transcript1.com/mcp --header "Authorization: Bearer t1_YOURKEY"
```

## Kết nối từ client khác

Nếu client hỗ trợ MCP server từ xa, trỏ đến `https://api.transcript1.com/mcp` và gửi header `Authorization: Bearer t1_...`.

## Client cần chạy MCP bằng lệnh

Một số client, như Claude Desktop, khởi động MCP server qua lệnh. Với cách này, dùng `npx -y @transcript1/mcp` và đặt khóa API trong `TRANSCRIPT1_API_KEY`. Package sẽ kết nối đến server transcript1 đang được lưu trữ sẵn. Máy cần Node.js từ 18 trở lên.

Với Claude Desktop, thêm cấu hình dưới đây vào `claude_desktop_config.json`. Lấy khóa ở [“API keys”](https://transcript1.com/dashboard/account/tokens) để thay `t1_YOURKEY`.

```json
{
  "mcpServers": {
    "transcript1": {
      "command": "npx",
      "args": ["-y", "@transcript1/mcp"],
      "env": { "TRANSCRIPT1_API_KEY": "t1_YOURKEY" }
    }
  }
}
```

## Agent Skill

Nếu AI agent hỗ trợ skill, bạn có thể thêm [Agent Skill của transcript1](https://transcript1.com/.well-known/agent-skills/transcript1/SKILL.md). Đây là file `SKILL.md` ngắn, hướng dẫn agent cách dùng transcript1.

AI agent có chức năng tự tìm skill có thể dùng danh mục tại `https://transcript1.com/.well-known/agent-skills/index.json`.

## Đọc lỗi từ tool

Nếu tool gặp lỗi, nó trả mã `code` giống REST API, kèm thông báo và hướng xử lý cho trợ lý. Dòng lỗi có dạng `<code>: <message>. <next step>`. Chẳng hạn khi tài khoản không đủ phút:

```text
insufficient_minutes: 20 minutes needed, 3 remaining. Top up at https://transcript1.com/dashboard/billing
```

Tra cứu mã trong [Xử lý lỗi](https://transcript1.com/vi/docs/errors). Nếu job thất bại trong lúc xử lý, tool cũng trả lỗi theo dạng này với mã tương ứng, chẳng hạn `media_private` hoặc `no_captions`.
