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.
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
- 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
composer require binaryk/laravel-restify1. Setup the package:
php artisan restify:setup2. Create your first repository:
php artisan restify:repository PostRepository --all3. 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/1For AI Agents (MCP):
GET /mcp/restify # Tool definitions and capabilitiesuse 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
Here's what you get from one repository definition:
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" } }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(), ]; } }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-boostNeed a production-ready starting point? Check out Restify Templates for complete API starter kits with authentication, permissions, and team management.
- Documentation - Complete guides and API reference
- Demo Repository - Working example
- Video Course - Visual learning resource
composer testPlease see CONTRIBUTING for details.
If you discover any security related issues, please email eduard.lupacescu@binarcode.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
