簡體 · English · 繁體

AI Agent 連接企業數據的新標準:MCP 協議 5 步落地指南

大模型很聰明,但不知道你公司內部有什麼。MCP 協議讓 AI Agent 安全地訪問企業文件、數據庫、API,不再亂編數據

2026-08-25 · Leo · 教程 · 10 分鐘閱讀
TL;DR — MCP(Model Context Protocol)是 Anthropic 在 2024 年底開源的協議,讓 AI Agent 以標準化方式訪問外部數據源。本文涵蓋:① MCP 是什麼 ② 5 步快速接入企業知識庫 ③ 5 個真實踩坑與修法 ④ 與 RAG 的選型對比。30 分鐘跑通範例代碼,不依賴公網 IP。

痛點:大模型「不知道」你公司的事

部署完 AI Agent,第一反應往往是:它能回答通用問題,但不知道公司制度、合同範本、項目進度、客服記錄。

傳統解法有兩條路:

MCP 提供了第三條路:標準化協議層,像 USB 接口一樣,讓 AI Agent 即插即用地連接各種數據源,無需為每個數據源單獨寫整合代碼。

MCP 是什麼

MCP(Model Context Protocol)由 Anthropic 開源,核心思路:把 AI Agent 與數據源之間的通信方式標準化

類比:USB 協議讓電腦連接各種設備(滑鼠、鍵盤、硬盤),不用為每個設備單獨寫驅動。MCP 讓 AI Agent 連接各種數據源(文件、數據庫、API),不用為每個數據源單獨寫整合。

MCP 協議包含三類核心組件:

組件作用類比
Host(宿主)AI 應用本身(如 Mule Agent)電腦
Client(客戶端)與每個數據源維持一個連接USB 控制器
Server(服務端)每個數據源的 MCP 適配器設備驅動
Tools(工具)Server 暴露給 Agent 的可調用能力設備功能接口

5 步接入企業知識庫

步驟 1:安裝 MCP SDK約 2 分鐘
# Python 環境(建議 3.10+)
pip install mcp

# Node.js 環境(如果用 JS/TS)
npm install @modelcontextprotocol/sdk

MCP 有 Python 和 TypeScript 兩個官方 SDK,企業內部系統多用 Python 實作。

步驟 2:寫一個檔案系統 MCP Server約 5 分鐘

先用一個最簡例子:讓 AI Agent 能讀取公司共享盤裡的檔案。

# file_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("企業檔案系統")

@mcp.tool()
def read_document(path: str) -> str:
    """讀取指定路徑的文件內容"""
    import os
    # 安全限制:只允許讀取指定目錄
    ALLOWED_DIR = "/data/knowledge_base"
    full_path = os.path.realpath(os.path.join(ALLOWED_DIR, path))
    if not full_path.startswith(ALLOWED_DIR):
        return "錯誤:路徑不在允許範圍內"
    try:
        with open(full_path, "r", encoding="utf-8") as f:
            return f.read()[:8000]  # 限制返回長度
    except Exception as e:
        return f"讀取失敗:{e}"

if __name__ == "__main__":
    mcp.run()
安全要點:一定要用 os.path.realpath 做路徑規範化,並檢查最終路徑是否在允許目錄內。防止 Agent 透過 ../../../etc/passwd 讀取系統檔案。
步驟 3:啟動 MCP Server約 1 分鐘
# 方式 A:stdio 模式(本地進程通信,最簡單)
python file_server.py

# 方式 B:SSE 模式(HTTP 長連接,適合遠程)
python -m uvicorn file_server:app --port 8080

stdio 模式透過標準輸入輸出通信,適合本地整合。Mule Agent 可以直接透過 stdio 模式調用本地 MCP Server。

步驟 4:設定 Mule Agent 接入 MCP Server約 3 分鐘
# mule_agent_config.json
{
  "mcp_servers": [
    {
      "name": "企業知識庫",
      "command": "python",
      "args": ["/data/mcp/file_server.py"],
      "description": "存取公司知識庫文件"
    }
  ]
}

設定完成後,AI Agent 在對話中就能自動發現並調用 read_document 工具,讀取 /data/knowledge_base/ 目錄下的檔案。

步驟 5:測試完整對話約 5 分鐘

向 AI Agent 提問:

「我們公司最新的年假制度是怎麼規定的?請從知識庫中找到相關文件並回答。」

Agent 會自動:

  1. 調用 read_document("hr/vacation-policy-2026.md")
  2. 讀取文件內容
  3. 基於真實內容回答,不再編造

全程在企業內部網路完成,數據不出公司,符合數據安全要求。

5 個真實踩坑與修復

坑 1:路徑穿越漏洞(安全紅線)

問題:如果不做路徑檢查,惡意 prompt 可以讓 Agent 讀取 /etc/passwd 或公司敏感文件。

✅ 修法:所有檔案操作必須做路徑規範化 + 前綴檢查:if not realpath(full).startswith(ALLOWED_DIR): raise PermissionError()
坑 2:返回內容過長導致 token 爆炸

問題:大文件直接返回全部內容,消耗大量 token,成本飆升,回應變慢。

✅ 修法:限制返回長度(範例中設了 [:8000]),或用 top_k 參數只返回最相關片段。需要全文時再讓 Agent 分段讀取。
坑 3:MCP Server 啟動失敗但 Agent 無提示

問題:Server 進程掛了,Agent 沉默,用戶不知道工具不可用,還以為 AI 在思考。

✅ 修法:設定 health_check_interval(MCP SDK 內置),定期探測 Server 狀態。異常時在對話中主動告知用戶:「當前無法存取知識庫,請聯繫管理員」。
坑 4:多語言文件編碼錯誤

問題:企業文件有 GBK 編碼(Windows 系統導出文件),直接讀 utf-8 報 UnicodeDecodeError

✅ 修法:用 encoding="utf-8", errors="replace" 自動替換無法解碼的字元,或先嘗試 GBK 再 fallback UTF-8。
坑 5:Agent 重複調用同一工具浪費 token

問題:Agent 不確定文件是否完整,連續調用 read_document 同一文件多次。

✅ 修法:在工具返回內容中加入 token_usedcontent_length 元信息,讓 Agent 判斷是否已獲得完整內容。MCP 協議支持在 tool result 中返回 metadata。

MCP vs RAG:怎麼選

維度MCPRAG
適用場景即時數據、頻繁變更的檔案、需要寫操作的場景大規模文件庫、搜尋型問答、歷史歸檔數據
延遲低(直接讀檔案/API)高(向量檢索 + LLM 生成)
實現成本中(每個數據源要寫 MCP Server)高(切塊、向量化、建索引)
數據一致性即時(讀取時就是最新)滯後(依賴索引更新時間)
安全性高(可在 MCP Server 加細粒度權限)中(向量數據庫整體開放)

實際推薦:兩者可以疊加用。MCP 處理即時、敏感的讀寫操作;RAG 處理大規模文件搜尋。典型架構:RAG 負責「找相關文件」,MCP 負責「獲取詳細內容」。

💡 延伸閱讀:想了解如何在企業 IM(飛書/釘釘/企微)裡直接調用這個 MCP 增強的 AI Agent?查看《企業 IM 裡直接調 AI Agent:4 步搞定飛書/釘釘/企微接入》,含 Stream 模式即時推送教程。