项目简介

PHP MCP Server 是 Model Context Protocol (MCP) 的一个核心 PHP 实现。它提供了一个强大且灵活的框架,让开发者能够利用 PHP 8 的 Attributes 轻松地将现有的 PHP 应用功能(如特定的方法)以 MCP 标准的工具 (Tools)、资源 (Resources) 或 Prompt 模板 (Prompts) 的形式暴露给兼容的 LLM 客户端(如 Claude Desktop, Cursor, Windsurf 等)。

主要功能点

  • 属性定义: 使用简单的 PHP 8 Attributes ('#[McpTool]', '#[McpResource]', '#[McpPrompt]', '#[McpResourceTemplate]') 直接在 PHP 方法上定义 MCP 元素。
  • 自动发现: 自动扫描指定目录下的 PHP 类,识别带有 MCP 属性的方法,并生成对应的 MCP 定义。
  • PSR 标准支持: 无缝集成 PSR-3 Logger (日志)、PSR-11 Container (依赖注入) 和 PSR-16 Cache (缓存)。
  • 灵活配置: 提供默认配置,但也允许通过自定义配置仓库覆盖各项设置,包括启用的能力、协议版本等。
  • 多种传输方式: 内建支持 'stdio' (标准输入/输出,适合命令行客户端) 和用于构建 'http+sse' (HTTP + Server-Sent Events,适合 Web 或桌面客户端) 服务器的组件。
  • 依赖注入: 当客户端调用工具或读取资源/Prompt 时,服务器会自动通过配置的 PSR-11 容器获取类实例,方便注入应用依赖。

安装步骤

项目使用 Composer 进行依赖管理。在你的 PHP 项目根目录下运行:

composer require php-mcp/server

服务器配置 (客户端视角)

MCP 服务器是通过标准协议与客户端通信的独立进程或服务。MCP 客户端(如 Cursor, Claude Desktop)需要知道如何启动或连接到你的 PHP MCP 服务器。配置信息通常在客户端的设置中完成,例如一个 JSON 文件。

对于使用 'stdio' 传输方式的服务器(最常见),你需要配置客户端运行一个 PHP 脚本。配置信息通常包含:

  • 一个唯一的服务器名称(例如 '"my-php-server"')。
  • 指定服务器的类型为 '"command"'。
  • 提供启动 PHP 解释器的命令(例如 '"php"')。
  • 提供传递给 PHP 解释器的参数数组,其中第一个参数是你的服务器脚本的绝对路径(例如 '"/path/to/your/project/mcp-server.php"')。

示例如下 (并非真实代码,仅为说明概念):

{
    "mcpServers": {
        "my-php-server": {
            // 服务器名称,客户端用于标识
            "type": "command",
            // 启动服务器进程的命令
            "command": "php",
            // 传递给 command 的参数列表
            "args": [
                // 这是你的服务器脚本的绝对路径!非常重要!
                "/path/to/your/project/mcp-server.php"
            ],
            // 其他客户端可能支持的选项,如环境变量等
        }
    }
}

对于 'http' 传输方式,客户端通常配置服务器的 SSE 端点 URL(例如 '"http://localhost:8080/mcp/sse"')。

基本使用方法

  1. 安装: 按照上述步骤安装 Composer 包。

  2. 创建 MCP 元素类: 在你的项目源代码中创建一个 PHP 类,并在方法上添加 '#[McpTool]', '#[McpResource]', '#[McpPrompt]' 或 '#[McpResourceTemplate]' 属性。

    <?php
    // src/MyMcpElements.php
    namespace App;
    
    use PhpMcp\Server\Attributes\McpTool;
    
    class MyMcpElements
    {
        #[McpTool(name: 'simple_add')]
        public function add(int $a, int $b): int
        {
            return $a + $b;
        }
    }
  3. 创建服务器脚本: 在项目根目录创建一个 PHP 脚本(例如 'mcp-server.php')。

    <?php
    // mcp-server.php
    require __DIR__ . '/vendor/autoload.php'; // 包含 Composer 自动加载
    
    use PhpMcp\Server\Server;
    
    // 实例化 Server,配置扫描路径,并发现 MCP 元素
    $server = Server::make()
        ->withBasePath(__DIR__) // 设置项目根目录作为扫描基准
        ->withScanDirectories(['src']) // 扫描 src 目录
        ->discover(); // 运行发现过程
    
    // 运行服务器,使用 stdio 传输
    $exitCode = $server->run('stdio');
    
    exit($exitCode);
  4. 配置客户端: 按照上面“服务器配置”的说明,在你的 MCP 客户端中配置启动 'mcp-server.php' 脚本的命令。

  5. 连接客户端: 启动客户端,它将连接到你的 MCP 服务器,发现你定义的 'simple_add' 工具等,然后在 LLM 界面中即可使用这些功能。

信息

分类

AI与计算