trypost/.claude/skills/mcp-development/SKILL.md
Paulo Castellano fabce14aad feat: implement MCP server with tools, Post API tests, auth middleware
- 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
2026-03-29 20:30:36 -03:00

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
author
laravel

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

  1. Check routes/ai.php for proper registration
  2. Test tool via MCP client

Common Pitfalls

  • Running mcp:start command (it hangs waiting for input)
  • Using HTTPS locally with Node-based MCP clients
  • Not using search-docs for the latest MCP documentation
  • Not registering MCP server routes in routes/ai.php
  • Do not register ai.php in bootstrap.php; it is registered automatically.