經過前幾篇的介紹,我們已經知道 MCP(Model Context Protocol) 是 AI 世界的「通用語言」:
讓模型(Model)、伺服端(經過前幾篇的介紹,我們已經知道:
MCP(Model Context Protocol) 是 AI 世界的「通用語言」。
它讓 模型(Model)、伺服端(Server)、與 客戶端(Client) 之間,
能夠共享上下文、協作任務,形成真正的「人機共創」生態。
不過知道原理還不夠,若想實際打造可運作的 MCP 環境,
我們必須理解:它的整體結構到底是什麼?
每一個角色又分別負責哪一塊?
這篇文章就帶你從系統設計的角度出發,
拆解出一個最小但完整的 MCP 專案架構,
讓你在開始寫程式前,就能一眼看懂整個生態系的「骨架」。Server)、客戶端(Client)之間能共享上下文、協作任務。
接下來的重點,就是讓理論變成現實。
這篇文章將帶你從零開始,建立一個最簡單、可運行的 MCP 環境,讓你能在本地「親眼看到」 AI 透過協議與工具溝通的過程。
要啟動一個 MCP 生態,你只需要三樣東西:
這三者的關係可以這樣想:
Model (Client)
↓ 指令 / 請求
MCP Server
↓ 回傳結果
Transport 協議(Stdio / HTTP)
my-first-mcp-server/
├── index.js # 主程式入口,負責啟動 MCP Server
├── package.json # npm 設定,記錄專案資訊與相依套件
├── mcp.json # MCP Server 設定檔,讓 host 知道怎麼啟動你
├── node_modules/ # npm 安裝的套件
└── README.md # (選)說明用途與使用方式
在 MCP 生態裡,「index.js」和「mcp.json」是一對靈魂檔案,一個負責「怎麼跑」,另一個告訴「外界要怎麼找你」。
這是你的伺服器邏輯進入點。
裡面主要負責三件事:
可以把它想成一個「工具管理中心」- 每一個 server.registerTool() 都是一個可被 AI 呼叫的小模組。
這個設定檔讓外部的 MCP Client(像 ChatGPT、VSCode、Copilot Chat)
知道該怎麼啟動、連線、與你通訊。
{
"name": "my-first-mcp-server",
"description": "A simple demo server for MCP",
"entry_point": ["node", "index.js"],
"transport": {
"type": "stdio"
}
}
主要欄位說明
欄位 | 說明 |
---|---|
name |
Server 名稱(會顯示在 ChatGPT / VSCode 裡) |
entry_point |
啟動方式(通常是 node index.js ) |
transport |
通訊協定類型:stdio 、websocket 、http |
MCP 的 Transport 其實就像「連線管道」:
類型 | 用途 | 說明 |
---|---|---|
Stdio | 本地開發、CLI、桌面 App(最常見) | 透過標準輸入/輸出溝通 |
StreamHTTP | 遠端服務、API 架構 | 用 HTTP streaming 傳遞資料 |
WebSocket | 雙向即時互動 | 比如即時 IDE 整合或協作 |
當一個 MCP Client 載入 mcp.json 時,它會:
接著只要模型發出呼叫指令,Server 就會執行對應的工具並回傳結果。
延伸方向 | 範例 |
---|---|
加入多個工具 | registerTool("add_numbers", {...}) |
呼叫外部 API | 整合資料庫、HTTP API、或檔案系統 |
換成 HTTP / WebSocket | 讓其他應用或遠端 agent 也能接入 |
與 VSCode / ChatGPT 整合 | 讓 AI 可以直接呼叫你的工具 |
MCP 的魅力就在於:
每個 Server 都是獨立模組,可以被任何支援 MCP 的平台載入使用。
在這篇,我們先不寫一行程式碼,
只專注於理解 MCP 專案的骨架與運作流程。