Model Context Protocol (MCP) là một tiêu chuẩn mở cho phép các mô hình như Claude của Anthropic và các công cụ dành cho nhà phát triển như Claude Code gọi tới các công cụ bên ngoài, nguồn dữ liệu và prompt theo cách an toàn, chuẩn hóa.
Hướng dẫn này sẽ đưa bạn qua quá trình xây dựng máy chủ MCP của riêng bạn từ đầu, giúp Claude Code truy cập các tính năng tùy chỉnh và nhờ đó mở rộng đáng kể chức năng vượt xa các tính năng tích hợp sẵn.
Model Context Protocol (MCP) là gì?
MCP (Model Context Protocol) là một đặc tả mở được thiết kế để tiêu chuẩn hóa cách các client của mô hình ngôn ngữ (như Claude, Claude Code, hoặc các frontend LLM khác) kết nối tới máy chủ công cụ và nguồn dữ liệu. Hãy coi MCP như “cổng USB-C cho LLM”: nó định nghĩa một lược đồ transport/JSON-RPC và một cách chung để các máy chủ công bố ba loại khả năng:
- Resources (Tài nguyên) — dữ liệu dạng tệp hoặc tài liệu mà client có thể đọc (ví dụ: một hàng trong cơ sở dữ liệu, một tệp văn bản, một payload JSON).
- Tools (Công cụ) — các hàm có thể gọi mà mô hình có thể yêu cầu host thực thi (có sự chấp thuận của người dùng).
- Prompts — các mẫu prompt hoặc quy trình làm việc có thể tái sử dụng mà mô hình/client có thể gọi.
MCP hỗ trợ nhiều cơ chế truyền tải (stdio, HTTP, SSE) và cung cấp lược đồ, SDK cùng các máy chủ mẫu để bạn không phải tự phát minh định dạng trao đổi. Giao thức được duy trì công khai (spec + SDK) và có hướng dẫn cũng như thư viện ví dụ máy chủ để thúc đẩy việc áp dụng.
MCP được kiến trúc như thế nào?
Kiến trúc MCP có chủ đích đơn giản và mô-đun: các phần lõi là máy chủ MCP, client MCP và transport mang các thông điệp được đóng khung JSON-RPC giữa chúng. Dưới đây là các thành phần chính bạn sẽ tương tác khi xây dựng máy chủ cho Claude Code (hoặc các client MCP khác).
Máy chủ, client và giao thức
- MCP server — Dịch vụ “công bố” công cụ, tài nguyên và prompt. Công cụ có thể tạo hiệu ứng phụ hoặc truy xuất dữ liệu; tài nguyên cung cấp nội dung chỉ đọc; prompt là các mẫu prompt tái sử dụng mà client có thể yêu cầu mô hình lấy mẫu.
- MCP client (host) — Thường là một phần của host LLM (ví dụ: Claude Code, plugin VS Code, client trình duyệt). Nó khám phá các máy chủ sẵn có, trình bày mô tả công cụ cho mô hình và định tuyến các lời gọi do mô hình khởi xướng tới máy chủ.
- Protocol — Thông điệp được mã hóa dưới dạng JSON-RPC; spec định nghĩa các sự kiện vòng đời, khám phá công cụ, gọi thực thi, completions/lấy mẫu, và cách kết quả có cấu trúc được chuyển lại cho client và mô hình.
Mô hình giao tiếp (điều gì xảy ra khi một công cụ được sử dụng)
- Client gửi thông điệp của người dùng tới mô hình.
- Mô hình phân tích ngữ cảnh và quyết định gọi một công cụ do MCP phơi bày (hoặc nhiều công cụ).
- Client chuyển tiếp lời gọi công cụ tới máy chủ MCP qua cơ chế truyền tải đã chọn.
- Máy chủ thực thi công cụ và trả về kết quả.
- Mô hình nhận đầu ra từ công cụ và soạn câu trả lời cuối cùng cho người dùng.
Các nguyên thủy triển khai
- Thông điệp JSON-RPC tuân theo lược đồ MCP.
- Định nghĩa công cụ được công bố trong phản hồi khám phá của máy chủ để client có thể hiển thị trong giao diện.
- Tài nguyên được client tham chiếu bằng cú pháp
@source:path(ví dụ:@postgres:...), cho phép mô hình tham chiếu nội dung bên ngoài mà không cần đưa dữ liệu lớn vào prompt.
Tại sao tích hợp Claude Code với các máy chủ MCP?
Claude Code là sản phẩm của Anthropic tập trung vào quy trình làm việc liên quan đến mã và nhà phát triển (tích hợp trình soạn thảo/IDE, hiểu mã, v.v.). Phơi bày các công cụ nội bộ của bạn (tìm kiếm mã nguồn, runner CI, hệ thống ticket, registry riêng) qua các máy chủ MCP cho phép Claude Code gọi chúng như các công cụ hạng nhất trong hội thoại lập trình và luồng tác tử.
Tích hợp Claude Code với máy chủ MCP mở khóa các khả năng thực tế, phù hợp sản xuất cho một tác tử lập trình:
1. Cho phép mô hình “hành động” trên hệ thống thực
Claude Code có thể yêu cầu máy chủ MCP truy vấn hệ thống theo dõi sự cố, chạy truy vấn cơ sở dữ liệu, đọc tài liệu lớn hoặc tạo PR trên GitHub — cho phép tự động hóa end-to-end ngay trong phiên lập trình. Điều này được tài liệu Claude Code hỗ trợ rõ ràng (ví dụ: truy vấn Postgres, Sentry, hoặc tạo PR).
2. Giảm tải dữ liệu lớn và logic chuyên biệt
Thay vì nhúng mọi nguồn dữ liệu vào prompt (tiêu tốn token), bạn công bố dữ liệu và công cụ qua MCP. Mô hình gọi công cụ, nhận phản hồi có cấu trúc và suy luận với nó — điều này giảm sử dụng token và cho phép máy chủ xử lý các tác vụ nặng (truy vấn DB, đọc tệp dài, xác thực).
3. Bảo mật và quản trị
MCP tập trung hóa kiểm soát truy cập và kiểm toán ở lớp máy chủ, cho phép tổ chức đưa vào danh sách cho phép các máy chủ được phê duyệt, kiểm soát những công cụ nào khả dụng và giới hạn đầu ra. Claude Code cũng hỗ trợ cấu hình MCP cho doanh nghiệp và chấp thuận theo phạm vi.
4. Tái sử dụng và hệ sinh thái
Máy chủ MCP có thể được tái sử dụng trên nhiều client và đội nhóm. Xây dựng một lần và nhiều client Claude/LLM có thể sử dụng cùng dịch vụ (hoặc thay thế triển khai).
Bạn cần gì trước khi bắt đầu?
Yêu cầu tối thiểu
- Máy phát triển với Python 3.10+ (ví dụ sẽ dùng Python). Ngoài ra Node/các ngôn ngữ khác cũng được các SDK MCP hỗ trợ.
uv(công cụ của Astral) hoặc trình chạy tương đương để chạy máy chủ MCP stdio (hướng dẫn MCP sử dụnguv). Bước cài đặt minh họa bên dưới.- Đã cài Claude Code hoặc có quyền truy cập client Claude (desktop hoặc CLI) để đăng ký và kiểm thử máy chủ; hoặc bất kỳ client tương thích MCP nào. Claude Code hỗ trợ HTTP, SSE và máy chủ stdio cục bộ.
- Lưu ý bảo mật: Chỉ thêm các máy chủ MCP đáng tin cậy vào Claude Code trong môi trường đội nhóm hoặc doanh nghiệp — MCP trao cho máy chủ quyền truy cập dữ liệu nhạy cảm, và rủi ro prompt injection tồn tại nếu máy chủ trả về nội dung độc hại.
Cách cài đặt và xác minh CLI của Claude Code
Đây là Claude Code Installation and Usage Guide.
1) Tóm tắt nhanh — phương pháp cài đặt khuyến nghị
Sử dụng trình cài đặt native (khuyến nghị) hoặc Homebrew trên macOS/Linux. NPM khả dụng nếu bạn cần cài đặt dựa trên Node. Windows có các trình cài đặt PowerShell/CMD. Nguồn: tài liệu chính thức Claude Code & GitHub.
2) Điều kiện tiên quyết
- macOS 10.15+, Ubuntu 20.04+/Debian 10+, hoặc Windows 10+ (khuyến nghị WSL trên Windows).
- Node.js 18+ chỉ cần thiết cho phương pháp cài đặt qua NPM.
3) Lệnh cài đặt (chọn một)
Native (khuyến nghị — không phụ thuộc Node), macOS / Linux / WSL:
curl -fsSL https://claude.ai/install.sh | bash
# optional: install latest explicitly
curl -fsSL https://claude.ai/install.sh | bash -s latest
# or install a specific version
curl -fsSL https://claude.ai/install.sh | bash -s 1.0.58
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
# or for latest: & (::Create((irm https://claude.ai/install.ps1))) latest
(Đây là các script trình cài đặt native chính thức).
NPM (nếu bạn muốn cài đặt global dựa trên Node):
# requires Node.js 18+
npm install -g @anthropic-ai/claude-code
Không sử dụng sudo npm install -g — cảnh báo chống cài đặt global bằng sudo (vấn đề quyền hạn/bảo mật). Nếu gặp lỗi quyền, hãy dùng nvm hoặc sửa prefix global của npm thay vì dùng sudo.
4) Xác minh binary đã được cài đặt (kiểm tra cơ bản)
Chạy các lệnh này tại máy cục bộ ngay sau khi cài đặt:
# is the command on PATH?
which claude
# version (or -v)
claude --version
# or
claude -v
# help (sanity check)
claude --help
Kỳ vọng: which hiển thị một đường dẫn (ví dụ /usr/local/bin/claude hoặc ~/.nvm/.../bin/claude) và claude --version in ra chuỗi dạng semver. Tài liệu và README đều cho thấy claude là entrypoint CLI chính.
5) Xác minh tình trạng cài đặt và cấu hình (khuyến nghị)
a) claude doctor, chạy:
claude doctor
Công cụ chẩn đoán tích hợp này kiểm tra kiểu cài đặt, các vấn đề phổ biến (như lỗi quyền npm), các phụ thuộc như ripgrep, và gợi ý cách khắc phục. Tài liệu khuyến nghị rõ ràng chạy claude doctor sau khi cài đặt.
b) Chạy smoke test (không tương tác)
Từ thư mục dự án của bạn:
cd /path/to/your/project
claude -p "Explain this project in 3 sentences"
Lệnh này sử dụng chế độ print (-p) để gửi một prompt đơn lẻ rồi thoát; phù hợp cho CI hoặc kiểm tra chức năng nhanh.
c) Xác minh xác thực (đảm bảo CLI có thể kết nối Anthropic)
Claude Code hỗ trợ nhiều luồng xác thực (Console OAuth, API key, tích hợp nhà cung cấp). Các kiểm tra phổ biến:
- Nếu dùng API key (CI/không hiển thị/biến môi trường cục bộ):
export ANTHROPIC_API_KEY="sk-..."
# then
claude auth status
claude auth whoami # or `claude auth whoami` / `claude whoami` depending on version
Bạn có thể sử dụng API key của CometAPI để dùng Claude Code. Sử dụng Claude’s API qua CometAPI sẽ được giảm giá 20%.
- Nếu bạn dùng OAuth qua console — chạy:
claude auth status
claude auth whoami
Bạn sẽ thấy thông tin tài khoản/gói cước hoặc xác nhận rằng bạn đã được xác thực.
Chuẩn bị môi trường theo từng bước
Dưới đây là các bước cụ thể để chuẩn bị hai ngăn xếp nhà phát triển phổ biến (TypeScript và Python), kèm các kiểm tra nhanh để đảm bảo mọi thứ hoạt động.
H3 — A. Thiết lập TypeScript / Node (nhanh nhất)
- Tạo dự án và cài SDK:
mkdir mcp-demo && cd mcp-demo
npm init -y
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev typescript tsx @types/node @types/express
- Tạo
server.ts. (Chúng tôi cung cấp ví dụ đầy đủ trong phần “Cách xây dựng nhanh…” bên dưới.) - Chạy:
npx -y tsx server.ts
- Kiểm thử cục bộ bằng MCP Inspector hoặc thêm vào Claude Code:
npx @modelcontextprotocol/inspector
# or (for Claude Code)
claude mcp add --transport http my-server http://localhost:3000/mcp
(Các lệnh Inspector và Claude cho phép bạn xác thực khám phá và gọi công cụ.)
Làm thế nào để nhanh chóng xây dựng một máy chủ MCP cho Claude Code?
Danh sách kiểm tra nhanh
-
Khởi động máy chủ của bạn (khuyến nghị Streamable HTTP):
node server.tshoặcuvicorn server:app. -
Từ máy phát triển của bạn, hoặc:
- Dùng MCP Inspector để xác thực (
npx @modelcontextprotocol/inspector) và xác nhậntools/listvàresources/list; hoặc - Thêm máy chủ vào Claude Code:
claude mcp add --transport http <name> http://<host>:<port>/mcp(hoặc làm theo luồng giao diện web nếu client của bạn hỗ trợ MCP từ xa).
Nếu bạn dự định dùng connector Messages API của Anthropic cho MCP từ xa (không cần client riêng), hãy đọc tài liệu Claude — có thể cần một header beta (kiểm tra tài liệu để biết header chính xác và trạng thái hỗ trợ hiện tại).
Dưới đây là hai ví dụ máy chủ hoàn chỉnh nhưng gọn nhẹ mà bạn có thể sao chép, chạy và kết nối với Claude Code (hoặc MCP Inspector). Ví dụ TypeScript sử dụng Express + TypeScript SDK; ví dụ Python minh họa gắn FastAPI.
Lưu ý: mã bên dưới theo các ví dụ SDK công khai và được tối giản để rõ ràng. Đối với sản xuất, hãy thêm xác thực, ghi log, giới hạn tốc độ và kiểm tra đầu vào vượt ra ngoài mặc định của SDK.
Ví dụ 1: TypeScript + Express (Streamable HTTP)
Tạo server.ts (đầy đủ):
// server.ts
import express from "express";
import * as z from "zod/v4";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const server = new McpServer({ name: "claude-code-demo", version: "0.1.0" });
// Register a simple tool: add two numbers
server.registerTool(
"add",
{
title: "Add",
description: "Add two numbers a and b",
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a + b };
return {
content: ,
structuredContent: output
};
}
);
// Register a resource: greet user (dynamic)
server.registerResource(
"greeting",
new ResourceTemplate("greeting://{name}", { list: undefined }),
{ title: "Greeting", description: "Return a greeting for the name" },
async (uri, params) => {
return {
contents:
};
}
);
// Express + Streamable HTTP transport
const app = express();
app.use(express.json());
app.post("/mcp", async (req, res) => {
const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
// Close transport when connection closes
res.on("close", () => transport.close());
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
const port = parseInt(process.env.PORT || "3000", 10);
app.listen(port, () => console.log(`MCP server listening: http://localhost:${port}/mcp`));
Chạy:
npm install
npx -y tsx server.ts
Sau đó kết nối trong Claude Code (ví dụ):
# Add the remote server to your Claude Code MCP list (local dev)
claude mcp add --transport http my-demo http://localhost:3000/mcp
Ví dụ này được điều chỉnh từ Quick Start của TypeScript SDK chính thức và minh họa cách đăng ký công cụ và tài nguyên, rồi phơi bày chúng qua Streamable HTTP.
Ví dụ 2: Python + FastAPI (FastMCP + Streamable HTTP)
Tạo server.py (đầy đủ):
# server.py
from fastapi import FastAPI
from mcp.server.fastmcp import FastMCP
app = FastAPI()
mcp = FastMCP("claude-python-demo", stateless_http=True)
# tool: simple sum
@mcp.tool()
def add(a: int, b: int) -> dict:
"""Add two integers"""
return {"result": a + b}
# resource: simple greeting resource template
@mcp.resource("greeting://{name}")
def greeting(name: str):
return {"contents": }
# mount the streamable-http MCP endpoint (FastMCP exposes an ASGI app)
app.mount("/mcp", mcp.streamable_http_app())
# optional endpoint to demonstrate other API routes
@app.get("/")
async def root():
return {"status": "OK"}
Chạy:
uvicorn server:app --reload --port 8000
Kết nối với Inspector:
npx @modelcontextprotocol/inspector
# In Inspector select Streamable HTTP and enter http://localhost:8000/mcp
Các ví dụ SDK Python và tiện ích FastMCP giúp việc đăng ký các hàm được trang trí @mcp.tool() và @mcp.resource() — mà LLM có thể khám phá và gọi — trở nên đơn giản.
Claude Code thực sự gọi công cụ của bạn như thế nào?
Khi một LLM quyết định dùng công cụ, client sẽ gửi một lời gọi JSON-RPC tới máy chủ MCP. Máy chủ thực thi công cụ được yêu cầu (ví dụ: truy vấn DB, chạy kiểm thử, hoặc gọi API bên ngoài) và trả về nội dung có cấu trúc và nội dung hiển thị. Client (Claude Code) sau đó có thể đưa đầu ra có cấu trúc vào ngữ cảnh của mô hình để mô hình tiếp tục suy luận với dữ liệu đáng tin cậy đó — không chỉ là đầu ra văn bản của máy chủ. TypeScript SDK hỗ trợ đăng ký inputSchema và outputSchema (zod) để xác thực tham số và đầu ra, đồng thời cung cấp kiểu máy.
Bạn nên dùng công cụ kiểm thử và gỡ lỗi nào?
MCP Inspector
MCP Inspector là công cụ nhà phát triển trực quan chính thức để kiểm thử các máy chủ MCP. Nó cho phép bạn kết nối tới máy chủ (stdio, SSE, hoặc streamable-HTTP), liệt kê công cụ, gọi thủ công và kiểm tra vòng đời của thông điệp JSON-RPC — cực kỳ hữu ích trong quá trình phát triển. Khởi chạy bằng npx @modelcontextprotocol/inspector.
Kiểm thử cục bộ vs từ xa
- Cục bộ (stdio) — vòng lặp lặp lại nhanh cho ứng dụng desktop và gỡ lỗi ngoại tuyến.
- Streamable HTTP — kiểm thử với Inspector hoặc kết nối tới Claude Code bằng CLI
claude mcp addhoặc MCP connector trong Messages API cho kiểm thử từ xa. Đảm bảo cung cấp mọi header xác thực mà máy chủ của bạn yêu cầu.
Kết luận
MCP là chiếc cầu thực tế nối giữa các LLM hiện đại và những hệ thống thực sự nắm giữ dữ liệu và thực thi hành động. Với quy trình làm việc về mã, tích hợp Claude Code với máy chủ MCP cung cấp cho mô hình quyền truy cập có cấu trúc, có thể kiểm toán tới kho mã, CI, hệ thống ticket và công cụ tùy chỉnh — mang lại tự động hóa chính xác hơn và các tác động phụ an toàn hơn. Với các SDK chính thức bằng TypeScript và Python, Streamable HTTP cho việc lưu trữ từ xa, và các công cụ như MCP Inspector, bạn có thể xây dựng một máy chủ tối thiểu trong vài phút và lặp dần tới triển khai sản xuất.
Nhà phát triển có thể truy cập Claude Sonnet 4.5 API và Claude Opus 4.1 API v.v. thông qua CometAPI, phiên bản mô hình mới nhất luôn được cập nhật đồng bộ với trang chính thức. Để bắt đầu, hãy khám phá khả năng của mô hình trong Playground và tham khảo hướng dẫn API để biết hướng dẫn chi tiết. Trước khi truy cập, hãy đảm bảo bạn đã đăng nhập CometAPI và lấy API key. CometAPI cung cấp mức giá thấp hơn đáng kể so với giá chính thức để giúp bạn tích hợp.
Sẵn sàng bắt đầu?→ Đăng ký CometAPI ngay hôm nay!
Nếu bạn muốn biết thêm mẹo, hướng dẫn và tin tức về AI, hãy theo dõi chúng tôi trên VK, X và Discord!
