binaryk / laravel-restify
Laravel REST API helpers
Requires
- php: ^8.3
- illuminate/contracts: ^11.0|^12.0|^13.0
- laravel/framework: ^11.0|^12.0|^13.0
- laravel/mcp: ^0.4.1|^0.5|^0.6
- laravel/pint: ^1.25.1
- spatie/laravel-data: ^4.4
- spatie/laravel-package-tools: ^1.12
- spatie/once: ^3.0
Requires (Dev)
- brianium/paratest: ^7.0.6
- doctrine/dbal: ^3.0|^4.0
- nunomaduro/collision: ^8.1
- openai-php/laravel: ^0.8.1|^0.11|^0.19
- orchestra/testbench: ^9.0|^10.0|^11.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0|^2.0
- phpstan/phpstan-phpunit: ^1.0|^2.0
- phpunit/phpunit: ^10.0|^11.0|^12.0
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^6.0
Suggests
- nuwave/lighthouse: For GraphQL schema generation and resolvers (^6.0)
- pusher/pusher-php-server: For real-time broadcasting features (^7.0)
This package is auto-updated.
Last update: 2026-06-12 14:03:58 UTC
README
Unified Laravel API Layer for Humans and AI
One Codebase. REST for Humans, MCP for AI Agents.
Laravel Restify turns your Eloquent models into both JSON:API endpoints and MCP servers -- automatically. Build once, and instantly serve APIs that work seamlessly for developers, apps, and AI agents.
🚀 The Power of One Codebase
Traditional API development requires separate implementations for different consumers. Laravel Restify changes that:
- 👥 Humans get full-featured JSON:API endpoints
- 🤖 AI Agents get structured MCP (Model Context Protocol) servers
- 🔒 Same Rules - All authentication, authorization, and policies apply to both
- 📝 One Definition - Write your repository once, serve everywhere
Key Features
- JSON:API Endpoints - Full JSON:API specification compliance
- MCP Server Generation - Automatic AI agent interfaces with tool definitions
- Unified Authorization - Laravel policies protect both human and AI access
- Search & Filtering - Powerful query capabilities for all consumers
- Authentication - Laravel Sanctum integration for secure access
- GraphQL Support - Auto-generated GraphQL schemas
- Field Validation - Consistent validation rules across all interfaces
Installation
composer require binaryk/laravel-restify
Quick Start
1. Setup the package:
php artisan restify:setup
2. Create your first repository:
php artisan restify:repository PostRepository --all
3. Enable MCP for AI agents (optional):
Add to your config/ai.php:
use Binaryk\LaravelRestify\MCP\RestifyServer; use Laravel\Mcp\Facades\Mcp; Mcp::web('restify', RestifyServer::class) ->middleware(['auth:sanctum']) ->name('mcp.restify');
That's it! Your API now serves both:
For Humans (JSON:API):
GET /api/restify/posts POST /api/restify/posts PUT /api/restify/posts/1 DELETE /api/restify/posts/1
For AI Agents (MCP):
GET /mcp/restify # Tool definitions and capabilities
Example Repository
use Binaryk\LaravelRestify\Http\Requests\RestifyRequest; use Binaryk\LaravelRestify\Repositories\Repository; use Binaryk\LaravelRestify\Attributes\Model; #[Model(Post::class)] class PostRepository extends Repository { public function fields(RestifyRequest $request): array { return [ field('title')->rules('required', 'string', 'max:255'), textarea('content')->rules('required'), field('author')->readonly(), datetime('published_at')->nullable(), ]; } }
This single definition automatically provides:
- ✅ JSON:API CRUD endpoints with validation
- ✅ MCP tools for AI agents with the same validation
- ✅ Authorization policies applied to both interfaces
- ✅ Search and filtering capabilities for all consumers
One Codebase, Two Outputs
Here's what you get from one repository definition:
For Humans (JSON:API Response)
GET /api/restify/posts
{
"data": [
{
"id": "1",
"type": "posts",
"attributes": {
"title": "Laravel Restify Guide",
"content": "Build APIs fast...",
"published_at": "2024-01-15"
}
}
],
"links": {
"self": "/api/restify/posts",
"next": "/api/restify/posts?page=2"
}
}
For AI Agents (MCP Tool Definition)
GET /mcp/restify # Tool definitions for AI agents
{
"tools": [
{
"name": "posts-index-tool",
"description": "Retrieve a paginated list of Post records from the posts repository with filtering, sorting, and search capabilities.",
"inputSchema": {
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number for pagination"
},
"perPage": {
"type": "number",
"description": "Number of posts per page"
},
"search": {
"type": "string",
"description": "Search term to filter posts by title or content"
},
"sort": {
"type": "string",
"description": "Sorting criteria (e.g., sort=title or sort=-published_at for descending)"
},
"title": {
"type": "string",
"description": "Filter by exact match for title (e.g., title=Laravel). Accepts negation with -title=value"
},
"published_at": {
"type": "string",
"description": "Filter by publication date (e.g., published_at=2024-01-15)"
}
}
}
}
]
}
All generated from this simple repository:
#[Model(Post::class)] class PostRepository extends Repository { use HasMcpTools; public function fields(RestifyRequest $request): array { return [ field('title')->required()->matchable(), field('content'), field('published_at')->rules('date')->matchable(), ]; } }
Restify Boost
Laravel Restify Boost is a development companion that provides MCP server capabilities to help you build Restify APIs faster with AI assistance.
Repository: laravel-restify-boost
Features:
- Documentation access for AI agents
- Repository and action generation assistance
- Code examples and best practices
- Integration with Claude Desktop and other AI tools
Installation:
composer require --dev binarcode/laravel-restify-boost
Templates
Need a production-ready starting point? Check out Restify Templates for complete API starter kits with authentication, permissions, and team management.
Resources
- Documentation - Complete guides and API reference
- Demo Repository - Working example
- Video Course - Visual learning resource
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email eduard.lupacescu@binarcode.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
