MCP SSE là gì? Hướng dẫn toàn diện về Model Context Protocol với Server-Sent Events

MCP SSE là gì? Hướng dẫn toàn diện về Model Context Protocol với Server-Sent Events

15 phút đọc maihoan

Trong bối cảnh trí tuệ nhân tạo AI phát triển với tốc độ chóng mặt, nhu cầu kết nối các mô hình ngôn ngữ lớn LLM với thế giới bên ngoài ngày càng trở nên cấp th

Mở đầu#

Đó chính là lý do Model Context Protocol (MCP) ra đời, và một trong những phương thức giao tiếp quan trọng nhất của nó là MCP SSE. Vậy MCP SSE là gì? Nó hoạt động như thế nào? Tại sao nó lại quan trọng đối với hệ sinh thái AI hiện đại?

Bài viết này sẽ giải đáp tất cả những câu hỏi trên một cách chi tiết và dễ hiểu nhất.


MCP (Model Context Protocol) là gì?#

Định nghĩa#

Model Context Protocol (MCP) là một giao thức mở do Anthropic giới thiệu vào cuối năm 2024, nhằm tiêu chuẩn hóa cách các ứng dụng AI giao tiếp với các công cụ, dịch vụ và nguồn dữ liệu bên ngoài. Có thể hình dung MCP giống như một “ngôn ngữ chung” — tương tự như cách USB-C trở thành chuẩn kết nối phần cứng, MCP hướng tới trở thành chuẩn kết nối cho AI.

Tại sao cần MCP?#

Trước khi MCP xuất hiện, mỗi ứng dụng AI thường phải tự xây dựng các tích hợp riêng lẻ với từng công cụ, dẫn đến tình trạng:

  • Phân mảnh: Mỗi nhà phát triển viết code kết nối theo cách riêng, không có chuẩn chung.
  • Tốn thời gian: Tích hợp với N công cụ đòi hỏi N lần triển khai khác nhau.
  • Khó bảo trì: Mỗi khi API của công cụ thay đổi, tất cả tích hợp đều phải cập nhật thủ công.

MCP giải quyết vấn đề này bằng cách cung cấp một giao thức thống nhất. Với MCP, một AI model chỉ cần hiểu một giao thức duy nhất để có thể giao tiếp với hàng trăm công cụ khác nhau.

Kiến trúc cơ bản của MCP#

MCP hoạt động theo mô hình Client - Server:

+-------------------+          MCP Protocol         +-------------------+
|                   | <===========================> |                   |
|   MCP Client      |                               |   MCP Server      |
|   (Claude, v.v.)  |                               |   (Công cụ, DB)   |
|                   |                               |                   |
+-------------------+                               +-------------------+
  • MCP Client: Là ứng dụng AI (như Claude Desktop, Claude Code, hoặc các IDE tích hợp AI) gửi yêu cầu đến server.
  • MCP Server: Là chương trình backend cung cấp các khả năng như truy cập database, gọi API, thao tác file, v.v.
  • MCP Protocol: Là tập hợp các quy tắc giao tiếp dựa trên JSON-RPC 2.0, bao gồm các method như initialize, tools/list, tools/call, resources/read, v.v.

Các transport trong MCP#

MCP hỗ trợ hai cơ chế vận chuyển (transport) chính:

Transport Mô tả Sử dụng
stdio Giao tiếp qua standard input/output của process Server chạy local trên cùng máy
SSE Giao tiếp qua HTTP với Server-Sent Events Server chạy từ xa (remote) hoặc local qua HTTP

SSE (Server-Sent Events) là gì?#

Định nghĩa#

Server-Sent Events (SSE) là một công nghệ web cho phép server chủ động đẩy (push) dữ liệu đến client qua kết nối HTTP một chiều. SSE được chuẩn hóa trong HTML5 và được tất cả các trình duyệt hiện đại hỗ trợ.

Không giống như WebSocket (giao tiếp hai chiều), SSE chỉ hỗ trợ một chiều từ server đến client. Client gửi yêu cầu HTTP GET thông thường, server giữ kết nối mở và liên tục gửi dữ liệu khi có sự kiện mới.

Cách SSE hoạt động#

Client                              Server
  |                                    |
  |--- GET /events ------------------>|
  |                                    |
  |<-- HTTP 200 OK -------------------|
  |    Content-Type: text/event-stream |
  |                                    |
  |<-- event: message ----------------|
  |    data: {"status": "ok"}         |
  |                                    |
  |<-- event: update -----------------|
  |    data: {"value": 42}            |
  |                                    |
  |    (kết nối vẫn mở...)            |

