Laravel MCP:当 AI 遇上熟悉的优雅 ​

还记得第一次听说 Model Context Protocol (MCP) 的时候吗?我的第一反应是:"又一个协议?"但深入了解后发现,这可能是 AI 集成领域最有意思的发展之一。

简单来说,MCP 就是让 AI 应用能够"伸手"触碰外部世界的标准方式——调用工具、读取资源、使用预设提示。就像给 AI 装上了手脚,让它不再局限于纯文本对话。

为什么是 Laravel MCP? ​

当我看到 Laravel 团队发布 Laravel MCP 时,说实话有点惊喜。在一堆复杂的 AI 工具中,终于有一个让 Laravel 开发者感到"回家"的方案了。

最打动我的几点:

熟悉感 - 还是那些熟悉的 php artisan make:* 命令,还是那套依赖注入,还是中间件和认证。不需要学习全新的概念栈。

完整性 - 不是简单的 SDK 封装,而是完整的 Laravel 生态集成。从开发到测试到部署,每一步都有对应的解决方案。

实用主义 - Laravel 一贯的风格:优雅但不花哨,强大但不复杂。你能在 10 分钟内搭建一个可用的 MCP 服务器。

上手体验:确实够简单 ​

安装过程没什么好说的,标准的 Laravel 包流程:

bash
composer require laravel/mcp
php artisan vendor:publish --tag=ai-routes

有意思的是 routes/ai.php 这个设计。Laravel 把 AI 相关的路由单独抽出来,这个细节很贴心。毕竟谁愿意把 AI 接口和普通的 Web 路由混在一起?

创建服务器也是熟悉的配方:

bash
php artisan make:mcp-server WeatherServer

生成的代码结构很清晰 - $tools(工具)、$resources(资源)、$prompts(提示)三大块,对应 MCP 协议的核心概念。

最有趣的是注册方式。你可以选择 Web 服务器(HTTP 访问)或本地服务器(命令行访问):

php
// 给远程 AI 用的
Mcp::web('/mcp/weather', WeatherServer::class);

// 给本地 AI 助手用的
Mcp::local('weather', WeatherServer::class);

这个设计考虑很周到。Web 服务器适合云端 AI 服务,本地服务器适合桌面 AI 工具。

三个核心概念,解决实际问题 ​

Laravel MCP 围绕三个核心概念设计:工具、资源、提示。听起来抽象,但对应的其实是我们开发中的实际需求。

工具(Tools):让 AI 真正"做事" ​

工具是最有趣的部分。本质上就是给 AI 提供"手脚",让它能执行具体操作。

想象一下这些场景:

  • AI 需要查询数据库中的用户信息
  • AI 需要发送邮件通知
  • AI 需要调用外部 API 获取实时数据
  • AI 需要在系统中创建新记录

创建工具很简单:

bash
php artisan make:mcp-tool GetUserTool

然后在 handle 方法中实现具体逻辑。最舒服的是,依然可以使用 Laravel 的验证、依赖注入、缓存这些老朋友:

php
public function handle(Request $request, UserRepository $users): Response
{
    $validated = $request->validate(['user_id' => 'required|integer']);

    $user = $users->find($validated['user_id']);

    return Response::text("用户 {$user->name} 的邮箱是 {$user->email}");
}

实际应用思考:这让我想起了之前做的一个客服系统。如果有了这套工具,AI 客服就能直接查询订单状态、用户积分、退款记录。不再需要复杂的 webhook 或者自定义 API 集成。

资源(Resources):AI 的"知识库" ​

资源解决的是 AI 需要了解背景信息的问题。比如:

  • 公司的产品文档
  • API 使用指南
  • 业务规则说明
  • 历史数据统计

创建资源同样简单:

bash
php artisan make:mcp-resource ProductGuideResource

资源可以是静态文档,也可以动态生成。比如用户专属的数据统计:

