2025年6月12日 星期四

MCP_n8n_Docker Build

MCP 與 AI Agent 發展:互動指南

MCP 與 AI Agent 發展:互動指南

歡迎來到這份互動指南,您可以在此瀏覽並複製關於模型上下文協定(MCP)與AI代理發展的關鍵資訊,包括相關技術、工具套件以及Docker快速部署的詳細步驟。

AI代理開發的領先工具套件與框架

AI代理框架領域正在經歷多元化和專業化。以下表格提供了目前領先的AI代理開發框架的核心功能、優勢和理想用例的比較分析。

特性 / 框架 LangChain LlamaIndex CrewAI AutoGen (Microsoft) LangGraph MetaGPT n8n (作為AI工作流程平台)
主要焦點 工具鏈與管道 數據管理與RAG 任務編排 多代理對話與工作流程 圖形化多代理工作流程 模擬軟體開發團隊 工作流程自動化與AI整合
核心架構方法 模組化組件 索引機制與查詢介面 基於角色代理 對話式代理互動 圖形化架構 標準操作程序 (SOP) 視覺化工作流程構建器
記憶體管理 短期/長期記憶,RAG,實體記憶體 數據索引與上下文層 短期/長期記憶 (RAG, SQLite3),用戶記憶體 消息列表,外部整合 短期/長期記憶,實體記憶體 任務上下文,知識庫 對話記憶體,RAG,向量資料庫整合
多代理支持 ✅ (通過鏈接) ✅ (通過工作流程) ✅ (核心功能:Crew) ✅ (核心功能:GroupChat) ✅ (核心功能) ✅ (核心功能) ❌ (但可編排多個AI節點)
工具整合 廣泛整合 數據連接器 靈活工具與API 內置工具代理支持 支持工具 部分內置支持 350+預建整合,自定義節點
代碼執行/生成 ✅ (通過工具) ✅ (代碼執行代理) ✅ (通過工具) ✅ (代碼生成) ✅ (JavaScript/Python 自定義代碼)
人類參與循環 (Human-in-the-Loop) ✅ (非原生) ✅ (CriticAgent, 反饋代理) ✅ (核心功能) ✅ (通過工作流程審批)
易用性/複雜度 中等 (需編碼) 中等 (需編碼) 高 (需Python知識) 中等 (有UI) 中等 (需編碼) 高 (需理解代理設計) 低-中 (視覺化構建器)
可擴展性 中等 中等 中高 (開發者導向) 低-中 高 (自託管選項)
開源/商業 開源 開源 開源 開源 開源 開源 開源 (有雲服務)
理想用例 聊天機器人,數據整合,RAG 問答,數據提取,自主代理 協作研究,自動化客戶支援 代碼生成,複雜問題解決 可靠/可控代理,多代理系統 軟體開發項目,系統設計模擬 業務流程自動化,AI聊天機器人,RAG,API整合

使用Docker快速部署:實用指南

Docker為AI和LLM應用程式的開發和部署帶來了顯著優勢。以下是使用Docker部署n8n的實用指南,包括基本設置、數據持久化和多組件系統編排。

基本Docker安裝與n8n容器設置

要快速啟動n8n,可以使用以下Docker命令:

docker run -it --rm --name n8n -p 5678:5678 n8nio/n8n

此命令將n8n容器的5678端口映射到主機的5678端口,使n8n可通過http://localhost:5678訪問 [1, 2]。

n8n官方提供了一個「自託管AI啟動套件」(Self-hosted AI Starter Kit),這是一個預配置的Docker Compose模板,用於快速建立本地AI和低代碼開發環境 [3]。

克隆儲存庫:

git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git
cd self-hosted-ai-starter-kit

運行Docker Compose(CPU模式,適用於大多數用戶):

docker compose --profile cpu up

對於Nvidia GPU用戶:

docker compose --profile gpu-nvidia up

對於AMD GPU (Linux) 用戶:

docker compose --profile gpu-amd up

對於Mac / Apple Silicon 用戶:

docker compose up

如果Ollama在Mac本地運行,可能需要調整OLLAMA_HOST環境變數為host.docker.internal:11434 [3]。

確保數據持久化與安全配置

為了確保n8n工作流程和憑證數據的持久化,並增強安全性,建議進行以下配置:

數據持久化:

docker run -d --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

此命令將主機上的~/.n8n目錄掛載到容器內的/home/node/.n8n,n8n會將其數據儲存在此路徑下 [2, 4]。

環境變數(.env文件範例):

N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your_secure_password
WEBHOOK_URL=http://your_n8n_domain.com:5678/

然後使用--env-file參數運行Docker容器:

docker run -d --name n8n \
  --env-file./.env \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

使用Docker部署MCP伺服器(例如,基於n8n的MCP伺服器)

n8n本身可以作為一個功能齊全的MCP伺服器。以下表格總結了用於配置n8n作為MCP伺服器的關鍵Docker命令和環境變數:

組件 Docker 命令/Compose 片段 關鍵環境變數 目的
n8n (作為MCP伺服器) docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n --env-file./.env n8nio/n8n WEBHOOK_URL 設定n8n實例的外部可訪問URL,對於MCP伺服器觸發器節點生成正確的端點至關重要。
(或相應的 docker-compose.yml 片段) N8N_BASIC_AUTH_ACTIVE 啟用n8n的基本認證,增強安全性。
N8N_BASIC_AUTH_USER 設定基本認證的用戶名。
N8N_BASIC_AUTH_PASSWORD 設定基本認證的密碼。
備註 確保使用強密碼。對於生產環境,建議在n8n容器前配置Nginx等反向代理,以提供SSL加密和更高級的安全性 [5, 6]。

使用Docker Compose編排多組件AI系統

Docker Compose極大地簡化了多容器AI設置的管理,實現了AI代理、資料庫和其他服務之間的無縫通訊 [7]。以下是一個概念性的docker-compose.yml文件範例:

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    ports:
      - "5678:5678"
    volumes:
      - ~/.n8n:/home/node/.n8n # 持久化n8n數據
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_secure_password # 請務必更改為強密碼
      - WEBHOOK_URL=http://localhost:5678/ # 或您的外部可訪問URL
      - OLLAMA_HOST=http://ollama:11434 # 連接到同一個Compose網絡中的Ollama服務
    networks:
      - ai_network

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama # 持久化Ollama模型數據
    # 如果有GPU,可以添加以下配置
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu]
    networks:
      - ai_network

  vector_database: # 例如,使用Qdrant或Weaviate作為向量資料庫
    image: qdrant/qdrant:latest
    container_name: qdrant
    ports:
      - "6333:6333" # Qdrant API端口
      - "6334:6334" # Qdrant gRPC端口
    volumes:
      - qdrant_data:/qdrant/storage
    networks:
      - ai_network

  # custom_mcp_server: # 如果您有自定義的MCP伺服器服務
  #   build:./custom-mcp-server # 指向您的Dockerfile目錄
  #   container_name: custom_mcp_server
  #   ports:
  #     - "8080:8080"
  #   networks:
  #     - ai_network

volumes:
  ollama_data:
  qdrant_data:

networks:
  ai_network:
    driver: bridge

沒有留言:

張貼留言