laravel-mcp-client

MCP.Pizza Chef: scriptoshi

Laravel MCP Client is a powerful Laravel package that connects Anthropic's Claude AI model with custom MCP tool servers, allowing developers to extend AI capabilities with their own services. It supports tool server management, execution, and queuing for long-running tasks, all within an event-driven architecture. The client offers automatic chat title generation, full chat history management, and database persistence including soft deletes. Comprehensive logging ensures traceability of conversations and tool executions. Designed for Laravel 11+ and PHP 8.3+, it requires an Anthropic API key and simplifies building AI-enhanced workflows in Laravel applications.

Use This MCP client To

Integrate Claude AI with Laravel applications Manage and execute custom AI tool servers Queue and handle long-running AI tasks Persist chat histories and tool execution data Generate automatic chat titles for conversations Log AI interactions and tool usage comprehensively Build event-driven AI workflows in Laravel

README

Laravel MCP Client

Disclosure: This package was designed and written Entirely by claude ai. I may have guided and nuggged it in a few places, but the code was written by claude ai.

Laravel MCP (Message Context Protocol) Client is a package that integrates Anthropic's Claude AI model with custom tool servers, allowing you to extend Claude's capabilities with your own tools and services.

Features

  • Seamless integration with Anthropic's Claude API
  • Tool server management and execution
  • Built-in queuing support for long-running tools
  • Event-driven architecture
  • Automatic chat title generation
  • Complete chat history management
  • Database persistence for conversations and tool executions
  • Soft deletes support
  • Comprehensive logging system

Requirements

  • PHP 8.3 or higher
  • Laravel 11.0 or higher
  • Anthropic API key

Installation

You can install the package via composer:

composer require scriptoshi/laravel-mcp-client

Configuration

  1. Publish the configuration file:
php artisan vendor:publish --provider="Scriptoshi\McpClient\McpClientServiceProvider"
  1. Add your Anthropic API key to your .env file:
ANTHROPIC_API_KEY=your-api-key-here
ANTHROPIC_MODEL=claude-3-sonnet-20240229
ANTHROPIC_MAX_TOKENS=1024
  1. Run the migrations:
php artisan migrate

Usage

Basic Usage

use Scriptoshi\McpClient\Facades\McpClient;

// Start a new chat
McpClient::processRequest("What's the weather like?", $chatUuid);

Implementing a Custom Tool Server

Create a new server class that implements 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
    }
}

Registering a Tool Server

You can register tool servers in your AppServiceProvider or create a dedicated service provider:

use Scriptoshi\McpClient\Facades\McpClient;

public function boot()
{
    McpClient::registerServer('weather', new WeatherServer());
}

Using the Queue

For long-running tools, implement queueing:

public function toolShouldQueue(string $toolname): bool
{
    return match($toolname) {
        'long_running_process' => true,
        default => false
    };
}

Working with Chat History

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;

Error Handling

The package includes comprehensive error handling and logging:

$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');

Events

The package dispatches several events you can listen for:

  • MessageCreatedEvent
  • MessageProcessedEvent
  • MessageErrorEvent

Testing

composer test

Security

If you discover any security-related issues, please email security@scriptoshi.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

laravel-mcp-client FAQ

How do I install the Laravel MCP Client?
Install via composer with 'composer require scriptoshi/laravel-mcp-client'.
What are the Laravel and PHP version requirements?
Requires Laravel 11.0 or higher and PHP 8.3 or higher.
Do I need an API key to use this client?
Yes, an Anthropic API key is required to connect to Claude AI.
Can the client handle long-running tool executions?
Yes, it includes built-in queuing support for long-running tools.
Does the client support chat history persistence?
Yes, it supports full chat history management with database persistence and soft deletes.
Is there logging available for AI interactions?
Yes, it provides a comprehensive logging system for conversations and tool executions.
Can I extend Claude AI with my own tools?
Yes, the client allows integration with custom MCP tool servers to extend AI capabilities.
What architecture does the client use?
It uses an event-driven architecture for managing AI workflows and tool executions.