AI 聽不懂你的資料庫?Laravel MCP 實戰:2026 年後端工程師必備的 AI 通訊標準

2026/03/4 | AI 人工智慧新知, API 串接與自動化, Laravel技術分享

用 Laravel MCP 讓 AI 秒懂你的系統

還在為不同 AI 模型手寫落落長的 API 文件和 Prompt 嗎?那都是過去式了!Model Context Protocol (MCP) 就像 AI 時代的 USB,讓任何模型都能「隨插即用」你的資料與工具。這篇文章將帶你用最新的 Laravel 框架,在 20 分鐘內打造一個標準化的 AI 通訊伺服器,拋棄繁瑣的 JSON Schema,學習如何定義 Resource 與 Tool,從「寫 Prompt 的黑手」蛻變為「定義知識邊界的架構師」。立即跟上 2026 年的開發潮流,升級你的後端技能!

需要專業協助?

聯絡浪花專案團隊 →

Laravel MCP 基礎初探:快速建立你的第一個標準化 AI 專屬通訊伺服器

嗨大家,我是 Eric。如果你跟我一樣是從 2023 年那波 AI 浪潮活下來的後端工程師,你一定記得那段「黑暗時期」:為了讓 ChatGPT 或 Claude 讀懂我們公司的資料庫,我們得手寫一堆奇怪的 JSON Schema,還要針對不同的 LLM 模型寫不同的 Prompt 來解釋 API 格式。每次資料庫欄位一改,整個 AI Agent 就直接罷工給你看。

好在,現在是 2026 年了。Anthropic 推出的 Model Context Protocol (MCP) 已經成為了業界標準。簡單來說,MCP 就是 AI 時代的 USB 插孔——只要你的後端支援 MCP,任何 AI 模型(無論是 Claude 3.5 Sonnet、GPT-6 還是開源的 Llama 4)都能「隨插即用」你的資料和工具,不用再寫那些落落長的 API 文件了。

今天這篇文章,我們要來做 Laravel MCP 基礎初探:快速建立你的第一個標準化 AI 專屬通訊伺服器。我們會用最新的 Laravel 12(假設版本)搭配官方社群的 MCP 套件,在 20 分鐘內把你的 Laravel 專案變成一個 AI 隨時可以存取的「大腦皮層」。

什麼是 MCP?為什麼 Laravel 開發者需要它?

在開始寫 Code 之前,還是要嘮叨一下觀念。MCP (Model Context Protocol) 解決了三個核心問題:

  • 標準化接口:以前你要定義 Function Calling,現在你只要定義 Resource (資料) 和 Tool (工具)。
  • 上下文管理:AI 不再是瞎子摸象,MCP 允許伺服器主動提供當前的環境 Context。
  • 通用性:寫一次 MCP Server,可以給 Cursor IDE 用,也可以給公司的 AI 客服機器人,甚至是你本地的 AI 助理用。

對於 Laravel 開發者來說,這意味著我們不用再為了 AI 特地寫一套 REST API,而是直接利用我們最擅長的 Eloquent ORM 來封裝數據。

環境準備與安裝

首先,確保你的開發環境已經升級到 2026 年的標配:

  • PHP 8.5+
  • Laravel 11.x 或 12.x
  • Composer

我們將使用社群維護的 laravel-mcp-server 套件(這是虛構的 2026 年主流套件,概念上類似於現有的 MCP SDK)。

composer require native-php/laravel-mcp

安裝完成後,發布設定檔:

php artisan vendor:publish --tag=mcp-config

第一步:定義你的 AI 資源 (Resource)

Resource 是 MCP 中用來讓 AI 「讀取」資料的概念。想像一下,你想讓 AI 能查閱公司的產品列表。在 Laravel 中,這通常對應到一個 Eloquent Model。

我們建立一個 ProductResource。Eric 的小撇步:雖然可以直接回傳整個 Model,但為了節省 Token 和保護隱私,建議用 DTO 或 Resource 類別過濾欄位。


namespace App\Mcp\Resources;

use App\Models\Product;
use Native\Mcp\Contracts\Resource;
use Native\Mcp\Attributes\ExposeResource;

#[ExposeResource(name: 'products', description: '公司目前的產品目錄,包含庫存與價格資訊')]
class ProductResource implements Resource
{
    public function fetch(array $params = []): array
    {
        // Eric 碎碎念:這裡一定要做分頁或限制數量,不要讓 AI 一口氣拉走十萬筆資料
        return Product::query()
            ->select(['id', 'name', 'price', 'stock_quantity'])
            ->where('is_active', true)
            ->limit(20)
            ->get()
            ->toArray();
    }
}

看到那個 #[ExposeResource] 屬性了嗎?這就是 MCP 的魔法。你不需要寫額外的 JSON 文件,這段 PHP 代碼本身就是 AI 的說明書。

第二步:打造 AI 工具 (Tool)

Resource 是唯讀的,但如果我們要讓 AI 幫我們做事(例如:查詢訂單狀態、甚至建立訂單),就需要使用 Tool

我們來寫一個簡單的工具:CheckOrderStatus


namespace App\Mcp\Tools;

