项目简介
MCP PHP SDK 是用于开发基于 Model Context Protocol (MCP) 的后端服务器的官方 PHP 工具包。它提供了一套灵活且与框架无关的 API,帮助开发者在 PHP 环境中轻松创建能够向大型语言模型 (LLM) 客户端提供上下文信息、调用工具和渲染 Prompt 模板的 MCP 服务器。尽管目前处于实验阶段,其核心功能已经具备,并持续迭代完善。
主要功能点
- 资源 (Resources) 托管与管理: 定义和提供各种数据资源,LLM 客户端可以通过标准URI访问,实现数据访问能力。
- 工具 (Tools) 注册与执行: 允许 LLM 客户端调用服务器端定义的 PHP 函数或方法作为工具,实现外部功能集成。
- Prompt 模板 (Prompts) 定义与渲染: 支持创建可参数化的 Prompt 模板,帮助 LLM 根据不同场景生成定制化响应,支持可定制的 LLM 交互模式。
- JSON-RPC 通信: 通过 JSON-RPC 协议与 LLM 客户端进行高效、标准化的数据交换,接收客户端请求并返回响应。
- 多种传输协议支持: 目前支持 'Stdio' 传输,并计划支持 'HTTP/SSE' 和 'WebSocket' 等,为 LLM 应用提供安全、可扩展的上下文服务框架。
- 自动发现机制: 通过 PHP Attributes(注解)自动扫描代码中的 MCP 元素,简化注册流程,提高开发效率。
- 手动注册: 支持手动注册 MCP 元素,提供更高的灵活性和对注册过程的精细控制。
- 依赖注入: 与 PSR-11 容器集成,便于管理 MCP 元素处理器的依赖,支持会话管理和能力声明。
安装步骤
- 确保您的 PHP 环境已安装 Composer。
- 在您的 PHP 项目目录中执行以下命令安装 MCP PHP SDK:
composer require mcp/sdk - 由于该包目前没有稳定版本发布,您可能需要在 'composer.json' 中添加如下配置,以允许安装开发版本:
"minimum-stability": "dev", "prefer-stable": true
服务器配置
MCP服务器通常由 MCP 客户端(如某些IDE或AI助手)启动。以下是 MCP 客户端配置一个 MCP 服务器的示例 JSON 片段。客户端需要配置 'command' 来指定如何启动 MCP 服务器进程,以及 'args' 来传递启动脚本的路径。
{ "mcpServers": { "php-calculator-server": { "command": "php", "args": [ "/absolute/path/to/your/mcp-server.php" ], "description": "这是一个用PHP实现的MCP计算器服务器,提供基本的加法功能。" } } }
- 'php-calculator-server': 这是MCP客户端为服务器指定的一个友好名称。
- 'command': 启动MCP服务器进程的命令。对于PHP服务器,通常是 'php'。
- 'args': 传递给 'command' 的参数列表。这里 '/absolute/path/to/your/mcp-server.php' 应该替换为您实际的 MCP 服务器启动脚本的绝对路径。
- 'description': (可选)服务器的简短描述,帮助用户理解其功能。
基本使用方法
-
定义 MCP 元素: 在 PHP 类中创建方法,并使用 '#[McpTool]', '#[McpResource]', '#[McpPrompt]', '#[McpResourceTemplate]' 等属性来标记它们。 例如,创建一个 'src/CalculatorElements.php' 文件:
<?php namespace App; use Mcp\Capability\Attribute\McpTool; use Mcp\Capability\Attribute\Schema; class CalculatorElements { #[McpTool(name: 'add_numbers', description: 'Adds two integers.')] public function add( #[Schema(description: 'The first number to add')] int $a, #[Schema(description: 'The second number to add')] int $b ): int { return $a + $b; } } -
创建服务器启动脚本: 创建一个 PHP 脚本(例如 'mcp-server.php'),用于构建并运行 MCP 服务器。
#!/usr/bin/env php <?php declare(strict_types=1); require_once __DIR__ . '/vendor/autoload.php'; use Mcp\Server; use Mcp\Server\Transport\StdioTransport; Server::make() ->withServerInfo('Stdio Calculator', '1.1.0', 'Basic Calculator over STDIO transport.') ->withDiscovery(__DIR__ . '/src', ['.']) // 扫描 src 目录下的 MCP 元素 ->build() ->connect(new StdioTransport()); -
启动与交互:
- 配置您的 MCP 客户端(如 Cursor 或其他支持 MCP 的 LLM 界面),提供 'mcp-server.php' 脚本的绝对路径作为服务器启动命令。
- LLM 客户端将通过 MCP 协议与您的 PHP 服务器通信,发现并调用 'add_numbers' 工具,或读取注册的资源和 Prompt。
信息
分类
AI与计算