1. Go to this page and download the library: Download mattiasgeniar/filament-mcp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mattiasgeniar / filament-mcp example snippets
// app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Gate;
Gate::define('useFilamentMcp', fn ($user) => $user->is_admin);
use Mattiasgeniar\FilamentMcp\FilamentMcp;
FilamentMcp::authorizeUsing(fn ($user) => $user->is_admin);
// config/filament-mcp.php
use App\Filament\Resources\PageResource;
use App\Filament\Resources\PostResource;
use App\Mcp\PreparePageData;
// ...
'resources' => [
// Shorthand: enables list/get/create/update when matching Filament pages exist
PostResource::class,
// Expanded: scope abilities, opt in to delete, and attach an optional data preparer
PageResource::class => [
'read' => true,
'create' => true,
'update' => true,
'delete' => false,
'prepare' => PreparePageData::class,
],
],
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
use Mattiasgeniar\FilamentMcp\Contracts\PreparesRecordData;
class PreparePageData implements PreparesRecordData
{
public function __invoke(array $data, ?Model $record): array
{
$data['slug'] ??= Str::slug($data['title']);
return $data;
}
}
use Illuminate\Database\Eloquent\Model;
use Mattiasgeniar\FilamentMcp\Actions\ResourceAction;
class PublishPost extends ResourceAction
{
public function description(): string
{
return 'Publish the post.';
}
public function handle(Model $record, array $arguments): mixed
{
$record->update(['published' => true]);
return ['published' => true];
}
}
public function schema(JsonSchema $schema): array
{
return ['reason' => $schema->string()->description('Why it was published.')];
}
public function rules(): array
{
return ['reason' => ['
use Mattiasgeniar\FilamentMcp\Filament\FilamentMcpPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(FilamentMcpPlugin::make());
}
\App\Filament\Resources\RunResource::class => [
'write' => false,
'list' => true, // force-expose list_runs even though the resource is view-only
'read_fields' => ['check_id', 'result', 'started_at', 'ended_at'],
],
bash
php artisan filament-mcp:install
# or
php artisan vendor:publish --tag=filament-mcp-config