项目简介
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 协议进行客户端与服务器通信,保证协议的标准化和易用性。
- 会话管理和能力声明: 服务器端负责会话管理,并声明自身能力,方便客户端了解服务器功能。
安装步骤:
-
确保您的系统已安装 PHP 和 Composer。
-
在您的项目根目录下,打开终端并执行以下 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 ({}): 可选的环境变量配置,默认为空。如果服务器需要特定的环境变量,可以在这里配置。
基本使用方法:
- 创建 MCP 服务器实例: 在 PHP 脚本中,使用 'McpServer' 类创建服务器实例,并配置服务器名称和版本等信息。
- 注册工具 (Tools): 使用 '$server->tool()' 方法注册工具,定义工具名称、处理函数和描述信息。处理函数接收客户端传递的参数,并返回包含 'content' 的数组作为工具执行结果。
- 注册资源 (Resources): 使用 '$server->resource()' 方法注册资源,定义资源名称、URI 模板和处理函数。处理函数根据 URI 和参数返回资源内容。
- 注册 Prompt (Prompts): 使用 '$server->prompt()' 方法注册 Prompt 模板,定义 Prompt 名称、处理函数和参数。
- 选择传输协议并连接: 根据需要选择 'StdioServerTransport' 或 'SseServerTransport',创建传输层实例,并通过 '$server->connect($transport)' 方法将服务器与传输层连接。
- 运行服务器脚本: 在终端中执行您的 PHP 服务器脚本,例如 'php examples/stdio-server.php'。
- 在 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 文件和示例代码。
信息
分类
开发者工具