Định dạng SSE#

Dữ liệu SSE được gửi dưới dạng text với cấu trúc đơn giản:

event: endpoint
data: /mcp/messages

event: connection
data: {"status":"connected"}

Mỗi sự kiện bao gồm:

  • event: Tên loại sự kiện (tùy chọn)
  • data: Nội dung dữ liệu (có thể trải dài nhiều dòng)
  • Mỗi sự kiện được kết thúc bằng một dòng trống (\n\n)

Ưu điểm của SSE#

  • Đơn giản: Chỉ cần HTTP, không cần thư viện đặc biệt.
  • Tự động reconnect: Trình duyệt tự động kết nối lại khi mất kết nối.
  • Tương thích cao: Hoạt động qua mọi firewall, proxy, và load balancer.
  • Nhẹ: Overhead thấp hơn WebSocket cho các tác vụ một chiều.

Nhược điểm của SSE#

  • Một chiều: Chỉ server gửi được cho client, client muốn gửi phải dùng HTTP request riêng.
  • Giới hạn kết nối: Trình duyệt giới hạn số lượng kết nối SSE đồng thời (thường 6 kết nối/domain).

MCP SSE hoạt động như thế nào?#

Luồng hoạt động#

Khi sử dụng MCP với SSE transport, quy trình kết nối diễn ra như sau:

Bước 1: Thiết lập kết nối SSE#

MCP Client gửi một HTTP GET request đến endpoint SSE của server:

GET /mcp/sse HTTP/1.1
Host: mcp-server.example.com

Server phản hồi với HTTP 200 và Content-Type text/event-stream, giữ kết nối mở. Server ngay lập tức gửi một sự kiện endpoint chứa URL mà client sẽ dùng để gửi messages:

event: endpoint
data: /mcp/messages

Bước 2: Client gửi yêu cầu qua HTTP POST#

Sau khi nhận được URL từ sự kiện endpoint, client sẽ gửi các JSON-RPC request qua HTTP POST đến URL đó:

POST /mcp/messages HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

Bước 3: Server phản hồi qua SSE#

Server xử lý request và gửi kết quả ngược lại cho client thông qua kết nối SSE đã thiết lập:

event: message
data: {"jsonrpc":"2.0","id":1,"result":{"tools":[...]}}

Sơ đồ tổng quan#

                   SSE Connection (GET /mcp/sse)
MCP Client  <=====================================>  MCP Server
             event: endpoint, message, ...
                   
                   HTTP Request (POST /mcp/messages)
MCP Client  ======================================>  MCP Server
             JSON-RPC: initialize, tools/list, tools/call

Ví dụ thực tế#

Dưới đây là một cấu hình MCP SSE thực tế trong file .mcp.json của dự án:

{
  "mcpServers": {
    "vnCms": {
      "type": "sse",
      "url": "https://cms.vinasoft.com.vn/mcp/sse",
      "headers": {
        "X-MCP-Key": "your-api-key-here"
      }
    }
  }
}

Khi client khởi động:

  1. Client thực hiện GET đến https://cms.vinasoft.com.vn/mcp/sse với header X-MCP-Key.
  2. Server trả về endpoint /mcp/messages.
  3. Client gửi initialize request đến https://cms.vinasoft.com.vn/mcp/messages.
  4. Server phản hồi qua kênh SSE với thông tin về server (tên, phiên bản, capabilities).
  5. Sau đó, client có thể gọi bất kỳ method nào server hỗ trợ.

So sánh MCP stdio và MCP SSE#

Đây là một trong những câu hỏi phổ biến nhất: khi nào nên dùng stdio và khi nào nên dùng SSE?

Tiêu chí stdio SSE
Môi trường Local (cùng máy) Remote hoặc local
Giao thức Standard I/O (process) HTTP + SSE
Khởi tạo Client spawn process Client kết nối HTTP
Độ trễ Rất thấp (in-process) Cao hơn (qua mạng)
Bảo mật Giới hạn trong máy Cần xác thực (API key, token)
Khả năng mở rộng Một client - một server Nhiều client - một server
Triển khai Cần cài đặt local Chỉ cần URL, có thể dùng chung
Firewall/Proxy Không bị ảnh hưởng Cần cấu hình cho phép

Khi nào nên dùng stdio?#

  • Server chạy hoàn toàn local (VD: thao tác file, truy cập database local).
  • Yêu cầu độ trễ thấp nhất có thể.
  • Không cần chia sẻ server cho nhiều client.
  • Không muốn lo về vấn đề bảo mật mạng.