php
public function handle(Request $request): Response
{
    $user = $request->user();

    $stats = [
        'total_orders' => $user->orders()->count(),
        'favorite_category' => $user->orders()->mostPopularCategory(),
        'last_purchase' => $user->orders()->latest()->first()?->created_at
    ];

    return Response::text(json_encode($stats, JSON_PRETTY_PRINT));
}

实际应用思考:想象一下电商客服场景,AI 能直接访问用户的购买历史、偏好分析、会员等级信息。不需要每次都在对话中重复提供这些背景。

提示(Prompts):标准化的对话模板 ​

提示是预设的对话模板,解决重复性交互的问题。

比如产品推荐:

bash
php artisan make:mcp-prompt ProductRecommendationPrompt

一个好的提示模板能让 AI 的回答更加一致和专业:

php
public function handle(Request $request): array
{
    $category = $request->get('category');
    $budget = $request->get('budget');

    $systemPrompt = "你是一个专业的产品顾问,根据用户需求推荐最合适的产品。";
    $userPrompt = "请为预算 {$budget} 元的用户推荐 {$category} 类别的产品";

    return [
        Response::text($systemPrompt)->asAssistant(),
        Response::text($userPrompt),
    ];
}

核心价值:这三个概念组合起来,就是一个完整的 AI 应用架构。工具处理行为,资源提供知识,提示确保一致性。

生产级别的考虑 ​

认证:OAuth 还是 Sanctum? ​

Laravel MCP 同时支持 OAuth 2.1 和 Sanctum。选择哪个取决于你的使用场景:

OAuth 2.1 - 如果你的 AI 应用需要第三方集成,或者需要标准的企业级认证流程,选择 OAuth。Laravel MCP 提供了完整的 OAuth 支持,包括认证视图。

Sanctum - 如果是内部系统,或者简单的 API token 认证就够了,Sanctum 更轻量:

php
Mcp::web('/mcp/chat', ChatServer::class)
    ->middleware('auth:sanctum');

工具级权限控制也很重要。你可以在每个工具中检查用户权限:

php
if (!$request->user()->can('manage-orders')) {
    return Response::error('权限不足');
}

测试:内置检查器很好用 ​

Laravel MCP 提供了一个交互式检查器,这是我最喜欢的功能之一:

bash
php artisan mcp:inspector /mcp/chat

它会启动一个交互式界面,让你直接测试工具、查看资源、调试提示。比写单元测试快多了,特别适合开发阶段快速验证功能。

当然,单元测试也是必需的。好消息是测试 API 很 Laravel:

php
$response = ChatServer::tool(SendMessageTool::class, [
    'message' => 'Hello AI!'
]);

$response->assertOk()->assertSee('Message sent');

值得一试的理由 ​

从体验来看,Laravel MCP 解决了几个实际痛点:

降低集成门槛 - 之前要给应用加 AI 功能,要么用复杂的 webhook,要么自己实现 API。现在有了标准化的方式,而且是熟悉的 Laravel 语法。

完整的生态 - 不是简单的 SDK,而是从开发到测试到部署的完整方案。这很重要,因为 AI 集成通常不是一个功能,而是整个系统架构的改变。

实用性优先 - Laravel 团队很聪明,没有追求复杂的功能,而是专注于解决实际问题。三个核心概念简单易懂,上手门槛很低。

什么时候该考虑它? ​

如果你是 Laravel 开发者,而且在考虑 AI 集成,Laravel MCP 应该是首选。学习成本最低,生态最完整。

如果你在构建客服系统、内容管理、自动化工具,这套工具能节省很多时间。特别是需要 AI 访问现有业务数据的场景。

如果你的团队已经熟悉 Laravel,用这个包比学习全新的 AI 框架更明智。

小结 ​

AI 集成不再是遥不可及的技术。Laravel MCP 把复杂的协议包装成熟悉的 Laravel 语法,让普通的 Web 开发者也能快速构建 AI 应用。

这可能是 Laravel 生态系统拥抱 AI 时代的一个重要信号。值得关注,也值得尝试。


参考链接:

本作品采用《CC 协议》,转载必须注明作者和本文链接