A local MCP server for Laravel developers to boost productivity with artisan commands.
Croft is an MCP server designed specifcally for Laravel developers, by Laravel developers. We wanted a plug and play solution to boosting productivity, so we built one. The php artisan croft
command provides tools to your MCP client to help your AI pair programmer work better. This package is specifically designed to offer tools that are useful locally.
Add even more functionality with usecroft.com » hosted servers.
Install the package via composer:
composer require usecroft/laravel --dev
Publish the config file with:
php artisan vendor:publish --tag="croft-config"
Add to your IDE:
php artisan croft:install
Add more functionality with usecroft.com » hosted servers (coming soon)
To make use of Croft you need to add it as an MCP server in your favourite tool.
The command the MCP client needs to run is ./artisan croft
Cursor (Docs)
We recommend you ship an mcp.json
file with your project in .cursor/mcp.json
{
"mcpServers": {
"croft": {
"command": "./artisan",
"args": ["croft"]
}
}
}
Add more functionality with usecroft.com » remote MCP servers (coming soon).
It's trivial to add your own tools.
Just create a class that extends our Croft\Feature\Tool\AbstractTool
class, then make sure it's in your croft.php
config file.
Example:
<?php
declare(strict_types=1);
namespace Croft\Tools;
use Croft\Feature\Tool\AbstractTool;
use Croft\Feature\Tool\ToolResponse;
class {{CLASSNAME}} extends AbstractTool
{
public function __construct()
{
// Setup annotations according to MCP specification
$this->setTitle('{{NAME}}')
->setReadOnly(true) // Just listing commands, no modifications
->setDestructive(false) // No destructive operations
->setIdempotent(true); // Safe to retry
}
public function getName(): string
{
return '{{NAME}}';
}
public function getDescription(): string
{
return 'Must explain well what the tool can do so the MCP client can decide when to use it.';
}
/**
* What params does the MCP client need to provide to use this tool?
**/
public function getInputSchema(): array
{
return [
'type' => 'object',
'properties' => (object) [
],
'required' => [],
];
}
public function handle(array $arguments): ToolResponse
{
return ToolResponse::text("Howdy, this is the start of something great.");
}
}
After adding a tool you'll need to restart the server, or ask the MCP client to relist the tools.
Croft was developed by Ashley Hindle with support from Springloaded. If you like it, please star it, share it, and let us know!
Ashley Hindle
Springloaded
Quickly retrieve SVGs using the Iconify API, with no external data files required.
Run and manage docker containers, docker compose, and logs
Assists with aki-ui component development and usage.
Bootstrap Model Context Protocol (MCP) servers and clients in TypeScript with best practices, examples, and proper tooling setup.
Execute secure shell commands from AI assistants and other MCP clients, with configurable security settings.
A terminal AI chat interface for any LLM model, with file context, MCP, and deployment support.
A bridge to use local LLMs from Ollama within the Model Context Protocol.
Interact with over 100 cryptocurrency exchange APIs using the CCXT library.
Navigate and explore the Model Context Protocol specification with dynamic markdown tree generation and intelligent section navigation.
Interact with CodeRabbit AI reviews on GitHub pull requests.