Khi nào nên dùng SSE?#

  • Server được triển khai trên cloud hoặc máy chủ từ xa.
  • Nhiều client cần kết nối đến cùng một server.
  • Muốn dễ dàng cập nhật server mà không cần client cài đặt lại.
  • Server cần tích hợp với các hệ thống sẵn có qua HTTP API.
  • Muốn chia sẻ MCP server cho cộng đồng hoặc tổ chức.

Cấu hình MCP SSE#

Cấu trúc file .mcp.json#

Trong các dự án sử dụng Claude Code hoặc các MCP client, file .mcp.json đặt tại thư mục gốc là nơi khai báo cấu hình:

{
  "mcpServers": {
    "ten-server": {
      "type": "sse",
      "url": "https://your-server.com/mcp/sse",
      "headers": {
        "Authorization": "Bearer your-token",
        "X-Custom-Header": "custom-value"
      }
    }
  }
}

Các trường quan trọng:

Trường Mô tả Bắt buộc
type Phải là "sse"
url URL endpoint SSE của MCP server
headers HTTP headers gửi kèm trong mọi request Không

Endpoint SSE requirements#

Theo tiêu chuẩn MCP, endpoint SSE cần đáp ứng các yêu cầu sau:

  1. Phản hồi với Content-Type text/event-stream.
  2. Sự kiện đầu tiên phải là endpoint — cho client biết URL để gửi JSON-RPC messages.
  3. Giữ kết nối mở (persistent connection) trong suốt phiên làm việc.
  4. Hỗ trợ CORS nếu client chạy từ trình duyệt.

Bảo mật cho MCP SSE#

Vì MCP server chạy qua HTTP và có thể truy cập từ xa, bảo mật là một yếu tố cực kỳ quan trọng:

  1. Luôn sử dụng HTTPS — không bao giờ chạy MCP SSE qua HTTP thuần.
  2. Xác thực mọi request — sử dụng API key, Bearer token, hoặc client certificate.
  3. Validate input — kiểm tra tất cả dữ liệu từ client trước khi xử lý.
  4. Rate limiting — giới hạn số lượng request để tránh abuse.
  5. Audit logging — ghi lại tất cả các hoạt động để phục vụ kiểm tra và gỡ lỗi.

Lợi ích của MCP SSE đối với hệ sinh thái AI#

1. Mở rộng khả năng của AI Models#

Với MCP SSE, một AI model có thể:

  • Truy cập dữ liệu thời gian thực: Giá cổ phiếu, thời tiết, tin tức.
  • Thao tác với cơ sở dữ liệu: Đọc, ghi, cập nhật dữ liệu.
  • Gọi API bên thứ ba: Tích hợp với hàng nghìn dịch vụ có sẵn.
  • Quản lý hệ thống: Triển khai code, quản lý server, giám sát hệ thống.

Tất cả thông qua một giao thức thống nhất duy nhất.

2. Tiết kiệm thời gian phát triển#

Thay vì phải viết custom integration cho mỗi công cụ, developer chỉ cần:

  1. Tạo một MCP server cho công cụ của họ.
  2. Client tự động khám phá và sử dụng tất cả các tools mà server cung cấp.

Mô hình này giống như “viết một lần, chạy với mọi AI client”.

3. Kiến trúc microservices cho AI#

MCP SSE cho phép kiến trúc microservices trong thế giới AI:

                 +------------+
                 | AI Client  |
                 +-----+------+
                       |
          +------------+------------+
          |            |            |
    +-----v-----+ +---v------+ +--v-------+
    | DB Server  | |API Server| |FS Server |
    | (Postgres) | |(REST API)| |(S3/Local)|
    +-----------+ +----------+ +----------+

Mỗi MCP server chịu trách nhiệm cho một lĩnh vực cụ thể, có thể được phát triển, triển khai và mở rộng độc lập.

4. Cộng đồng và hệ sinh thái#

Nhờ tính mở của MCP, cộng đồng developer có thể:

  • Chia sẻ MCP server cho các công cụ phổ biến.
  • Đóng góp cải tiến giao thức.
  • Xây dựng marketplace cho MCP servers.

Điều này tạo ra một hiệu ứng mạng tích cực: càng nhiều server, AI càng mạnh; AI càng mạnh, càng nhiều người xây dựng server.


Hạn chế và thách thức#

Dù mạnh mẽ, MCP SSE cũng có những hạn chế nhất định:

1. Độ trễ mạng#

