还记得第一次听说 Model Context Protocol (MCP) 的时候吗?我的第一反应是:"又一个协议?"但深入了解后发现,这可能是 AI 集成领域最有意思的发展之一。
简单来说,MCP 就是让 AI 应用能够"伸手"触碰外部世界的标准方式——调用工具、读取资源、使用预设提示。就像给 AI 装上了手脚,让它不再局限于纯文本对话。
当我看到 Laravel 团队发布 Laravel MCP 时,说实话有点惊喜。在一堆复杂的 AI 工具中,终于有一个让 Laravel 开发者感到"回家"的方案了。
最打动我的几点:
熟悉感 - 还是那些熟悉的 php artisan make:*
命令,还是那套依赖注入,还是中间件和认证。不需要学习全新的概念栈。
完整性 - 不是简单的 SDK 封装,而是完整的 Laravel 生态集成。从开发到测试到部署,每一步都有对应的解决方案。
实用主义 - Laravel 一贯的风格:优雅但不花哨,强大但不复杂。你能在 10 分钟内搭建一个可用的 MCP 服务器。
安装过程没什么好说的,标准的 Laravel 包流程:
composer require laravel/mcp
php artisan vendor:publish --tag=ai-routes
有意思的是 routes/ai.php
这个设计。Laravel 把 AI 相关的路由单独抽出来,这个细节很贴心。毕竟谁愿意把 AI 接口和普通的 Web 路由混在一起?
创建服务器也是熟悉的配方:
php artisan make:mcp-server WeatherServer
生成的代码结构很清晰 - $tools
(工具)、$resources
(资源)、$prompts
(提示)三大块,对应 MCP 协议的核心概念。
最有趣的是注册方式。你可以选择 Web 服务器(HTTP 访问)或本地服务器(命令行访问):
// 给远程 AI 用的
Mcp::web('/mcp/weather', WeatherServer::class);
// 给本地 AI 助手用的
Mcp::local('weather', WeatherServer::class);
这个设计考虑很周到。Web 服务器适合云端 AI 服务,本地服务器适合桌面 AI 工具。
Laravel MCP 围绕三个核心概念设计:工具、资源、提示。听起来抽象,但对应的其实是我们开发中的实际需求。
工具是最有趣的部分。本质上就是给 AI 提供"手脚",让它能执行具体操作。
想象一下这些场景:
创建工具很简单:
php artisan make:mcp-tool GetUserTool
然后在 handle
方法中实现具体逻辑。最舒服的是,依然可以使用 Laravel 的验证、依赖注入、缓存这些老朋友:
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 集成。
资源解决的是 AI 需要了解背景信息的问题。比如:
创建资源同样简单:
php artisan make:mcp-resource ProductGuideResource
资源可以是静态文档,也可以动态生成。比如用户专属的数据统计:
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 能直接访问用户的购买历史、偏好分析、会员等级信息。不需要每次都在对话中重复提供这些背景。
提示是预设的对话模板,解决重复性交互的问题。
比如产品推荐:
php artisan make:mcp-prompt ProductRecommendationPrompt
一个好的提示模板能让 AI 的回答更加一致和专业:
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 应用架构。工具处理行为,资源提供知识,提示确保一致性。
Laravel MCP 同时支持 OAuth 2.1 和 Sanctum。选择哪个取决于你的使用场景:
OAuth 2.1 - 如果你的 AI 应用需要第三方集成,或者需要标准的企业级认证流程,选择 OAuth。Laravel MCP 提供了完整的 OAuth 支持,包括认证视图。
Sanctum - 如果是内部系统,或者简单的 API token 认证就够了,Sanctum 更轻量:
Mcp::web('/mcp/chat', ChatServer::class)
->middleware('auth:sanctum');
工具级权限控制也很重要。你可以在每个工具中检查用户权限:
if (!$request->user()->can('manage-orders')) {
return Response::error('权限不足');
}
Laravel MCP 提供了一个交互式检查器,这是我最喜欢的功能之一:
php artisan mcp:inspector /mcp/chat
它会启动一个交互式界面,让你直接测试工具、查看资源、调试提示。比写单元测试快多了,特别适合开发阶段快速验证功能。
当然,单元测试也是必需的。好消息是测试 API 很 Laravel:
$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 时代的一个重要信号。值得关注,也值得尝试。
参考链接: