iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
生成式 AI

一塊一塊拼湊的 AI 樂高世界之旅系列 第 24

[Day 24] - 實作前準備:理解 MCP 專案環境結構

  • 分享至 

  • xImage
  •  

前言

經過前幾篇的介紹,我們已經知道 MCP(Model Context Protocol) 是 AI 世界的「通用語言」:
讓模型(Model)、伺服端(經過前幾篇的介紹,我們已經知道:
MCP(Model Context Protocol) 是 AI 世界的「通用語言」。
它讓 模型(Model)、伺服端(Server)、與 客戶端(Client) 之間,
能夠共享上下文、協作任務,形成真正的「人機共創」生態。

不過知道原理還不夠,若想實際打造可運作的 MCP 環境,
我們必須理解:它的整體結構到底是什麼?
每一個角色又分別負責哪一塊?

這篇文章就帶你從系統設計的角度出發,
拆解出一個最小但完整的 MCP 專案架構,
讓你在開始寫程式前,就能一眼看懂整個生態系的「骨架」。Server)、客戶端(Client)之間能共享上下文、協作任務。

接下來的重點,就是讓理論變成現實。
這篇文章將帶你從零開始,建立一個最簡單、可運行的 MCP 環境,讓你能在本地「親眼看到」 AI 透過協議與工具溝通的過程。

MCP 專案的三大角色

要啟動一個 MCP 生態,你只需要三樣東西:

  1. MCP Client:接收使用者指令(例如 ChatGPT 或 VS Code)
  2. MCP Server:負責執行功能(你要寫的工具程式)
  3. 協議層(Protocol):Stdio 或 StreamHTTP,讓兩者通訊

這三者的關係可以這樣想:

Model (Client)
     ↓ 指令 / 請求
MCP Server
     ↓ 回傳結果
Transport 協議(Stdio / HTTP)

MCP 專案結構概觀

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」是一對靈魂檔案,一個負責「怎麼跑」,另一個告訴「外界要怎麼找你」。

MCP Server 的核心 (index.js)

這是你的伺服器邏輯進入點。
裡面主要負責三件事:

  1. 建立一個 MCP Server 實例
  2. 註冊工具(Tools),每個工具就是一個可被模型呼叫的功能
  3. 使用某種 Transport(例如 Stdio)啟動通訊

可以把它想成一個「工具管理中心」- 每一個 server.registerTool() 都是一個可被 AI 呼叫的小模組。

MCP 的「身分證」 (mcp.json)

這個設定檔讓外部的 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 通訊協定類型:stdiowebsockethttp

Transport - MCP 的溝通橋樑

MCP 的 Transport 其實就像「連線管道」:

類型 用途 說明
Stdio 本地開發、CLI、桌面 App(最常見) 透過標準輸入/輸出溝通
StreamHTTP 遠端服務、API 架構 用 HTTP streaming 傳遞資料
WebSocket 雙向即時互動 比如即時 IDE 整合或協作

MCP Client 怎麼找到你的 Server?

當一個 MCP Client 載入 mcp.json 時,它會:

  1. 讀取你的 entry point
  2. 執行對應指令(例如 node index.js)
  3. 建立 stdio 管道
  4. 發送「listTools」請求
  5. 顯示可用的工具清單

接著只要模型發出呼叫指令,Server 就會執行對應的工具並回傳結果。

MCP Server 的可擴充性

延伸方向 範例
加入多個工具 registerTool("add_numbers", {...})
呼叫外部 API 整合資料庫、HTTP API、或檔案系統
換成 HTTP / WebSocket 讓其他應用或遠端 agent 也能接入
與 VSCode / ChatGPT 整合 讓 AI 可以直接呼叫你的工具

MCP 的魅力就在於:
每個 Server 都是獨立模組,可以被任何支援 MCP 的平台載入使用。

結語

在這篇,我們先不寫一行程式碼,
只專注於理解 MCP 專案的骨架與運作流程。


上一篇
[Day 23] MCP 架構解析 - 模型、伺服端、客戶端的協作藍圖
系列文
一塊一塊拼湊的 AI 樂高世界之旅24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言