mcpField
L
laravel-mcp

laravel-mcp

github.com/asyrafhussinDevelopment95668 installsUpdated 9w ago
Repository

About laravel-mcp

A reference skill for developers building MCP servers with Laravel. It covers server registration, tools, prompts, resources, authentication, and testing, with implementation patterns and rules.

Key features

  1. 01Web and local server setup
  2. 02Tools with schemas and responses
  3. 03Prompts and resource templates
  4. 04OAuth, Sanctum, and custom auth
  5. 05MCP Inspector and unit testing

Use cases

  1. 01Creating a Laravel MCP server
  2. 02Exposing callable tools to AI clients
  3. 03Providing reusable prompts and resources
  4. 04Protecting and testing MCP endpoints

MCP support

Guidance for building Laravel MCP servers that expose tools, prompts, and resources to AI clients. It also covers server registration and authentication.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/asyrafhussin/agent-skills --skill laravel-mcp

After installing, type/laravel-mcpin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

AGENTS.md
metadata.json
README.md
rules/
auth-protect.md
prompt-create.md
resource-create.md
server-create-register.md
test-unit.md
tool-create.md
tool-responses.md

Details

From the project README

Laravel MCP

Comprehensive guide for building MCP (Model Context Protocol) servers with Laravel. Contains 7 rules across 5 categories for exposing tools, prompts, and resources to AI clients.

When to Apply

Reference these guidelines when:

  • Creating MCP servers (web or local)
  • Building tools that AI clients can call
  • Defining prompts for reusable AI interactions
  • Exposing resources for AI context
  • Protecting MCP servers with OAuth or Sanctum
  • Testing MCP servers, tools, prompts, and resources

Rule Categories by Priority

PriorityCategoryImpactPrefix
1ServersCRITICALserver-
2ToolsHIGHtool-
3Prompts & ResourcesMEDIUMprompt-, resource-
4AuthenticationHIGHauth-
5TestingHIGHtest-

Quick Reference

1. Servers (CRITICAL)
  • server-create-register - Create and register web or local MCP servers
2. Tools (HIGH)
  • tool-create - Create tools with input/output schemas, DI, and annotations
  • tool-responses - Text, error, structured, streaming, and multi-content responses
3. Prompts & Resources (MEDIUM)
  • prompt-create - Create prompts with arguments, validation, and responses
  • resource-create - Create resources and resource templates with URI patterns
4. Authentication (HIGH)
  • auth-protect - Protect servers with OAuth 2.1, Sanctum, or custom auth
5. Testing (HIGH)
  • test-unit - Test with MCP Inspector and unit tests

Essential Patterns

Creating an MCP Server
<?php

namespace App\Mcp\Servers;

use Laravel\Mcp\Server;
use Laravel\Mcp\Server\Attributes\Instructions;
use Laravel\Mcp\Server\Attributes\Name;
use Laravel\Mcp\Server\Attributes\Version;

#[Name('Weather Server')]
#[Version('1.0.0')]
#[Instructions('This server provides weather information.')]
class WeatherServer extends Server
{
    protected array $tools = [
        CurrentWeatherTool::class,
    ];

    protected array $resources = [];

    protected array $prompts = [];
}
Registering in routes/ai.php
use App\Mcp\Servers\WeatherServer;
use Laravel\Mcp\Facades\Mcp;

Mcp::web('/mcp/weather', WeatherServer::class);
Mcp::local('weather', WeatherServer::class);
Creating a Tool
<?php

namespace App\Mcp\Tools;

use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Mcp\Request;
use Laravel\Mcp\Response;
use Laravel\Mcp\Server\Attributes\Description;
use Laravel\Mcp\Server\Tool;

#[Description('Fetches the current weather for a location.')]
class CurrentWeatherTool extends Tool
{
    public function handle(Request $request): Response
    {
        $location = $request->get('location');

        return Response::text("The weather in {$location} is sunny, 72°F.");
    }

    public function schema(JsonSchema $schema): array
    {
        return [
            'location' => $schema->string()
                ->description('The location to get the weather for.')
                ->required(),
        ];
    }
}

How to Use

Read individual rule files for detailed explanations and code examples.

Each rule file contains:

  • YAML frontmatter with metadata (title, impact, tags)
  • Brief explanation of why it matters
  • Bad Example with explanation
  • Good Example with explanation
  • Laravel 13 and PHP 8.3 specific context and references

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

Comments

Markdown supported