- Create TryPostServer MCP server with 17 tools: Post (List, Get, Create, Delete), Hashtag (List, Create, Update, Delete), Label (List, Create, Update, Delete), Workspace (Get), ApiKey (List, Create, Delete) - Create AuthenticateMcpToken middleware (logs in workspace owner) - Register mcp.auth middleware alias in bootstrap/app.php - Create routes/ai.php with mcp.trypost.test subdomain - Add PostApiTest with 6 tests (list, show, create, delete, isolation) - Fix PostApiTest assertions for pagination/resource wrapping - 704 tests passing, frontend build passing
2.4 KiB
2.4 KiB
| name | description | license | metadata | ||
|---|---|---|---|---|---|
| mcp-development | Use this skill for Laravel MCP development only. Trigger when creating or editing MCP tools, resources, prompts, or servers in Laravel projects. Covers: artisan make:mcp-* generators, mcp:inspector, routes/ai.php, Tool/Resource/Prompt classes, schema validation, shouldRegister(), OAuth setup, URI templates, read-only attributes, and MCP debugging. Do not use for non-Laravel MCP projects or generic AI features without MCP. | MIT |
|
MCP Development
Documentation
Use search-docs for detailed Laravel MCP patterns and documentation.
Basic Usage
Register MCP servers in routes/ai.php:
use Laravel\Mcp\Facades\Mcp;
Mcp::web();
Creating MCP Primitives
Create MCP tools, resources, prompts, and servers using artisan commands:
vendor/bin/sail artisan make:mcp-tool ToolName # Create a tool
vendor/bin/sail artisan make:mcp-resource ResourceName # Create a resource
vendor/bin/sail artisan make:mcp-prompt PromptName # Create a prompt
vendor/bin/sail artisan make:mcp-server ServerName # Create a server
After creating primitives, register them in your server's $tools, $resources, or $prompts properties.
Tools
use Laravel\Mcp\Server\Tool;
use Laravel\Mcp\Server\Request;
use Laravel\Mcp\Server\Response;
class MyTool extends Tool
{
public function handle(Request $request): Response
{
return new Response(['result' => 'success']);
}
}
Registering Primitives in a Server
Each MCP server must explicitly declare the tools, resources, and prompts it exposes.
use Laravel\Mcp\Server;
class AppServer extends Server
{
protected array $tools = [
\App\Mcp\Tools\MyTool::class,
];
protected array $resources = [
\App\Mcp\Resources\MyResource::class,
];
protected array $prompts = [
\App\Mcp\Prompts\MyPrompt::class,
];
}
Verification
- Check
routes/ai.phpfor proper registration - Test tool via MCP client
Common Pitfalls
- Running
mcp:startcommand (it hangs waiting for input) - Using HTTPS locally with Node-based MCP clients
- Not using
search-docsfor the latest MCP documentation - Not registering MCP server routes in
routes/ai.php - Do not register
ai.phpinbootstrap.php; it is registered automatically.