跳轉至

FastMCP

概述

FastMCP 是一個基於 MCP(Model Context Protocol)的聚合網關,當前版本為 fastmcp:3.4.6,對外暴露 173 個 tools,統一整合多個異構服務的 API,為上層 AI 應用提供單一、標準化的工具呼叫介面。此網關特別適合需要同時存取資料庫、向量檢索、雲端儲存及內容管理系統的企業環境。其核心價值在於減少客戶端直接連接觸發的複雜性與安全風險,並透過集中式路由簡化 tool 的版本管理與權限控制。

架構

FastMCP 位於 AI 應用與後端服務之間,作為 MCP 的統一入口。它透過模組化整合以下組件:

  • Dockhand:用於容器管理與動態服務調度,提供工具層面的容器操作能力。
  • PostgreSQL(PG):作為關係型資料庫後端,支援結構化查詢與事務性操作。
  • Qdrant:向量資料庫,提供語意檢索及 RAG(檢索增強生成)相關工具。
  • Alist:檔案列表與掛載工具,支援多儲存源聚合,例如本機、S3、WebDAV 等。
  • Nextcloud:提供檔案同步、分享及協作功能,整合後可操作雲端文件與使用者目錄。
  • Cloudflare:整合 Cloudflare 相關 API,包括 DNS 管理、快取刷新與 Tunnel 配置。

所有向外連線均透過 Docker 自訂網絡 cf_network 進行,固定 IP 為 172.21.0.28,並以環境變數注入敏感參數,避免硬編碼。

部署(Docker Compose 片段)

以下為精簡可用的 Compose 配置,支援將 FastMCP 加入既有 cf_network,並掛載 rclone 配置及 OCI 憑證:

services:
  fastmcp:
    image: fastmcp:3.4.6
    container_name: fastmcp
    networks:
      cf_network:
        ipv4_address: 172.21.0.28
    volumes:
      - /opt/rclone/config:/config/rclone:ro
      - /home/opc/.oci:/home/opc/.oci:ro
    environment:
      - TZ=Asia/Hong_Kong
      - DOCKHAND_URL=${DOCKHAND_URL}
      - PG_HOST=${PG_HOST}
      - QDRANT_API_KEY=${QDRANT_API_KEY}
    restart: unless-stopped

部署前請確保 cf_network 已存在,且 IP 未被佔用。可透過 docker network create --subnet=172.21.0.0/16 cf_network 建立網絡。

配置與環境變數

FastMCP 依賴環境變數動態設定,主要變數如下:

變數 說明
TZ 時區,設定為 Asia/Hong_Kong
DOCKHAND_URL Dockhand 服務的 base URL,用於容器調度
PG_HOST PostgreSQL 主機位址,支援 IP 或 DNS 名稱
QDRANT_API_KEY Qdrant 向量資料庫的 API 金鑰

PG_HOST 可同時透過其他環境變數傳遞使用者名稱、密碼或連線字串,視乎映像檔設計而定。若需 TLS 連線,請在對應變數中標明 sslmode=require。所有敏感資料建議以 .env 檔案管理,並在 Compose 中引用。

維運與監控

日常維運重點包括:

  • 日誌檢視:使用 docker logs -f fastmcp 追蹤 MCP 請求與錯誤;建議搭配 Loki 或 ELK 集中收集。
  • 健康檢查:可定期呼叫 docker exec fastmcp wget -qO- http://localhost:8080/health 檢查網關狀態;若無健康端點,可監控 TCP 連接至 172.21.0.28 的 MCP 埠。
  • 效能監控:觀察 173 個 tools 的回應延遲與失敗率,可透過 Prometheus 抓取 /metrics(如有啟用)或使用腳本計時工具呼叫。
  • 備份:FastMCP 本身無需持久化資料,但需備份 .env 及 rclone 配置檔 /opt/rclone/config
  • 更新流程:升級映像檔前先確認新版本 tools 數量及向後相容性,建議在測試環境重放典型查詢後再切換。

常見問題

1. 無法連線至 172.21.0.28?
先檢查 Docker 網絡:docker network inspect cf_network,確認 fastmcp 容器已連線且 IP 正確。若 IP 衝突,可將容器停止後重新啟動。

2. 部分 tools 無法使用,錯誤顯示上游服務逾時?
這通常與 Dockhand、PG 或 Qdrant 相關。請確認對應 URL 是否可達,並檢查環境變數是否有誤。其中 Qdrant 的 API Key 若錯誤,向量檢索功能會完全失效。

3. Alist 或 Nextcloud 的檔案存取權限不足?
檢查 rclone 設定檔是否已正確掛載,且容器內用戶對 /config/rclone 有唯讀權限;另外,OCI 憑證目錄 /home/opc/.oci 的權限建議設定為 700

4. 更新後 tools 數量與預期不符?
官方文件列出的 173 個 tools 僅是預設組合,實際暴露數量會受環境變數影響。例如未設定 DOCKHAND_URL 時,相關容器工具將被隱藏。

相關鏈接