use App\Models\Order;
use Native\Mcp\Contracts\Tool;
use Native\Mcp\Attributes\ExposeTool;

#[ExposeTool(
    name: 'check_order_status',
    description: '根據訂單編號查詢目前的物流狀態與付款情形'
)]
class CheckOrderStatus implements Tool
{
    public function handle(array $arguments): array
    {
        $orderId = $arguments['order_id'] ?? null;

        if (!$orderId) {
            return ['error' => '請提供訂單編號'];
        }

        $order = Order::find($orderId);

        if (!$order) {
            return ['error' => '找不到該訂單'];
        }

        return [
            'status' => $order->status,
            'payment' => $order->payment_status,
            'shipping_date' => $order->shipped_at?->format('Y-m-d') ?? '尚未出貨'
        ];
    }
}

在 2026 年的開發習慣中,我們非常依賴 PHP 的型別系統來自動生成 Schema。MCP Server 會自動讀取 handle 方法的參數,告訴 AI 說:「嘿,如果要用這個工具,你必須給我一個 order_id。」

第三步:註冊與安全性配置

這一步最關鍵。這幾年發生太多「AI 幻覺」導致資料庫被誤刪的慘劇了。在 config/mcp.php 中,我們需要註冊這些資源,並設定權限。


// config/mcp.php

return [
    'server_name' => 'RoamerTech_Core_API',
    
    'resources' => [
        App\Mcp\Resources\ProductResource::class,
    ],

    'tools' => [
        App\Mcp\Tools\CheckOrderStatus::class,
    ],

    // 資安重點:一定要開啟請求驗證
    'security' => [
        'middleware' => ['auth:sanctum', 'throttle:60,1'], // 限制每分鐘 60 次請求
        'log_activity' => true, // 記錄 AI 的所有操作
    ],
];

別忘了設定 Laravel 的 Route,通常我們會開一個 SSE (Server-Sent Events) 的端點讓 MCP 客戶端(例如 Claude Desktop)連線。


// routes/api.php

Route::post('/mcp/v1/message', [McpController::class, 'handle'])
    ->middleware('auth:sanctum');

實際測試:讓 AI 與你的 Laravel 對話

現在,啟動你的 Laravel 伺服器:

php artisan serve

接著,打開你的 MCP Client(例如 Claude Desktop App 的設定檔),加入你的 Laravel 伺服器資訊。當你問 Claude:「幫我查一下訂單 #2026001 的狀況,順便看看現在最貴的產品是什麼?」

背後發生的事情是:

  1. AI 分析意圖,發現需要查訂單和看產品。
  2. AI 透過 MCP 協議,呼叫你的 Laravel check_order_status 工具。
  3. Laravel 回傳 JSON 數據。
  4. AI 接著讀取 products 資源。
  5. AI 綜合這些「生數據」,用人類語言回答你:「訂單 #2026001 已經在昨天出貨囉!另外,目前最貴的產品是『企業級 AI 運算模組』,售價 $50,000。」

Eric 的實戰心得

建立 Laravel MCP 基礎初探:快速建立你的第一個標準化 AI 專屬通訊伺服器 其實不難,難的是「界線」的拿捏。不要把所有的 Model 都丟給 MCP,那樣非常危險。一定要奉行「最小權限原則」,只開放 AI 任務真正需要的數據。

MCP 的出現,讓我們後端工程師從「寫 Prompt 的黑手」轉變為「定義知識邊界的架構師」。這才是 2026 年開發者該有的樣子。

延伸閱讀

如果你對 MCP 的進階應用和資安防護有興趣,強烈建議閱讀以下幾篇我之前寫的技術深談,這能幫你避開很多坑:

你的企業系統還在用傳統 API 跟 AI 硬幹嗎?或是擔心 AI Agent 直接存取資料庫會有資安風險?

浪花科技專精於 2026 新世代 AI 架構整合,我們能協助你建立安全、高效的 MCP 通訊層。

立即聯繫我們,升級你的 AI 基礎建設

常見問題 (FAQ)

Q1: MCP 跟傳統的 REST API 最大的差別是什麼?

REST API 是為了讓「前端介面」或「其他程式」呼叫而設計的,格式固定且死板。MCP 則是為了讓「LLM(大型語言模型)」理解而設計的,它更強調上下文(Context)與工具(Tool)的自我描述能力,讓 AI 能動態決定如何使用這些資料,而不是寫死在程式碼裡。

Q2: 舊的 Laravel 專案(例如 Laravel 10)可以使用 MCP 嗎?

原則上可以,但建議升級到較新的版本(Laravel 11+)。因為 MCP 的實作大量依賴 PHP 8.2+ 的 Attribute(屬性)功能來簡化定義,舊版本的 PHP 在處理這些語法糖時會比較麻煩,且安全性更新也較為落後。

Q3: 把資料庫透過 MCP 開放給 AI,會不會有資料外洩風險?

這取決於你如何設計 Resource 和 Tool。這就是為什麼我在文中強調不要直接回傳整個 Model,而是使用 Resource 類別來過濾欄位。此外,絕對不要在 MCP 中開放 `delete` 或 `drop` 這類危險操作的 Tool,並務必搭配 Laravel Sanctum 或 Passport 進行身份驗證。