项目简介
Laravel MCP Server 是一个基于 Laravel PHP 框架开发的 Model Context Protocol (MCP) 服务器包。它旨在帮助开发者快速搭建符合 MCP 协议规范的后端服务,为大型语言模型 (LLM) 应用提供结构化的上下文信息和功能调用能力。与常见的基于 STDIO 传输的 MCP 服务器不同,该包采用 Server-Sent Events (SSE) 作为主要传输方式,旨在提升企业级应用的安全性和可控性。
主要功能点
- 资源管理: 虽然仓库信息中没有明确提及资源管理的具体实现,但 MCP 服务器的核心功能之一是资源管理,该框架很可能预留了资源管理的接口或扩展点,以便开发者根据需要集成和管理各种数据资源。
- 工具注册与执行: 支持注册和执行各种工具 (Tools),允许 LLM 客户端通过标准化的 MCP 协议调用后端功能,扩展 LLM 的能力边界。框架提供了便捷的 Artisan 命令来生成和测试自定义工具。
- Prompt 模板支持: 虽然仓库信息中 'config/mcp-server.php' 文件定义了 'prompts' 配置项,但实际代码中没有找到 Prompt 模板的具体实现。可能该功能尚未完全实现或需要开发者自行扩展。
- SSE 传输: 使用 Server-Sent Events (SSE) 协议进行服务器与客户端之间的实时通信,相较于 STDIO,SSE 在企业环境中提供更佳的安全性和控制力,能够更好地保护内部 API 和系统架构。
- Pub/Sub 架构: 采用基于适配器的发布/订阅 (Pub/Sub) 架构,默认支持 Redis 适配器,允许开发者根据需要扩展其他消息中间件,实现高可扩展性和可靠的消息通信。
- 便捷的工具测试: 提供 Artisan 命令 'mcp:test-tool',允许开发者在不依赖 MCP 客户端的情况下,快速测试和调试工具的功能和输入输出。
- MCP Inspector 可视化: 支持与 Model Context Protocol Inspector 集成,方便开发者可视化地测试和探索 MCP 服务器的功能。
安装步骤
-
使用 Composer 安装:
composer require opgginc/laravel-mcp-server -
发布配置文件:
php artisan vendor:publish --provider="OPGG\LaravelMcpServer\LaravelMcpServerServiceProvider"
服务器配置
MCP 客户端需要配置 MCP 服务器的连接信息,以下是基于该仓库信息生成的 MCP 服务器配置示例(JSON 格式)。请注意,实际使用时可能需要根据您的具体环境和需求进行调整。
{ "serverName": "Laravel MCP Server", // MCP 服务器名称,可以自定义 "command": "php", // 启动 MCP 服务器的命令,这里使用 php "args": [ // 启动命令的参数 "artisan", // Laravel Artisan 命令行工具 "octane:start", // 使用 Octane 启动服务器,支持 SSE "--server=frankenphp", // 推荐使用 FrankenPHP 作为 Octane 服务器 "--host=0.0.0.0", // 监听所有地址,根据需要修改 "--port=8000" // 监听端口,根据需要修改 ], "baseURL": "http://localhost:8000/mcp" // MCP 服务器的根 URL,/mcp 为默认路径,可在 config/mcp-server.php 中配置 }
配置参数注释:
- 'serverName': MCP 服务器的名称,用于在客户端标识服务器。
- 'command': 启动 MCP 服务器的可执行命令,通常为 PHP 解释器。
- 'args': 传递给启动命令的参数数组。
- '"artisan"': Laravel 的 Artisan 命令行工具入口。
- '"octane:start"': 使用 Laravel Octane 启动 HTTP 服务器,以支持长连接和高并发,特别适合 SSE 应用。
- '"--server=frankenphp"': 指定 Octane 使用 FrankenPHP 服务器,推荐用于 SSE 支持。
- '"--host=0.0.0.0"': 设置服务器监听的 Host 地址,'0.0.0.0' 表示监听所有网络接口,允许从外部访问。可以根据需要修改为特定的 IP 地址或域名。
- '"--port=8000"': 设置服务器监听的端口号,默认为 '8000'。请确保此端口未被占用,并根据需要进行更改。
- 'baseURL': MCP 服务器的根 URL,客户端将通过此 URL 与服务器建立连接和发送请求。'/mcp' 是该 Laravel 包的默认路径,可在 'config/mcp-server.php' 文件中的 'default_path' 配置项中修改。如果修改了 'default_path',请务必更新 'baseURL'。
注意:
- 必须使用 Laravel Octane 或其他支持 SSE 流式传输的 Web 服务器运行 Laravel MCP Server。 传统的 'php artisan serve' 命令不适用于 SSE 长连接。
- 推荐使用 FrankenPHP 作为 Octane 服务器。 虽然 README 中提到 RoadRunner 可能存在 SSE 兼容性问题,但如果您有能力解决 RoadRunner 的兼容性问题,欢迎提交 Pull Request。
- 根据您的实际部署环境(例如,Nginx + PHP-FPM, Apache + PHP-FPM, Docker 等),配置 'command' 和 'args' 以正确启动 Laravel MCP Server。 以上提供的配置示例是基于 Laravel Octane + FrankenPHP 的本地开发环境。
基本使用方法
-
创建自定义工具: 使用 Artisan 命令 'php artisan make:mcp-tool ToolName' 创建新的 MCP 工具类。工具类将生成在 'app/MCP/Tools' 目录下,并需要实现 'OPGG\LaravelMcpServer\Services\ToolService\ToolInterface' 接口。
-
注册工具: 在 'config/mcp-server.php' 配置文件中的 'tools' 数组中注册您创建的工具类。
-
测试工具:
- 使用 'php artisan mcp:test-tool ToolName' 命令在命令行中交互式测试指定工具。
- 使用 'php artisan mcp:test-tool --list' 命令查看所有已注册的工具列表。
- 使用 'php artisan mcp:test-tool ToolName --input='{"param":"value"}'' 命令使用 JSON 输入测试工具。
-
集成 MCP Inspector:
- 运行 'npx @modelcontextprotocol/inspector node build/index.js' 启动 MCP Inspector。
- 在 Inspector 界面中输入您的 Laravel MCP 服务器的 SSE URL (例如: 'http://localhost:8000/mcp/sse') 进行连接和测试。
-
在 MCP 客户端中使用: 配置 MCP 客户端连接到您的 Laravel MCP Server 的 SSE URL,客户端即可通过 MCP 协议与服务器进行通信,并调用注册的工具。
信息
分类
开发者工具