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 时代的一个重要信号。值得关注,也值得尝试。


参考链接:

CatchAdmin
后端开发工程师,前端入门选手,略知相关服务器知识,偏爱❤️ Laravel & Vue
本作品采用《CC 协议》,转载必须注明作者和本文链接