项目简介

MCP PHP SDK 是一个用于构建 Model Context Protocol (MCP) 服务器和客户端的 PHP 库。它旨在帮助开发者以标准化的方式为大型语言模型(LLM)应用提供上下文信息和功能。使用此 SDK,您可以轻松创建 MCP 服务器,对外暴露资源 (Resources)、工具 (Tools) 和 Prompt 模板 (Prompts),并通过 Stdio 和 SSE 等多种传输协议与 MCP 客户端进行通信。

主要功能点:

  • 资源 (Resources) 管理: 允许您托管和管理各种数据资源,并通过标准 URI 访问,为 LLM 提供上下文数据。
  • 工具 (Tools) 注册与执行: 支持注册外部功能为工具,并由 LLM 客户端按需调用,扩展 LLM 的能力边界。
  • Prompt 模板 (Prompts) 定义与渲染: 可以定义可复用的 Prompt 模板,定制 LLM 交互模式,优化用户体验。
  • 标准传输协议支持: 内置 Stdio 和 SSE 传输协议支持,方便集成到不同的应用场景。
  • JSON-RPC 通信: 基于 JSON-RPC 协议进行客户端与服务器通信,保证协议的标准化和易用性。
  • 会话管理和能力声明: 服务器端负责会话管理,并声明自身能力,方便客户端了解服务器功能。

安装步骤:

  1. 确保您的系统已安装 PHP 和 Composer。

  2. 在您的项目根目录下,打开终端并执行以下 Composer 命令安装 MCP PHP SDK:

    composer require huangdijia/mcp-sdk-php

服务器配置:

MCP 服务器需要配置启动命令和参数,以便 MCP 客户端能够连接。以下是一个示例 'servers' 配置,通常在 MCP 客户端的配置文件中使用(例如 VS Code 插件的 'mcp.servers' 配置)。

{
    "servers": {
        "my-mcp-server": {
            "command": "php",
            "args": [
                "[your-project-path]/examples/stdio-server.php"
            ],
            "env": {}
        }
    }
}

配置参数说明:

  • server name (my-mcp-server): 您为该 MCP 服务器配置指定的名称,客户端通过此名称引用服务器。可以自定义,例如 'my-php-mcp-server'。
  • command (php): 启动 MCP 服务器的命令,通常为 PHP 解释器的路径 ('php')。
  • args ([your-project-path]/examples/stdio-server.php): 传递给 'command' 的参数,指定 MCP 服务器脚本的路径。请将 '[your-project-path]' 替换为您实际的项目路径。 例如,如果 'stdio-server.php' 文件位于 '/home/user/my_project/examples/stdio-server.php',则应配置为 '"/home/user/my_project/examples/stdio-server.php"'。
  • env ({}): 可选的环境变量配置,默认为空。如果服务器需要特定的环境变量,可以在这里配置。

基本使用方法:

  1. 创建 MCP 服务器实例: 在 PHP 脚本中,使用 'McpServer' 类创建服务器实例,并配置服务器名称和版本等信息。
  2. 注册工具 (Tools): 使用 '$server->tool()' 方法注册工具,定义工具名称、处理函数和描述信息。处理函数接收客户端传递的参数,并返回包含 'content' 的数组作为工具执行结果。
  3. 注册资源 (Resources): 使用 '$server->resource()' 方法注册资源,定义资源名称、URI 模板和处理函数。处理函数根据 URI 和参数返回资源内容。
  4. 注册 Prompt (Prompts): 使用 '$server->prompt()' 方法注册 Prompt 模板,定义 Prompt 名称、处理函数和参数。
  5. 选择传输协议并连接: 根据需要选择 'StdioServerTransport' 或 'SseServerTransport',创建传输层实例,并通过 '$server->connect($transport)' 方法将服务器与传输层连接。
  6. 运行服务器脚本: 在终端中执行您的 PHP 服务器脚本,例如 'php examples/stdio-server.php'。
  7. 在 MCP 客户端配置并连接服务器: 在 MCP 客户端(例如 VS Code 插件)中,配置上面生成的 'servers' JSON,并连接到您配置的 MCP 服务器。

示例代码(基于 'examples/stdio-server.php'):

<?php

use ModelContextProtocol\SDK\Server\McpServer;
use ModelContextProtocol\SDK\Server\Transport\StdioServerTransport;
use ModelContextProtocol\SDK\Shared\ResourceTemplate;

// 创建 MCP 服务器
$server = new McpServer(['name' => 'Demo Server', 'version' => '1.0.0']);

// 添加加法工具
$server->tool('add', function (array $params) {
    return ['content' => [['type' => 'text', 'text' => (string)($params['a'] + $params['b'])]]];
});

// 添加问候资源
$server->resource('greeting', new ResourceTemplate('greeting://{name}'), function (string $uri, array $params) {
    return ['contents' => [['uri' => $uri, 'text' => "Hello, {$params['name']}!"]]];
});

// 启动 Stdio 传输
$transport = new StdioServerTransport();
$server->connect($transport);

更详细的使用方法和高级功能,请参考仓库的 README.md 文件和示例代码。

信息

分类

开发者工具