MCP (Model Context Protocol) là cầu nối giúp Gemini Antigravity IDE đọc dữ liệu WordPress qua REST API và truy vấn trực tiếp Postgres tự host. Cài 2 MCP server (wp-mcp và postgres-mcp) trên VPS, khai báo trong file cấu hình Antigravity, agent có thể tạo bài viết, query bảng người dùng, sinh báo cáo SQL ngay trong IDE mà không cần copy-paste.
Nếu bạn đang dùng Gemini Antigravity IDE để code và quản lý nhiều dự án WordPress hoặc dashboard có Postgres, việc phải mở 5-6 tab giữa IDE, phpMyAdmin, WP admin, terminal sẽ làm vỡ flow. MCP (Model Context Protocol) sinh ra để gom các nguồn dữ liệu lại thành một giao thức chuẩn, agent gọi tool trực tiếp trong cùng phiên chat.
Bài viết này hướng dẫn từng bước cài 2 MCP server phổ biến (WordPress và Postgres) trên Cloud VPS, cấu hình Antigravity nhận diện, và đưa ra các pattern dùng thực tế: agent đọc top 10 bài viewed nhất tháng, tạo draft từ JSON, query khách hàng theo tag để gửi email. Mọi thiết lập đều tự host, không gửi dữ liệu nội bộ ra dịch vụ thứ ba.
Trước khi bắt đầu, bạn nên có 1 VPS chạy Linux (AlmaLinux 9, Ubuntu 22/24 hoặc Debian 12/13 đều được), đã cài Node.js 20+ và Python 3.11+. Antigravity IDE đã đăng nhập Google account, gói Free là đủ để test luồng MCP. WordPress và Postgres có thể nằm trên cùng 1 VPS hoặc tách 2 máy đều ổn.
MCP là gì và tại sao Antigravity cần nó
MCP (Model Context Protocol) là một chuẩn mở do Anthropic công bố cuối 2024, sau đó được Google tích hợp vào Gemini Antigravity và nhiều IDE khác. Bản chất MCP là một lớp giao thức JSON-RPC chạy trên stdio hoặc HTTP, cho phép model AI gọi 3 nhóm primitive: Tools (hàm thực thi), Resources (dữ liệu read-only) và Prompts (mẫu prompt). Mỗi MCP server là một process độc lập, tự khai báo schema, model chỉ cần biết tên server và đọc list tool là dùng được.
Với Antigravity, MCP giải quyết bài toán cụ thể: agent của Gemini 3 mặc định chỉ thấy file trong workspace. Muốn nó biết bài WordPress nào đang publish, đơn hàng nào pending, server status ra sao thì phải có MCP server cầu nối. Khác với plugin IDE truyền thống (mỗi extension là một codebase riêng cho từng IDE), MCP server viết một lần dùng được trên Antigravity, Claude Desktop, Cursor, Continue.dev và bất kỳ client nào support MCP.
Kiến trúc tổng quan: Antigravity, MCP server, WordPress, Postgres
Trước khi cài, hình dung luồng dữ liệu. Antigravity chạy trên máy local của bạn (laptop, desktop). MCP server có 2 lựa chọn deploy: chạy ngay trên máy local cùng IDE, hoặc chạy trên VPS và Antigravity gọi qua SSH hoặc HTTP. Cách thứ hai phù hợp khi WordPress/Postgres đã ở VPS và bạn không muốn mở port public.
| Thành phần | Vai trò | Vị trí chạy |
|---|---|---|
| Antigravity IDE | Client, gửi prompt và nhận tool call | Laptop local |
| wp-mcp server | Wrap REST API WordPress thành MCP tools | VPS (cùng WP) |
| postgres-mcp server | Mở connection Postgres, expose query tool | VPS (cùng DB) |
| WordPress | Nguồn dữ liệu bài, user, comment | VPS |
| Postgres | Database analytics hoặc app sub | VPS |
Trong setup minh hoạ, mọi MCP server đều chạy local trên VPS rồi tunnel qua SSH về máy phát triển. Cách này giữ Postgres không phải mở port 5432 ra Internet, vẫn cho Antigravity gọi như đang chạy local.
Bước 1: chuẩn bị VPS và cài Node.js + Python
VPS tối thiểu 2 vCPU, 4 GB RAM cho cả WordPress + Postgres + 2 MCP server. Nếu chỉ test, 1 vCPU 2 GB cũng chạy được. Đăng nhập root, cài Node 20 và Python 3.11 (Ubuntu 24 ví dụ):
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt update && apt install -y nodejs python3.11 python3.11-venv python3-pip git node -v && python3.11 -V
Tạo user không-root để chạy MCP server, tránh dùng root cho process Node:
useradd -m -s /bin/bash mcp su - mcp mkdir -p ~/mcp-servers && cd ~/mcp-servers
Bước 2: cài và cấu hình WordPress MCP server
WordPress đã có REST API sẵn (endpoint /wp-json/wp/v2). MCP server cho WP chỉ là một wrapper Node gọi REST với Application Password để xác thực. Repo phổ biến là wp-mcp-server (cài qua npm):
cd ~/mcp-servers npm init -y npm install wp-mcp-server mkdir -p config
Vào WordPress admin, mở Users -> Profile -> Application Passwords, tạo password mới với tên "antigravity-mcp", lưu chuỗi 24 ký tự (chỉ hiện 1 lần). Tạo file cấu hình ~/mcp-servers/config/wp.json:
{
"site_url": "https://your-wp-site.example.com",
"username": "admin",
"app_password": "XXXX XXXX XXXX XXXX XXXX XXXX",
"allowed_tools": ["list_posts", "get_post", "create_post", "update_post", "list_users", "list_comments"]
}
Test thử bằng cách chạy trực tiếp, server sẽ lắng nghe stdio:
npx wp-mcp-server --config ~/mcp-servers/config/wp.json # Ctrl+C để thoát sau khi thấy log "MCP server ready on stdio"
Bước 3: cài Postgres MCP server
Với Postgres, dùng package Python phổ biến là mcp-server-postgres. Cài trong venv riêng:
cd ~/mcp-servers python3.11 -m venv venv-pg source venv-pg/bin/activate pip install mcp-server-postgres psycopg2-binary
Tạo user read-only trong Postgres để MCP không vô tình DROP bảng:
sudo -u postgres psql CREATE USER mcp_readonly WITH PASSWORD 'strong-password-here'; GRANT CONNECT ON DATABASE analytics TO mcp_readonly; GRANT USAGE ON SCHEMA public TO mcp_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO mcp_readonly; q
Lưu connection string vào ~/.mcp-pg.env (chmod 600), tránh hard-code trong config:
echo 'PG_DSN=postgresql://mcp_readonly:[email protected]:5432/analytics' > ~/.mcp-pg.env chmod 600 ~/.mcp-pg.env
Bước 4: khai báo MCP server trong Antigravity
Antigravity lưu cấu hình MCP trong file ~/.antigravity/mcp.json (Linux/Mac) hoặc %APPDATA%antigravitymcp.json (Windows). Mở từ Settings -> MCP Servers -> Edit JSON. Vì MCP server chạy trên VPS, ta cần Antigravity gọi qua SSH:
{
"mcpServers": {
"wp-tnd": {
"command": "ssh",
"args": [
"[email protected]",
"npx wp-mcp-server --config /home/mcp/mcp-servers/config/wp.json"
]
},
"pg-analytics": {
"command": "ssh",
"args": [
"[email protected]",
"source /home/mcp/.mcp-pg.env && /home/mcp/mcp-servers/venv-pg/bin/python -m mcp_server_postgres --dsn "$PG_DSN""
]
}
}
}
Quan trọng: dùng SSH key, không password, vì Antigravity gọi non-interactive. Trên máy local sinh key bằng ssh-keygen -t ed25519, copy public key vào ~/.ssh/authorized_keys của user mcp trên VPS. Test bằng ssh [email protected] 'echo ok', không hỏi password là OK.
Bước 5: kiểm tra agent gọi tool
Mở Antigravity, vào tab Chat, nhập:
@wp-tnd list 5 bài WordPress mới nhất trạng thái publish, hiển thị id, title, date
Agent sẽ hiển thị tool call list_posts với param status=publish, per_page=5. Bấm Approve, vài giây sau bảng 5 dòng hiện ra. Nếu lỗi connection refused thì kiểm tra SSH key, lỗi 401 thì sai Application Password.
Tiếp tục test Postgres:
@pg-analytics đếm số dòng trong bảng pageviews 7 ngày qua, group theo ngày
Agent tự viết SQL SELECT date_trunc('day', ts), COUNT(*) FROM pageviews WHERE ts >= NOW() - INTERVAL '7 days' GROUP BY 1 ORDER BY 1 và gọi tool query. Vì user là read-only, dù prompt có dụ DELETE/UPDATE thì server cũng từ chối.
Pattern thực tế 1: tạo bài WordPress từ outline JSON
Một use case hay là viết script ngắn trong Antigravity workspace, agent đọc file outline.json (chứa title, slug, sections) và gọi tool create_post:
@wp-tnd đọc file outline.json trong workspace, với mỗi mục tạo draft post với title, slug, content sinh từ field "sections" (Gutenberg block paragraph), trả về list post_id sau khi xong
Agent sẽ chia thành nhiều tool call create_post (mỗi item một call), Antigravity show batch approval. Tick "approve all" nếu tin tưởng, hoặc duyệt từng cái nếu lần đầu.
Pattern thực tế 2: report top sản phẩm bán chạy
Giả sử bạn có bảng orders, order_items, products trong Postgres analytics. Yêu cầu agent:
@pg-analytics tìm top 10 sản phẩm doanh thu cao nhất 30 ngày qua, hiển thị product_name, total_revenue, qty_sold, average_order_value. Format markdown table.
Agent viết SQL có JOIN 3 bảng, gọi tool, render bảng markdown. Bạn có thể chain tiếp: "@wp-tnd tạo draft với title 'Top sản phẩm tháng X' và content là bảng trên cộng 2 đoạn phân tích". Workflow này biến Antigravity thành reporting tool nhanh, không phải mở Metabase hay viết script Python riêng.
Pattern thực tế 3: trigger flow từ comment WordPress
Khi WP có comment chứa keyword đặc biệt (ví dụ "support cần gấp"), bạn muốn agent đọc, tóm tắt, ghi vào bảng support_tickets trong Postgres:
- Yêu cầu agent: @wp-tnd list comments 24h qua status approved có search "support"
- Agent gọi list_comments, lọc kết quả
- Với mỗi comment, agent gọi tool postgres write (nếu bạn đã grant INSERT) hoặc generate SQL để bạn chạy thủ công
- Nếu chỉ cấp read-only, agent xuất file CSV và bạn import sau
Nguyên tắc least-privilege: chỉ grant INSERT trên bảng support_tickets cho một user mcp_writer riêng, không cùng user mcp_readonly. Trong Antigravity khai báo 2 MCP server pg-analytics-ro và pg-tickets-rw, agent biết tool nào dùng cho mục đích nào.
Best practice bảo mật MCP
- Luôn dùng user database read-only cho query phân tích, tách user write riêng nếu cần
- Application Password trong WP rotate 30-60 ngày, không lưu trong git
- SSH key cho MCP nên là key riêng (không dùng key chính dev), restrict trong authorized_keys bằng command="..." nếu muốn cứng hơn
- Bật allowed_tools whitelist trong wp.json, không expose toàn bộ REST API
- Log mọi tool call ra file /var/log/mcp-audit.log với timestamp, user, tool name, params
- Backup Postgres dump hằng ngày trước khi cho agent động vào (snapshot VPS hỗ trợ rollback nhanh)
Troubleshooting các lỗi hay gặp
Lỗi 1: Antigravity báo "MCP server failed to start". Nguyên nhân thường là SSH key chưa add hoặc command path sai. Mở Settings -> MCP -> View Logs, kiểm tra dòng stderr cuối cùng. Chạy thử ssh [email protected] 'which npx' để xác nhận PATH.
Lỗi 2: Tool call timeout sau 30s. MCP server có thể đang đợi connection Postgres không phản hồi (host firewall). Tăng timeout trong mcp.json bằng field "timeoutSeconds": 60, đồng thời check sudo systemctl status postgresql.
Lỗi 3: WP MCP trả 403 Forbidden. Application Password đôi khi không hoạt động nếu site có security plugin (Wordfence) chặn REST API. Vào plugin disable rule "Disable REST API for non-authenticated" hoặc thêm whitelist IP VPS.
Lỗi 4: Agent gọi tool quá nhiều, vượt quota Free. Giải pháp là cache kết quả trong workspace dưới dạng file json, dùng tool read_file thay vì gọi list_posts lặp lại. Antigravity Free có giới hạn requests/ngày nên cache giảm 60-70% call.
Khi nào nên chạy MCP local vs VPS
Nếu dữ liệu nhạy cảm hoặc database đặt sau firewall corporate, MCP server bắt buộc chạy trên VPS gần DB, Antigravity gọi qua SSH tunnel. Latency thêm 50-150ms per call nhưng đổi lại không expose port database. Trường hợp WP/Postgres ở chính máy dev local (môi trường staging), MCP chạy local cho phản hồi nhanh hơn, không cần SSH.
Khi team 3-5 dev cùng dùng, đặt MCP trên VPS chia sẻ là hợp lý: mỗi dev cấu hình mcp.json giống nhau, không cần install local. Việc revoke quyền chỉ làm 1 chỗ (xoá SSH key hoặc đổi Application Password).
FAQ
MCP có hoạt động với Gemini Antigravity gói Free không?
Có. MCP là tính năng client-side, không phải feature trả phí riêng. Gói Free đủ để cấu hình unlimited MCP server, chỉ giới hạn ở số request Gemini 3 trong ngày. Khi pro/ultra nâng quota, agent sẽ tận dụng MCP nhiều hơn.
Tôi có thể viết MCP server cho dịch vụ riêng (CRM, ERP nội bộ) không?
Hoàn toàn được. MCP có SDK chính thức cho Node, Python, Go. Viết 1 file index.js khai báo list_customers, get_invoice rồi expose qua stdio. Antigravity nhận diện tự động. Toàn bộ codebase MCP server có thể chỉ 100-200 dòng cho 5-10 tool đầu.
Có cần Docker khi cài MCP server không?
Không bắt buộc. MCP server là process Node hoặc Python thường, chạy trực tiếp ổn. Docker giúp dependency isolation nếu VPS có nhiều phiên bản Node khác nhau, hoặc khi muốn deploy nhiều MCP server kèm reverse proxy.
Antigravity có lưu dữ liệu MCP gọi về Google không?
Tool call result được gửi vào context Gemini 3 để model trả lời, do đó nội dung có đi qua API Google. Nếu data quá nhạy cảm (PII, tài chính), nên redact trước trong MCP server (mask email, số CCCD) trước khi return. Hoặc dùng Antigravity với cấu hình data residency Europe nếu có sẵn.
Khác gì so với plugin WP-CLI đã có?
WP-CLI là tool dòng lệnh, dev gõ tay. MCP biến WP-CLI và REST API thành "tool" mà agent AI gọi tự động dựa trên ngôn ngữ tự nhiên. Hai công cụ bổ sung nhau, không thay thế. Dev senior vẫn nên biết WP-CLI để debug khi MCP fail.
VPS yếu (1 vCPU 1GB) có chạy 2 MCP server cùng lúc được không?
Được, mỗi MCP server idle chỉ tốn 30-60MB RAM. Khi có tool call thì spike lên 100-200MB. Nếu VPS đã chạy WP + Postgres thì 1GB là chật, nên nâng lên 2GB để ổn định. Cloud VPS TND cấu hình 2 vCPU 4GB dư sức cho stack này.
VPS sẵn sàng cho MCP server và database tự host
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Cấu hình 2 vCPU 4GB từ 199k/tháng vừa khít cho WordPress + Postgres + MCP server chạy 24/7.
Xem 8 cấu hình Cloud VPS →