So với stdio transport (giao tiếp trực tiếp trong cùng process), SSE transport chịu thêm độ trễ từ:

  • Thiết lập kết nối TCP/TLS.
  • Truyền dữ liệu qua mạng.
  • Xử lý tại các tầng trung gian (proxy, load balancer).

Đối với các tác vụ cần phản hồi tức thì (như autocomplete code), độ trễ này có thể gây khó chịu cho người dùng.

2. Phụ thuộc kết nối mạng#

Nếu server hoặc client mất kết nối internet, toàn bộ phiên làm việc bị gián đoạn. Mặc dù SSE có cơ chế tự động reconnect, nhưng trạng thái phiên có thể bị mất.

3. Bảo mật#

Mỗi MCP server qua SSE là một điểm tấn công tiềm năng. Nếu không được bảo mật đúng cách (xác thực yếu, không mã hóa, thiếu rate limiting), kẻ tấn công có thể lợi dụng để truy cập trái phép.

4. Độ phức tạp triển khai#

So với stdio (chỉ cần chạy một executable), triển khai MCP SSE yêu cầu:

  • Một HTTP server có khả năng giữ persistent connections.
  • Cấu hình CORS, HTTPS, domain name.
  • Quản lý xác thực và phân quyền.

Hướng dẫn xây dựng MCP Server với SSE#

Yêu cầu cơ bản#

Để xây dựng một MCP server hỗ trợ SSE transport, bạn cần:

  1. HTTP Server hỗ trợ SSE (Node.js với Express, Python với FastAPI/Starlette, Go với net/http, v.v.).
  2. Endpoint SSE (GET /mcp/sse) gửi sự kiện endpoint khi client kết nối.
  3. Endpoint Message (POST /mcp/messages) nhận JSON-RPC request từ client.
  4. Xử lý JSON-RPC — parse và thực thi các method MCP.

Ví dụ đơn giản với Node.js + Express#

const express = require('express');
const app = express();
const sessions = new Map();

// SSE endpoint
app.get('/mcp/sse', (req, res) => {
  const sessionId = generateSessionId();

  res.writeHead(200, {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
  });

  // Lưu session
  sessions.set(sessionId, res);

  // Gửi endpoint event
  res.write(`event: endpoint\ndata: /mcp/messages?sessionId=${sessionId}\n\n`);

  // Cleanup khi client ngắt kết nối
  req.on('close', () => {
    sessions.delete(sessionId);
  });
});

// Message endpoint
app.post('/mcp/messages', express.json(), (req, res) => {
  const sessionId = req.query.sessionId;
  const session = sessions.get(sessionId);

  if (!session) {
    return res.status(404).json({ error: 'Session not found' });
  }

  // Xử lý JSON-RPC và gửi response qua SSE
  const response = handleJsonRpc(req.body);
  session.write(`event: message\ndata: ${JSON.stringify(response)}\n\n`);

  res.json({ status: 'accepted' });
});

app.listen(3000);

Các thư viện hỗ trợ#

Hiện tại đã có nhiều SDK và thư viện giúp xây dựng MCP server nhanh chóng:

  • @anthropic-ai/mcp — SDK chính thức cho TypeScript/JavaScript.
  • mcp-python-sdk — SDK cho Python.
  • mcp-go — SDK cho Go.

Các SDK này đã xử lý sẵn phần JSON-RPC, session management, và cả SSE transport, giúp bạn chỉ cần tập trung vào logic nghiệp vụ.


Tương lai của MCP SSE#

MCP và SSE transport vẫn đang trong giai đoạn phát triển tích cực. Một số xu hướng và cải tiến được kỳ vọng trong tương lai:

1. Hỗ trợ streaming tốt hơn#

MCP đang được mở rộng để hỗ trợ streaming responses — cho phép server gửi kết quả từng phần qua SSE thay vì phải đợi hoàn tất toàn bộ. Điều này đặc biệt hữu ích cho các tác vụ dài như:

  • Sinh nội dung AI (token-by-token streaming).
  • Truy vấn database lớn (row-by-row streaming).
  • Log streaming từ server.

2. Tích hợp sâu hơn với các nền tảng AI#

Các nền tảng như Claude Desktop, Claude Code, Continue.dev, và Cursor đang ngày càng hỗ trợ MCP tốt hơn. Trong tương lai, người dùng có thể:

  • Kết nối MCP server từ giao diện đồ họa (không cần chỉnh sửa file cấu hình).
  • Khám phá và cài đặt MCP server từ marketplace.
  • Quản lý permissions cho từng server một cách trực quan.

3. Chuẩn hóa và mở rộng#

