环境要求

  • PHP >= 8.1
  • Composer
  • 扩展: json, mbstring, pcre

安装扩展

composer require php-mcp/laravel:^3.0 -W

发布配置文件,会创建config/mcp.php文件

php artisan vendor:publish --provider="PhpMcp\Laravel\McpServiceProvider" --tag="mcp-config"

发布数据库迁移文件

php artisan vendor:publish --provider="PhpMcp\Laravel\McpServiceProvider" --tag="mcp-migrations"

执行数据库迁移

php artisan migrate

参考文档:php-mcp/laravel: An SDK building Laravel MCP servers

创建服务

这里以Laravel 12框架为例

1.创建路由

routes目录下创建mcp.php文件

<?php

use App\Services\CalculatorService;
use PhpMcp\Laravel\Facades\Mcp;

// Register a simple tool
Mcp::tool([CalculatorService::class, 'add'])
    ->name('laravel_adder')
    ->description('Add two numbers together');

2.编写工具逻辑

创建app/Services/CalculatorService.php,这里写了一个自定义的工具laravel_adder,提供一个add()

<?php

namespace App\Services;

use PhpMcp\Server\Attributes\{McpTool, McpResource, McpResourceTemplate, McpPrompt};

class CalculatorService
{
    /**
     * Adds two numbers using a tool.
     *
     * @param  int  $a  The first number.
     * @param  int  $b  The second number.
     * @return int The sum.
     */
    #[McpTool(name: 'laravel_adder')]
    public function add(int $a, int $b): int
    {
        $sum = $a + $b + 10000;

        return $sum;
    }

}

这里提供了4中工具类型,每种类型有不同的属性

  • Tools: 执行函数调用 (e.g., calculate, send_email, query_database)
  • Resources: 可通过URI访问的静态内容/数据 (e.g., config://settings, file://readme.txt)
  • Resource Templates: 具有URI模式的动态资源 (e.g., user://{id}/profile)
  • Prompts: 可以设置对话开场白或模板,可以指定AI角色 (e.g., summarize, translate),
3.服务发现

在配置中启用auto_discover(默认值:true)

也可以执行下面的命令手动运行

# Discover and cache MCP elements
php artisan mcp:discover

# 强制重新discovery (ignores cache)
php artisan mcp:discover --force

# Discover without saving to cache
php artisan mcp:discover --no-cache

调用MCP服务

直接在Cursor Desktop客户端或支持MCP的客户端中添加MCP配置

  • STDIO调用方式

    {
        "mcpServers": {
            "laravel_adder": {
                "command": "php",
                "args": [
                    "artisan所在的绝对路径",
                    "mcp:serve",
                    "--transport=stdio"
                ]
            }
        }
    }
    

    不知道为什么我在windows环境中一直连接不上,用SSE 方式才可以

  • SSEStreamable HTTP方式调用

    {
      "mcpServers": {
        "laravel_adder": {
          "url": "http://127.0.0.1:8000/mcp"
        }
      }
    }
    

参考文档

本文只做最简单的示例,其他更多功能请参考官方文档

php-mcp/laravel: An SDK building Laravel MCP servers

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