Laravel MCP Server 使用说明

项目简介

Laravel MCP Server 是一个基于 Laravel 框架构建的 Model Context Protocol (MCP) 服务器,旨在为大型语言模型(LLM)客户端提供标准化的上下文信息和功能访问能力。它允许开发者轻松地将 Laravel 应用程序的数据和功能暴露给支持 MCP 协议的 LLM 应用,例如 Claude Desktop。

主要功能点

  • 资源管理 (Resources)
    • 支持通过 Eloquent 模型轻松暴露数据库数据作为资源。
    • 允许使用内存资源提供器暴露自定义数据结构。
    • 提供资源列表、读取、订阅和取消订阅等标准 MCP 资源操作。
  • 工具注册和执行 (Tools)
    • 支持注册自定义工具,扩展 LLM 的能力,使其可以调用 Laravel 应用的特定功能。
    • 内置示例工具,方便快速上手和测试。
    • 工具可以通过 Artisan 命令或其他 Laravel 功能实现。
  • MCP 协议支持
    • 完全实现了 MCP 协议,确保与 MCP 客户端的兼容性。
    • 使用 JSON-RPC 协议进行通信。
    • 支持 STDIO 传输协议,方便本地开发和部署。
  • 能力声明 (Server Capabilities)
    • 服务器可以声明其支持的功能(资源、工具等),客户端可以根据声明进行适配。
  • 易于集成
    • 作为 Laravel 包提供,可以方便地集成到现有的 Laravel 应用中。

安装步骤

  1. 安装 Laravel MCP 包

    在 Laravel 项目的根目录下,运行 Composer 命令安装 Laravel MCP 包:

    composer require innoge/laravel-mcp
  2. 创建 MCP 服务器启动命令

    使用 Artisan 命令 'php artisan make:command McpServerCommand' 创建一个新的 Artisan 命令,例如 'McpServerCommand'。然后,将以下代码复制到 'app/Console/Commands/McpServerCommand.php' 文件中:

    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    use InnoGE\LaravelMcp\Commands\ServesMcpServer;
    use App\MCP\Tools\YourCustomTool; // 引入自定义工具
    use App\Models\User; // 引入 Eloquent 模型
    use InnoGE\LaravelMcp\Resources\EloquentResourceProvider; // 引入 Eloquent 资源提供器
    
    class McpServerCommand extends Command
    {
        use ServesMcpServer;
    
        protected $signature = 'mcp:serve';
        protected $description = 'Start an MCP server';
    
        public function handle(): int
        {
            return $this->serveMcp('your-app-name', '1.0.0'); // 启动 MCP 服务器,server name 可以自定义
        }
    
        private function getTools(): array
        {
            return [
                // 注册自定义工具,例如:
                // YourCustomTool::class,
            ];
        }
    
        private function getResources(): array
        {
            return [
                // 注册 Eloquent 资源提供器,例如:
                // new EloquentResourceProvider(User::query(), 'users', '应用的用户')
            ];
        }
    }

    注意:你需要根据你的实际需求修改 'getTools()' 和 'getResources()' 方法,注册你的自定义工具和资源提供器。示例代码中注释部分提供了如何注册工具和资源的示例。

服务器配置

MCP 客户端(例如 Claude Desktop)需要配置 MCP 服务器的连接信息才能与之通信。配置信息通常为 JSON 格式,你需要将以下 JSON 代码添加到 MCP 客户端的配置文件中,并根据注释进行必要的修改:

{
  "your-server-name": {  // 服务名称,需要与 McpServerCommand 中 serveMcp() 方法的第一个参数保持一致
    "command": "php",     // 启动服务器的命令,通常为 php
    "args": [            // 启动命令的参数
      "/path/to/your/app/artisan", // Laravel 应用的 artisan 脚本路径,请替换为你的实际路径
      "mcp:serve"               // 启动 MCP 服务器的 Artisan 命令
    ]
  }
}

请根据你的 Laravel 项目的实际 'artisan' 脚本路径替换 '/path/to/your/app/artisan'。 'your-server-name' 需要与你在 'McpServerCommand' 中 'serveMcp()' 方法里定义的 server name 一致。

基本使用方法

  1. 启动 MCP 服务器

    在 Laravel 项目根目录下,运行以下 Artisan 命令启动 MCP 服务器:

    php artisan mcp:serve

    服务器启动后,将监听 STDIO 输入输出流,等待 MCP 客户端的连接和请求。

  2. 在 MCP 客户端中配置并连接服务器

    打开你的 MCP 客户端(例如 Claude Desktop),编辑其配置文件,将上面提供的 JSON 配置信息添加到 'mcpServers' 字段中。配置完成后,客户端应该能够检测到并连接到你的 Laravel MCP 服务器。

  3. 使用工具和资源

    一旦客户端成功连接到服务器,你就可以在客户端中使用服务器提供的工具和资源了。具体使用方法取决于 MCP 客户端的功能和界面。通常,你可以通过自然语言指令或图形界面来调用工具和访问资源。

注意:目前 'laravel-mcp' 包仍处于开发阶段,可能不适用于生产环境。HTTP 传输协议的支持将在未来版本中添加。

信息

分类

AI与计算