项目简介

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 元素处理器的依赖,支持会话管理和能力声明。

安装步骤

  1. 确保您的 PHP 环境已安装 Composer。
  2. 在您的 PHP 项目目录中执行以下命令安装 MCP PHP SDK:
    composer require mcp/sdk
  3. 由于该包目前没有稳定版本发布,您可能需要在 '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': (可选)服务器的简短描述,帮助用户理解其功能。

基本使用方法

  1. 定义 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;
        }
    }
  2. 创建服务器启动脚本: 创建一个 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());
  3. 启动与交互:

    • 配置您的 MCP 客户端(如 Cursor 或其他支持 MCP 的 LLM 界面),提供 'mcp-server.php' 脚本的绝对路径作为服务器启动命令。
    • LLM 客户端将通过 MCP 协议与您的 PHP 服务器通信,发现并调用 'add_numbers' 工具,或读取注册的资源和 Prompt。

信息

分类

AI与计算