一、MCP 協議概觀:AI 時代的「通用工具協議」
這是一段普通正文段落,演示 strong 加粗、em 斜體、b 標籤粗體、行內 mcp-server 程式碼、鍵盤組合鍵 Cmd+Shift+P、已廢棄的 JSON-RPC 2.0 直呼,以及 需要高亮的核心結論。若你在 vmzig 控制台 已租用 Mac mini M4 節點,可按本文步驟直接上手隔離部署。
Model Context Protocol(MCP)由 Anthropic 於 2024 年底發布,旨在解決 AI Host(如 Cursor、Claude Desktop)與外部工具之間的 N×M 對接困境:原本每對 Host-Tool 組合都需各寫一套整合,MCP 將其收斂為一層標準協議。2026 年已被 OpenAI、Google、微軟等主流生態廣泛採納。
架構師提示: MCP 的核心價值不在於「又一個 API 標準」,而在於它把 工具發現(Discovery)、呼叫(Invocation)、上下文注入(Context Injection) 三件事標準化了。把 MCP Server 跑在獨立遠端 Mac 上,可避免污染本地開發環境與金鑰。
二、Host-Client-Server 三層模型
MCP 三角色詳解
各角色職責
| 角色 | 職責 | 典型產品 |
|---|---|---|
| MCP Host | 發起工具發現與呼叫的 AI 應用 | Cursor、Claude Desktop |
| MCP Client | Host 內的協議適配層,維護與 Server 的 1:1 連線 | Host 內建 |
| MCP Server | 暴露工具、資源與提示詞的獨立程序 | filesystem、git、sqlite 等 |
最小權限原則
遠端節點應遵循最小權限:每個 MCP 專案使用獨立 Unix 用戶,SSH 金鑰按專案隔離,日誌寫入獨立目錄。正式環境絕對不允許以 root 帳戶執行 MCP Server。
工具清單(ul)
- 使用 vmzig Mac mini M4 作為隔離沙箱(24GB 獨佔實體機)
- 透過 SSH 連接埠轉發暴露 MCP 連接埠,外部不可直接存取
- 在
~/.cursor/mcp.json中註冊 Server 端點 - 定期輪換 SSH 金鑰(建議每 90 天一次)
部署步驟(ol)
- 在 vmzig 控制台租用 Mac mini M4 節點並取得 SSH 憑證
- 建立專用用戶
mcp-isolated - 安裝 Node.js LTS 與 MCP SDK
- 撰寫
server.ts,宣告工具定義 - 啟動 Server 並用
mcp-cli驗證工具清單
三、本地與遠端 Mac MCP 對比
場景對比表格
| 維度 | 本地 MCP | 遠端 Mac MCP(vmzig M4) |
|---|---|---|
| 隔離性 | 低,共享主帳戶 | 高,獨立 Unix 用戶 |
| 算力上限 | 受本機負載限制 | M4 24GB 獨佔實體機 |
| 金鑰安全 | 易與日常開發混用 | 按專案隔離 SSH 金鑰 |
| 多 Agent 並行 | 資源競爭嚴重 | 多 Session SSH,互不干擾 |
| 適用場景 | 快速原型驗證 | 團隊合規、正式環境部署 |
四、遠端部署實戰:SSH 隔離設定
程式碼區塊:建立隔離用戶
# 在遠端 Mac 上建立隔離用戶並設定目錄權限
sudo sysadminctl -addUser mcp-isolated -password -
sudo mkdir -p /Users/mcp-isolated/mcp-workspace
sudo chown mcp-isolated:staff /Users/mcp-isolated/mcp-workspace
程式碼區塊:啟動 MCP Server
// server.ts — 以 Filesystem MCP Server 為例
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "vmzig-fs", version: "1.0.0" }, {
capabilities: { tools: {} }
});
const transport = new StdioServerTransport();
await server.connect(transport);
定義清單(dl):常用環境變數
- MCP_HOST
- MCP Server 監聽位址,預設
127.0.0.1,遠端部署時保持 localhost 並透過 SSH 轉發 - MCP_PORT
- 監聽連接埠,預設
3000,可按專案自訂以避免衝突 - NODE_ENV
- 執行環境,正式部署設為
production,開啟效能最佳化與錯誤上報 - SSH_KEY_PATH
- SSH 私鑰路徑,建議存放於
~/.ssh/project-name_ed25519
摺疊區塊(details):SSH 連接埠轉發命令
點擊展開:SSH 連接埠轉發完整命令
將遠端 Mac 的 3000 連接埠對應到本機,供 Cursor MCP Client 連線:# 建立 SSH 隧道(背景執行)
ssh -N -f -L 3000:127.0.0.1:3000 \
-i ~/.ssh/vmzig_ed25519 \
mcp-isolated@your-vmzig-node.com
五、圖片與媒體展示
六、引用與分隔示例
安全警告: 永遠不要把 MCP Server 直接暴露到公網。SSH 連接埠轉發是最安全的遠端存取方式——只有持有私鑰的用戶才能建立隧道。
七、嵌套清單與混合元素
完成部署後,按以下清單驗收——巢狀清單中可混用 code 與 強調:
- 網路層
- 連接埠可達:
curl http://localhost:3000/health回傳{"status":"ok"} - 防火牆規則:Ctrl+C 停止後連接埠即關閉
- 工具層
- 工具清單非空:
mcp-cli list-tools --server 3000 - 工具呼叫成功:回傳預期資料格式
有序驗收步驟:
- 啟動 MCP Server
- 建立 SSH 隧道
- 在 Cursor 的
mcp.json註冊端點 - 重啟 Cursor,確認工具出現在工具列
- 執行一次實際工具呼叫,查看日誌輸出
總結: 本探針文章刻意覆蓋 BLOG_WRITER_CHECKLIST §1 所需的全部 Prose 裸標籤——h2~h5、p、strong/b/em/a/code/kbd/del/mark、ul/ol/li/dl/dt/dd、pre/pre+code、table/thead/tbody/tr/th/td、blockquote、hr、img/figure/figcaption、details/summary——為 CSS 選擇器驗收提供完整覆蓋面。
常見問題
探針文章為什麼要覆蓋全部 Prose 元素?
Markdown 渲染產物均為裸 HTML 標籤,CSS 選擇器必須能直接命中 h2、table、kbd 等元素,否則未來文章會出現樣式缺失。
在 vmzig 遠端 Mac 上如何隔離 MCP Server?
建議為每個 MCP 專案建立獨立 Unix 使用者,透過 SSH 埠轉發連線,避免與主開發環境共用金鑰與檔案權限。