使用说明

项目简介

Laravel MCP Server SDK 是一个基于 Laravel 框架开发的软件包,用于快速构建 Model Context Protocol (MCP) 服务器。它旨在简化 MCP 服务器的开发过程,使开发者能够专注于实现核心业务逻辑,而无需从零开始处理 MCP 协议的底层细节。该 SDK 提供了丰富的功能,包括资源管理、工具注册与执行、Prompt 模板处理等,并支持 HTTP、WebSocket 和 Stdio 等多种传输协议,方便与各种类型的 MCP 客户端进行集成。

主要功能点

  • 资源管理:支持注册和管理各种类型的资源,通过 URI 访问资源数据。
  • 工具注册与执行:允许注册自定义工具,并通过标准化的方式供 LLM 客户端调用执行。
  • Prompt 模板处理:支持定义和管理 Prompt 模板,实现可定制的 LLM 交互模式。
  • 多种传输协议支持:内置 HTTP、WebSocket 和 Stdio 传输协议,满足不同应用场景的需求。
  • 会话管理:服务器端负责会话管理,跟踪客户端状态。
  • 能力声明:服务器可以声明自身支持的功能和特性。
  • 进度跟踪与日志记录:提供进度跟踪和日志记录功能,方便监控服务器运行状态。
  • 易于扩展:基于 Laravel 框架,易于扩展和集成其他 Laravel 生态系统组件。

安装步骤

  1. 环境准备:确保已安装 PHP 8.1 或更高版本、Composer 和 Laravel 10.x。

  2. 安装 SDK:在 Laravel 项目根目录下,运行 Composer 命令安装 SDK:

    composer require laravelmcp/mcp
  3. 发布配置:运行 Artisan 命令发布 SDK 配置文件:

    php artisan vendor:publish --provider="LaravelMCP\MCP\MCPServiceProvider" --tag="config"

服务器配置

MCP 服务器的配置信息通常由 MCP 客户端使用,以便客户端能够连接和交互。以下是 'config/mcp.php' 文件中可配置的关键信息,以 JSON 格式描述,并附带参数注释:

{
  "server_name": "Laravel MCP",
  // MCP 服务器的名称,用于标识服务器实例
  "server_version": "1.0.0",
  // MCP 服务器的版本号
  "base_url": "https://api.mcp.example.com",
  // MCP 服务器的基础 URL,用于 HTTP 传输 (此项配置通常用于客户端 SDK 示例,服务器端配置传输方式和地址即可)
  "api_key": null,
  // MCP 服务器的 API 密钥 (此项配置通常用于客户端 SDK 示例,服务器端配置传输方式和地址即可)

  "capabilities": {
    // 服务器声明支持的 MCP 功能
    "prompts": {
      // Prompt 功能配置
      "listChanged": true
      // 是否支持 Prompt 列表变更通知
    },
    "resources": {
      // 资源功能配置
      "subscribe": true,
      // 是否支持资源订阅
      "listChanged": true
      // 是否支持资源列表变更通知
    },
    "tools": {
      // 工具功能配置
      "listChanged": true
      // 是否支持工具列表变更通知
    },
    "logging": true,
    // 是否支持日志记录功能
    "completion": true
    // 是否支持代码补全功能 (可能为示例配置,实际MCP标准功能中未明确提及)
  },

  "defaults": {
    // 默认设置
    "timeout": 30,
    // 默认请求超时时间 (秒)
    "retry_attempts": 3,
    // 默认重试次数
    "max_connections": 100
    // 最大连接数
  },

  "transport": {
    // 传输协议配置
    "type": "http",
    // 传输协议类型,可选值:http, websocket, stdio
    "host": "127.0.0.1",
    // 服务器监听地址
    "port": 3000
    // 服务器监听端口
  }
}

MCP 客户端配置示例 (以JSON格式描述,简化表示客户端所需配置信息):

{
  "server_name": "Laravel MCP Server",
  // MCP 服务器名称,客户端用于识别
  "command": "php artisan mcp:serve",
  // 启动 MCP 服务器的命令,客户端无需执行此命令,仅作为参考信息
  "args": [
    // 启动命令的参数,客户端无需解析,仅作为参考信息
    "--transport=http",
    "--host=127.0.0.1",
    "--port=8080"
  ],
  "transport_type": "http",
  // 客户端连接服务器时使用的传输协议,需要与服务器配置的 type 一致
  "host": "127.0.0.1",
  // MCP 服务器的监听地址,客户端需要连接的地址
  "port": 8080
  // MCP 服务器的监听端口,客户端需要连接的端口
}

请注意:MCP客户端不需要配置 'base_url' 和 'api_key' 等在 'config/mcp.php' 中出现的字段,这些字段通常是 SDK 示例或特定客户端的配置项,而非 MCP 服务器连接的必要配置。MCP 客户端的核心配置是服务器的传输协议类型、地址和端口,以及可能的认证方式(本仓库示例中未涉及复杂认证)。

基本使用方法

  1. 启动服务器:运行 Artisan 命令启动 MCP 服务器,可以选择不同的传输协议和端口:

    php artisan mcp:serve
    php artisan mcp:serve --transport=websocket --host=0.0.0.0 --port=8081
    php artisan mcp:serve --transport=stdio
  2. 注册工具、资源和 Prompt:在 Laravel 应用中,通过 SDK 提供的 API 注册工具、资源和 Prompt。具体注册方法请参考仓库 README.md 中的 “Basic Usage” 和 “Fun with LLMs: Building a Code Review Assistant” 章节示例代码。

  3. 客户端连接:使用 MCP 客户端(例如实现了 MCP 协议的 LLM 应用或客户端 SDK)根据上述 “服务器配置” 中的信息连接到 Laravel MCP 服务器,并发送 MCP 请求进行交互。

  4. 测试功能:通过 MCP 客户端调用已注册的工具、访问资源或请求 Prompt,验证 MCP 服务器的功能是否正常。

信息

分类

开发者工具