mcpField
L
Laravel MCP Client

Laravel MCP Client

github.com/scriptoshi框架与 SDK3294 周前更新

关于 Laravel MCP Client

Laravel MCP 客户端是一个 Laravel 包,将 Claude 大模型与自定义工具服务器集成,通过 MCP 协议扩展 Claude 的能力。面向使用 Laravel 框架的开发者,提供工具服务器管理、队列支持和对话持久化。

主要功能

  1. 01Claude API 集成与工具服务器管理
  2. 02长运行任务队列支持
  3. 03事件驱动架构
  4. 04对话历史数据库持久化
  5. 05自动生成聊天标题
  6. 06全面的日志系统

适用场景

  1. 01扩展 Claude 的能力以执行自定义业务逻辑
  2. 02在 Laravel 应用中构建 AI 助手
  3. 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

配置

  1. 发布配置文件:
php artisan vendor:publish --provider="Scriptoshi\McpClient\McpClientServiceProvider"
  1. 将你的 Anthropic API 密钥添加到 .env 文件:
ANTHROPIC_API_KEY=your-api-key-here
ANTHROPIC_MODEL=claude-3-sonnet-20240229
ANTHROPIC_MAX_TOKENS=1024
  1. 运行迁移:
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');

事件

本软件包分发多个事件供你监听:

  • MessageCreatedEvent
  • MessageProcessedEvent
  • MessageErrorEvent

测试

composer test

安全

如果你发现任何与安全相关的问题,请通过电子邮件发送至 [email protected],而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关详细信息,请参阅许可证文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。