在第一篇文章中,我們先從需求面談起,讓 QueryPal 具備了 MCP Server 的能力,AI 客戶端(例如 Copilot、Kiro、Claude Desktop)能夠「直接」調用我們的功能。但你可能會好奇:AI 究竟是怎麼知道我有哪些功能?又是怎麼知道要傳什麼參數、回傳什麼資料的?這篇就從實務角度拆解 MCP 的核心運作原理。
MCP,全名 Model Context Protocol,是一個讓 AI 與外部工具進行標準化互動的協定。它解決了兩個關鍵問題:
與傳統 API 相比,MCP 多了「自描述(self-describing)」的能力——當 AI 連線到 MCP Server 時,它能自動取得所有工具清單、每個工具的用途說明、輸入/輸出參數格式,甚至是錯誤格式。
適用場景:
MCP 的運作可以拆成幾個核心模組:
list-collections
、generate-query
流程解讀:
根據官方「Concepts of MCP」說明(見參考連結),MCP 的高層結構包含:
mcp-remote
代理。Mermaid:系統關係與資料流
參考:Concepts of MCP(系統架構) — https://modelcontextprotocol.io/docs/learn/architecture#concepts-of-mcp
MCP 採用 JSON-RPC 2.0 為基礎進行通訊,格式如下:
{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 1
}
回應範例:
{
"jsonrpc": "2.0",
"result": {
"tools": [
{
"name": "list-collections",
"description": "List all MongoDB collections",
"input_schema": {"type": "object", "properties": {}},
"output_schema": {"type": "array", "items": {"type": "string"}}
}
]
},
"id": 1
}
{
"jsonrpc": "2.0",
"method": "tools/execute",
"params": {
"name": "generate-query",
"arguments": {
"collection": "users",
"description": "Find all active users"
}
},
"id": 2
}
參考資料:
MCP 讓 AI 不只是「讀懂你的 API 文件」,而是能「自己找到並用對工具」。在 QueryPal 的案例中,我們不需要額外寫一堆 Copilot 專用的封裝,只要一次實作 MCP,所有支援的 AI 工具都能直接使用。
下一篇,我會示範如何從零實作一個完整可運作的 MCP Server,讓你更清楚它的內部運作。