Giao thức MCP đang được phát triển như một tiêu chuẩn mở. Các tổ chức và cá nhân đều có thể đóng góp vào spec. Những cải tiến đang được thảo luận bao gồm:

  • Authentication protocol chuẩn: OAuth 2.0 hoặc mTLS thay vì custom headers.
  • Service discovery: Để client tự động tìm thấy MCP servers trong mạng.
  • Health checks: Endpoint chuẩn để kiểm tra trạng thái server.

4. Hệ sinh thái phong phú hơn#

Ngày càng có nhiều MCP server được xây dựng cho mọi lĩnh vực:

  • Database: PostgreSQL, MySQL, MongoDB, Redis.
  • Cloud: AWS, GCP, Azure.
  • DevOps: Docker, Kubernetes, Terraform.
  • Productivity: Google Calendar, Slack, Notion, Jira.
  • Development: Git, GitHub, GitLab, Playwright.

Điều này biến MCP thành một lớp trung gian không thể thiếu giữa AI và thế giới thực.


Câu hỏi thường gặp (FAQ)#

1. MCP SSE có khác gì REST API thông thường không?#

Có. REST API là mô hình request-response một chiều: client gửi request và server trả về response. MCP SSE sử dụng kết hợp cả hai kênh: client gửi request qua HTTP POST, nhưng server trả về response qua kết nối SSE đã mở sẵn. Điều này cho phép server chủ động gửi dữ liệu bất cứ lúc nào, không cần client poll.

2. Tôi có thể dùng MCP SSE mà không cần Claude không?#

Có. MCP là giao thức mở, bất kỳ AI model hay ứng dụng nào cũng có thể làm MCP client. Bạn có thể tự xây dựng client bằng bất kỳ ngôn ngữ lập trình nào, miễn là nó tuân thủ spec MCP.

3. MCP SSE có scale được không?#

Có, nhưng cần thiết kế đúng. SSE yêu cầu persistent connection, do đó server cần hỗ trợ kiến trúc non-blocking I/O (như Node.js event loop, Python asyncio, hoặc Go goroutines). Để scale ngang, bạn có thể dùng load balancer hỗ trợ sticky sessions và một message broker (như Redis Pub/Sub) để đồng bộ giữa các instance.

4. Làm sao để debug MCP SSE server?#

Một số cách hiệu quả:

  • curl để test trực tiếp endpoint SSE và messages như đã minh họa ở trên.
  • Browser DevTools — mở Network tab để xem SSE events.
  • MCP Inspector — công cụ debug chính thức từ Anthropic.
  • Logging — ghi log tất cả JSON-RPC requests và responses.

Kết luận#

MCP SSE là một bước tiến quan trọng trong việc kết nối AI models với thế giới thực. Bằng cách kết hợp giao thức MCP tiêu chuẩn với transport SSE qua HTTP, nó cho phép:

  • Triển khai linh hoạt — server có thể chạy ở bất cứ đâu, từ local đến cloud.
  • Tích hợp dễ dàng — client tự động khám phá và sử dụng tools.
  • Mở rộng không giới hạn — mỗi server là một microservice độc lập.
  • Bảo mật linh hoạt — hỗ trợ xác thực qua HTTP headers, API keys, tokens.

Dù còn một số thách thức về độ trễ và bảo mật, MCP SSE đang nhanh chóng trở thành lựa chọn hàng đầu cho việc kết nối AI với các hệ thống bên ngoài. Với sự hỗ trợ ngày càng rộng rãi từ cộng đồng và các nền tảng AI lớn, đây chắc chắn là một công nghệ đáng để theo dõi và đầu tư học hỏi.

Nếu bạn đang xây dựng ứng dụng AI và muốn mở rộng khả năng của nó vượt ra ngoài dữ liệu huấn luyện, MCP SSE chính là câu trả lời.


Bài viết được cập nhật lần cuối vào tháng 5 năm 2026. Các thông tin về MCP và SSE có thể thay đổi theo thời gian.

Mai Hoàn

Mai Hoàn

Tác giả

Founder & CEO tại vnDev Co., Ltd. Hơn 10 năm kinh nghiệm trong lĩnh vực phát triển phần mềm, thiết kế website và digital marketing. Đam mê chia sẻ kiến thức về công nghệ, SEO và khởi nghiệp. Triết lý làm việc: 'Công nghệ phải phục vụ con người, không phải ngược lại.'

Đồng hành cùng doanh nghiệp của Bạn trong kỷ nguyên AI — Là sứ mệnh của Chúng tôi!

© 2008-2025 vnDev Co., Ltd. All rights reserved.

8a7a7a0