grazulex / laravel-devtoolbox
Swiss-army artisan CLI for Laravel โ Scan, inspect, debug, and explore every aspect of your Laravel application from the command line.
Requires
- php: ^8.3
- illuminate/support: ^12.0|^13.0
- nesbot/carbon: ^3.10
Requires (Dev)
- doctrine/dbal: ^4.2
- larastan/larastan: ^3.4
- laravel/mcp: ^1.0
- laravel/pint: ^1.22
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^3.8|^4.0
- pestphp/pest-plugin-laravel: ^3.2|^4.0
- rector/rector: ^2.1
Suggests
- doctrine/dbal: Required for command `php artisan dev:generate-migration` to generate migrations from models
- laravel/mcp: Required to expose DevToolbox scanners as MCP tools for AI coding agents (php artisan mcp:start devtoolbox)
Provides
None
Conflicts
None
Replaces
None
README
Tip
What Laravel Devtoolbox does for you โ One artisan toolbox to scan, inspect and debug your Laravel app: unused routes, model relationships, container bindings, env drift, SQL traces โ plus an MCP server so your AI coding agent can use the same tools.
This package is free and maintained on my own time. If it saves you hours, a small contribution helps me keep it going: ๐ GitHub Sponsors ยท โ Buy Me a Coffee ยท PayPal
Swiss-army artisan CLI for Laravel โ Scan, inspect, debug, and explore every aspect of your Laravel application from the command line.
โจ Features
Laravel Devtoolbox provides comprehensive analysis tools for Laravel applications:
- ๐ Deep Application Scanning - Complete analysis of models, routes, services, and more
- ๐ง Model Introspection - Analyze Eloquent models, relationships, and usage patterns
- ๐ฃ๏ธ Route Analysis - Inspect routes, detect unused ones, and analyze middleware
- ๐ฆ Service Container Analysis - Examine bindings, singletons, and providers
- โ๏ธ Environment Auditing - Compare configuration files and detect inconsistencies
- ๐ SQL Query Tracing - Monitor and analyze database queries for specific routes
- ๐ Multiple Export Formats - JSON, Markdown, Mermaid diagrams, and more
- ๐ Developer Experience - Rich console output with actionable insights
- ๐ค MCP Server - Expose every scanner as a tool for AI coding agents (optional, via
laravel/mcp)
๐ฆ Installation
Install via Composer as a development dependency:
composer require --dev grazulex/laravel-devtoolbox
Requirements:
- PHP 8.3+
- Laravel 12.0+ | 13.0+
๐ Quick Start
# See all available commands php artisan list dev: # Enhanced application overview (new!) php artisan dev:about+ --extended --performance # Quick health check of your application php artisan dev:scan --all # Find where a model is used php artisan dev:model:where-used App\Models\User # Detect unused routes php artisan dev:routes:unused # Find routes by controller (reverse lookup - new!) php artisan dev:routes:where UserController # Generate model relationship diagram php artisan dev:model:graph --format=mermaid --output=models.mmd # Trace SQL queries for a route php artisan dev:sql:trace --route=dashboard # Analyze SQL queries for N+1 problems (new!) php artisan dev:sql:duplicates --route=users.index --threshold=3 # Monitor logs in real-time (new!) php artisan dev:log:tail --follow --level=error # Compare environment files php artisan dev:env:diff --against=.env.example # Analyze database column usage php artisan dev:db:column-usage --unused-only # Security scan for unprotected routes php artisan dev:security:unprotected-routes --critical-only # Analyze container bindings (new!) php artisan dev:container:bindings --show-resolved # Service provider performance analysis (new!) php artisan dev:providers:timeline --slow-threshold=100 # Performance monitoring (new!) php artisan dev:performance:memory --route=dashboard php artisan dev:performance:slow-queries --threshold=1000 php artisan dev:cache:analysis --drivers=redis,file php artisan dev:queue:analysis --failed-jobs --slow-jobs
๐ Available Commands
General Scanning & Analysis
dev:scan- Comprehensive application analysis with multiple scanner typesdev:about+- Enhanced version of Laravel's about command with extended information
Model Analysis
dev:models- List and analyze all Eloquent modelsdev:model:where-used- Find where specific models are useddev:model:graph- Generate model relationship diagrams
Route Analysis
dev:routes- Inspect application routesdev:routes:unused- Detect potentially unused routesdev:routes:where- Find routes by controller/method (reverse lookup)
Database Analysis
dev:db:column-usage- Analyze database column usage across the Laravel application codebasedev:sql:trace- Trace SQL queries for specific routesdev:sql:duplicates- Analyze SQL queries for N+1 problems, duplicates, and performance issues
Security Analysis
dev:security:unprotected-routes- Scan for routes that are not protected by authentication middleware
Service & Container Analysis
dev:services- Examine service container bindingsdev:container:bindings- Analyze container bindings, singletons, and dependency injection mappingsdev:providers:timeline- Analyze service provider boot timeline and performancedev:commands- List and analyze artisan commands
Middleware Analysis
dev:middleware- Analyze middleware classes and usagedev:middlewares:where-used- Find where specific middleware is used
View Analysis
dev:views- Scan Blade templates and views
Environment & Logging
dev:env:diff- Compare environment configuration filesdev:log:tail- Monitor Laravel logs with real-time filtering and pattern matching
Performance Analysis (new!)
dev:performance:memory- Analyze memory usage patterns and performancedev:performance:slow-queries- Detect and analyze slow database queriesdev:cache:analysis- Analyze cache performance and configurationdev:queue:analysis- Analyze queue performance, failed jobs, and job patterns
๐ค MCP Server (AI agents)
Laravel Devtoolbox can run as a local MCP server, exposing every scanner listed above as a typed tool that AI coding agents (Claude Code, Cursor, etc.) can call directly, without shelling out to Artisan and parsing text output.
Installation
The server is built on laravel/mcp, an optional dependency โ the package works exactly as before if it isn't installed:
composer require laravel/mcp --dev
Installing laravel/mcp requires laravel/framework 12.41.1 or later (or 13.x); on an older 12.x release, update the framework first.
Registration
Register the server with Claude Code:
claude mcp add devtoolbox php artisan mcp:start devtoolbox
Or point any MCP-compatible client at it with a generic .mcp.json:
{
"mcpServers": {
"devtoolbox": { "command": "php", "args": ["artisan", "mcp:start", "devtoolbox"] }
}
}
Available tools
Each scanner is exposed as devtoolbox-<name>. Most tools only read application metadata (routes, models, config, source); the three marked (active) actually execute code โ internal HTTP requests or real queries โ while scanning:
devtoolbox-models- Scan Laravel Eloquent models and their relationshipsdevtoolbox-routes- Scan Laravel routes and analyze their usagedevtoolbox-route-where-lookup- Find routes that use a specific controller or methoddevtoolbox-container-bindings- Analyze container bindings, singletons, and dependency injection mappingsdevtoolbox-middleware-usage- Analyze middleware usage across routes, controllers, and groupsdevtoolbox-sql-analysis(active) - Analyze SQL queries for N+1 problems, duplicates, and performance issuesdevtoolbox-provider-timeline- Analyze service provider boot timeline and performancedevtoolbox-commands- Scan Laravel Artisan commandsdevtoolbox-services- Scan Laravel service container bindingsdevtoolbox-middleware- Scan Laravel middleware and their usagedevtoolbox-views- Scan Laravel views and detect unused onesdevtoolbox-model-usage- Scan for usage of a specific model throughout the applicationdevtoolbox-sql-trace(active) - Trace SQL queries executed during route or URL executiondevtoolbox-security- Scan for security vulnerabilities and unprotected routesdevtoolbox-db-column-usage- Analyze database column usage across the application codebasedevtoolbox-performance(active) - Analyze memory usage, query performance, and cache efficiency
Environment guard
The server only registers itself in local and testing by default โ it is never exposed in staging or production. This is controlled by config/devtoolbox.php:
'mcp' => [ 'enabled' => env('DEVTOOLBOX_MCP_ENABLED', true), 'environments' => ['local', 'testing'], 'max_response_bytes' => 262_144, ],
devtoolbox.mcp.environmentsโ the list ofapp()->environment()values allowed to register the server.DEVTOOLBOX_MCP_ENABLEDโ a hard off switch, checked in addition to the environment list.
Response truncation
Large scan results are capped at devtoolbox.mcp.max_response_bytes (262 KB by default) so they stay usable in an agent's context window. When a result is truncated, the response includes a _truncated key with the original item count, how many were kept, and a hint on which options to pass to narrow the scan.
Laravel Boost
Devtoolbox ships Laravel Boost guidelines and a devtoolbox-analysis skill describing when to reach for each MCP tool (unprotected/unused routes, N+1 queries, model impact, slow providers, and more). Both are installed automatically by:
php artisan boost:install
๐ Export Formats
All commands support multiple output formats:
| Format | Usage | Best For |
|---|---|---|
| Array/Table | --format=array (default) |
Interactive development |
| JSON | --format=json |
Automation, CI/CD |
| Count | --format=count |
Quick metrics |
| Mermaid | --format=mermaid |
Documentation, diagrams |
Save to Files
# Export to JSON php artisan dev:models --format=json --output=models.json # Generate Mermaid diagram php artisan dev:model:graph --format=mermaid --output=relationships.mmd # Save comprehensive scan php artisan dev:scan --all --format=json --output=app-analysis.json
๐ Configuration
Publish the configuration file to customize behavior:
php artisan vendor:publish --tag=devtoolbox-config
This creates config/devtoolbox.php where you can customize:
- Default output formats
- Scanner-specific options
- Performance settings
- Export configurations
๐ Documentation
Comprehensive documentation and examples are available in our GitHub Wiki:
- Getting Started - Quick start guide
- Commands Reference - Detailed command documentation
- Configuration - Configuration options
- Examples & Use Cases - Practical usage examples
- CI/CD Integration - Automation workflows
- Output Formats - Export format examples
๐ง Examples & Automation
Daily Development Workflow
# Check application health php artisan dev:scan --all --format=count # Find cleanup opportunities php artisan dev:routes:unused php artisan dev:env:diff
CI/CD Integration
# Quality gates in CI UNUSED_ROUTES=$(php artisan dev:routes:unused --format=count | jq '.count') if [ $UNUSED_ROUTES -gt 10 ]; then echo "Too many unused routes: $UNUSED_ROUTES" exit 1 fi
Documentation Generation
# Generate project documentation
php artisan dev:models --format=json --output=docs/models.json
php artisan dev:model:graph --format=mermaid --output=docs/relationships.mmd
php artisan dev:routes --format=json --output=docs/routes.json
For complete automation scripts and CI/CD configurations, visit our Wiki Examples.
๐ Use Cases
- ๐ Code Reviews - Generate comprehensive application overviews
- ๐ Performance Analysis - Identify slow queries and bottlenecks
- ๐งน Technical Debt - Find unused routes, orphaned models, and inconsistencies
- ๐ Documentation - Auto-generate up-to-date application structure docs
- โก CI/CD Quality Gates - Automated quality checks and thresholds
- ๐ฏ Onboarding - Help new team members understand application structure
๐ Version Compatibility
| Laravel Devtoolbox | PHP Version | Laravel Version | Status |
|---|---|---|---|
| 1.6+ | 8.3+ | 12.x | 13.x | โ Active |
| 1.0 - 1.5 | 8.3+ | 11.x | 12.x | โ ๏ธ Maintenance only |
Note: Since v1.6.0 this package supports Laravel 12 and Laravel 13. Laravel 11 (end of life) is no longer supported; use v1.5.x if you are still on Laravel 11.
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
๐ License
Laravel Devtoolbox is open-sourced software licensed under the MIT license.
Made with โค๏ธ for the Laravel community
Report Issues โข Discussions โข Wiki
๐ผ Need Expert Laravel Help?
Laravel DevToolbox is maintained by Jean-Marc Strauven, creator of 17+ Laravel packages with 6,000+ downloads.
๐ฏ Available for:
๐๏ธ Custom Laravel Development Build your application from scratch or extend existing systems with clean, maintainable code.
๐ Code Audits & Architecture Review Deep analysis of your Laravel projects with detailed recommendations and refactoring roadmap.
- Complete codebase analysis
- Architecture documentation
- Performance bottleneck identification
- Security audit
- Duration: 2-3 days | Investment: โฌ2,500
โก Performance Optimization Scale your Laravel application to handle millions of requests with confidence.
- Database query optimization
- Caching strategies
- Queue optimization
- Load testing and monitoring
๐ฆ Custom Package Development Build tailored Laravel packages for your specific business needs.
- Internal tools and libraries
- API integrations
- Third-party service wrappers
- Investment: โฌ5,000-โฌ10,000
๐จโ๐ซ Team Training & Consulting Level up your team's Laravel skills with hands-on workshops and mentoring.
- Laravel best practices
- Clean architecture principles
- Testing strategies
- โฌ1,500/day for team workshops
๐จโ๐ป Experience:
- 15+ years Laravel/PHP expertise
- Ex-CTO at Delcampe (marketplace with millions of users)
- Chapter Lead at BNP Paribas Fortis
- Creator of popular packages: DevToolbox, Atlas, ShareLink, Draftable
๐ฌ Get in Touch:
- ๐ง Email: jms@grazulex.be
- ๐ผ LinkedIn: Jean-Marc Strauven
- ๐ Website: jnkconsult.be
- ๐ป Malt Profile: Available for freelance projects
๐ก Working on a complex Laravel project? Let's discuss how I can help you build better, faster, and more maintainable applications.
โญ Support This Package
If Laravel DevToolbox saved you time and improved your workflow:
- โญ Star this repository โ Help others discover it
- ๐ฆ Share it with your team and network
- ๐ Sponsor my work โ Support continued development
Every star and sponsor helps me dedicate more time to maintaining and improving these tools for the Laravel community!
Created with โค๏ธ in Belgium ๐ง๐ช by Jean-Marc Strauven
