Back to blog
    MCP + 微調本地模型:將 Claude 連接到你的特定領域 AI
    mcpclaude-desktoplocal-modelollamafine-tuningsegment:vibecoder

    MCP + 微調本地模型:將 Claude 連接到你的特定領域 AI

    模型上下文協議(MCP)讓 Claude Desktop 可以與任何伺服器通訊——包括你自己的 Ollama 託管的微調模型。以下是將 Claude 請求路由到自訂領域模型的架構和設置。

    EErtas Team·

    模型上下文協議(MCP)是 Anthropic 的開放標準,用於將 AI 助手連接到外部工具、資料來源和服務。Claude Desktop 開箱即用地支援 MCP——因為 MCP 伺服器可以是任何 HTTP 服務,你可以用它將 Claude 連接到你自己的 Ollama 託管的微調模型。

    結果:Claude 處理對話介面和通用推理,而你的微調模型處理它被訓練的特定領域任務。零費用的領域推理,Claude 的介面。

    MCP 實際上是什麼

    MCP 是一個協議,而不是一個產品。它定義了 AI 助手(客戶端)從外部伺服器(MCP 伺服器)發現和呼叫能力的標準方式。MCP 伺服器公開:

    • 工具 — AI 可以呼叫的函數("search_database"、"classify_document"、"generate_listing")
    • 資源 — AI 可以讀取的資料來源("customer_records"、"product_catalog")
    • 提示 — AI 可以參考的可重用提示範本

    Claude Desktop 讀取一個 MCP 配置檔案並連接到其中列出的伺服器。當你要求 Claude 做某事時,它可以呼叫這些伺服器的工具作為其回應的一部分。

    關鍵洞察: MCP 伺服器只是一個基於 HTTP 或 stdio 的服務。它內部執行什麼沒有什麼特別的。你的微調模型,由 Ollama 服務,可以支持 Claude 呼叫的 MCP 工具。

    架構

    使用者詢問 Claude Desktop:「為這個房產產生一個房源清單...」
            ↓
    Claude Desktop 識別這映射到 real_estate_tools MCP 伺服器
            ↓
    Claude 呼叫 generate_listing 工具(透過 MCP)
            ↓
    MCP 伺服器接收請求
            ↓
    MCP 伺服器呼叫你的 Ollama API(微調房源模型)
            ↓
    Ollama 返回產生的房源清單
            ↓
    MCP 伺服器將結果返回給 Claude
            ↓
    Claude 格式化並向使用者呈現結果
    

    Claude 充當協調器和對話介面。你的微調模型進行專業化的領域推理。

    構建 MCP 伺服器

    MCP 伺服器可以用 @modelcontextprotocol/sdk npm 套件或 mcp Python 套件構建。

    包裝 Ollama 的最小 Node.js MCP 伺服器:

    // mcp-server.js
    import { Server } from '@modelcontextprotocol/sdk/server/index.js';
    import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
    import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
    
    const OLLAMA_BASE = 'http://localhost:11434';
    const MODEL_NAME = 'your-fine-tuned-model'; // 你在 Ollama 中給它的名稱
    
    const server = new Server(
      { name: 'domain-model-server', version: '1.0.0' },
      { capabilities: { tools: {} } }
    );
    
    // 宣告 Claude 可以呼叫的工具
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: 'generate_domain_content',
          description: '使用微調模型產生特定領域的內容。用於[你的用例描述]。',
          inputSchema: {
            type: 'object',
            properties: {
              prompt: {
                type: 'string',
                description: '對領域模型的具體請求'
              },
              context: {
                type: 'string',
                description: '額外的上下文(房產詳情、產品資訊等)'
              }
            },
            required: ['prompt']
          }
        }
      ]
    }));
    
    // 處理工具呼叫
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
      if (request.params.name === 'generate_domain_content') {
        const { prompt, context } = request.params.arguments;
    
        const fullPrompt = context
          ? `Context: ${context}\n\nRequest: ${prompt}`
          : prompt;
    
        const response = await fetch(`${OLLAMA_BASE}/api/chat`, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({
            model: MODEL_NAME,
            messages: [{ role: 'user', content: fullPrompt }],
            stream: false
          })
        });
    
        const data = await response.json();
        const content = data.message.content;
    
        return {
          content: [{ type: 'text', text: content }]
        };
      }
    
      throw new Error(`Unknown tool: ${request.params.name}`);
    });
    
    // 透過 stdio 啟動伺服器(Claude Desktop 以這種方式連接)
    const transport = new StdioServerTransport();
    await server.connect(transport);

    Claude Desktop 配置

    編輯 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

    {
      "mcpServers": {
        "domain-model": {
          "command": "node",
          "args": ["/path/to/your/mcp-server.js"],
          "env": {}
        }
      }
    }

    重啟 Claude Desktop。你的 MCP 伺服器的工具現在可供 Claude 使用。

    測試連接

    在 Claude Desktop 中,輸入應該觸發你的工具的提示:

    「為波特蘭一棟帶有更新廚房和原始硬木地板的 3 臥室工匠平房產生一個房源描述。」

    Claude 應該呼叫你的 generate_domain_content 工具,並從你的微調模型返回輸出。你可以觀看 MCP 伺服器的 stdout 以獲取調試輸出來確認連接。

    用例範例

    房地產仲介: MCP 伺服器包裝房源描述模型。代理詢問 Claude「為[房產]撰寫房源」,Claude 呼叫工具,微調模型產生品牌一致的描述。

    電子商務支援: MCP 伺服器包裝支援解決模型。支援代理詢問 Claude「我應該如何回應這張關於[問題]的票?」,Claude 呼叫工具,返回解決方案草稿。

    內容機構: MCP 伺服器包裝品牌語調模型。文案撰稿人詢問 Claude「為[品牌]撰寫一篇關於[主題]的 LinkedIn 貼文」,Claude 呼叫品牌特定工具。

    一般模式:Claude 用於介面和推理,你的微調模型用於專業化的領域任務。


    Ship AI that runs on your users' devices.

    Ertas early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    延伸閱讀

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading