关于 Laravel MCP Client
Laravel MCP 客户端是一个 Laravel 包,将 Claude 大模型与自定义工具服务器集成,通过 MCP 协议扩展 Claude 的能力。面向使用 Laravel 框架的开发者,提供工具服务器管理、队列支持和对话持久化。
主要功能
- 01Claude API 集成与工具服务器管理
- 02长运行任务队列支持
- 03事件驱动架构
- 04对话历史数据库持久化
- 05自动生成聊天标题
- 06全面的日志系统
适用场景
- 01扩展 Claude 的能力以执行自定义业务逻辑
- 02在 Laravel 应用中构建 AI 助手
- 03管理多个工具服务器的协调调用
MCP 相关
通过注册自定义 MCP 服务,连接工具服务器至 Claude,支持 McpServerInterface 实现的服务器。
详细介绍
Laravel MCP 客户端
声明:本软件包由 Claude AI 完全设计和编写。我可能在某些地方进行了指导和调整,但代码是由 Claude AI 编写的。
Laravel MCP(消息上下文协议)客户端是一个软件包,将 Anthropic 的 Claude AI 大模型与自定义工具服务器集成,使你能够用自己的工具和服务扩展 Claude 的功能。
功能特性
- 与 Anthropic 的 Claude API 无缝集成
- 工具服务器管理和执行
- 内置的长时间运行工具队列支持
- 事件驱动架构
- 自动聊天标题生成
- 完整的聊天历史管理
- 对话和工具执行的数据库持久化
- 软删除支持
- 综合日志系统
需求
- PHP 8.3 或更高版本
- Laravel 11.0 或更高版本
- Anthropic API 密钥
安装
你可以通过 composer 安装本软件包:
composer require scriptoshi/laravel-mcp-client
配置
- 发布配置文件:
php artisan vendor:publish --provider="Scriptoshi\McpClient\McpClientServiceProvider"
- 将你的 Anthropic API 密钥添加到 .env 文件:
ANTHROPIC_API_KEY=your-api-key-here
ANTHROPIC_MODEL=claude-3-sonnet-20240229
ANTHROPIC_MAX_TOKENS=1024
- 运行迁移:
php artisan migrate
使用
基本用法
use Scriptoshi\McpClient\Facades\McpClient;
// Start a new chat
McpClient::processRequest("What's the weather like?", $chatUuid);
实现自定义工具服务器
创建一个实现 McpServerInterface 的新服务器类:
use Scriptoshi\McpClient\Contracts\McpServerInterface;
class WeatherServer implements McpServerInterface
{
public function initialize(): array
{
return [
'serverInfo' => [
'name' => 'WeatherServer',
'version' => '1.0.0'
],
'capabilities' => [
'tools' => true
]
];
}
public function listTools(): array
{
return [
'tools' => [
[
'name' => 'get_weather',
'description' => 'Get current weather for a location',
'inputSchema' => [
'type' => 'object',
'properties' => [
'location' => [
'type' => 'string',
'description' => 'City name or coordinates'
]
],
'required' => ['location']
]
]
]
];
}
public function toolShouldQueue(string $toolname): bool
{
return false;
}
public function executeTool(string $name, array $arguments, LoggerInterface $logger): array
{
// Implement your tool logic here
}
}
注册工具服务器
你可以在 AppServiceProvider 中注册工具服务器或创建专用的服务提供者:
use Scriptoshi\McpClient\Facades\McpClient;
public function boot()
{
McpClient::registerServer('weather', new WeatherServer());
}
使用队列
对于长时间运行的工具,实现队列功能:
public function toolShouldQueue(string $toolname): bool
{
return match($toolname) {
'long_running_process' => true,
default => false
};
}
使用聊天历史
use Scriptoshi\McpClient\Models\Chat;
// Find a chat by UUID
$chat = Chat::findByUuid($uuid);
// Get chat messages
$messages = $chat->messages;
// Get message responses
$responses = $message->responses;
// Get tool executions
$runners = $response->runners;
错误处理
本软件包包含综合的错误处理和日志记录:
$runner->error('Something went wrong', [
'context' => 'Additional error details'
]);
// Different log levels
$runner->info('Processing started');
$runner->warning('Resource usage high');
$runner->success('Operation completed');
事件
本软件包分发多个事件供你监听:
MessageCreatedEventMessageProcessedEventMessageErrorEvent
测试
composer test
安全
如果你发现任何与安全相关的问题,请通过电子邮件发送至 [email protected],而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关详细信息,请参阅许可证文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。