PHP MCP Client v1.0.0 发布:为 PHP 应用接入 AI 工具打开新大门
随着 Model Context Protocol(MCP)在 AI 开发领域的广泛应用,PHP 开发者终于迎来了官方支持。PHP MCP Client v1.0.0 的发布,标志着 PHP 应用可以轻松接入 Claude、OpenAI 等 LLM 模型,调用外部工具、资源和提示,构建强大的 AI 工作流。
什么是 MCP?
MCP(Model Context Protocol)是由 Anthropic 推出的开放协议,旨在标准化 AI 模型与外部数据源、API 和工具的交互方式。它为 AI 应用提供了统一的通信层,使得模型能够安全地访问不同服务器提供的上下文并与之交互。([GitHub][1])
MCP 的核心理念是建立一个标准化的通信层,使得 LLMs 能够在处理用户请求或执行任务时,如果需要访问外部信息或功能,可以通过 MCP 客户端向 MCP 服务器发送请求。MCP 服务器则负责与相应的外部数据源或工具进行交互,获取数据并按照 MCP 协议规范进行格式化,最后将格式化后的数据返回给 LLM。([维基百科,自由的百科全书][2])
PHP MCP Client 的主要特性
✅ 一对一连接模型
每个 Client 实例管理与单个配置好的 MCP 服务器的有状态连接,符合 MCP 规范。
✅ 支持多种传输方式
- stdio:通过标准输入/输出与服务器进程通信。
- http+sse:通过 HTTP POST 和服务器发送事件(SSE)与服务器通信。
✅ 双 API 设计
- 同步 API:使用简单的阻塞方法(如
$client->listTools()
、$client->callTool(...)
)与服务器交互,便于简单集成。 - 异步 API:访问底层基于 Promise 的方法(如
$client->listToolsAsync()
、$client->callToolAsync(...)
),用于并发操作和与异步 PHP 应用集成。
✅ 强大的错误处理机制
针对不同的失败模式提供特定的异常,确保应用的稳定性。
✅ 符合 PSR 标准
- PSR-3(LoggerInterface):集成应用程序的日志记录器。
- PSR-16(SimpleCacheInterface):可选的服务器定义缓存。
- PSR-14(EventDispatcherInterface):通过事件(需要异步处理)可选地处理服务器发送的通知。([博客园][3])
快速上手:连接本地文件系统服务器
以下示例展示了如何连接到通过 npx
运行的本地文件系统服务器:
require 'vendor/autoload.php';
use PhpMcp\Client\Client;
use PhpMcp\Client\Enum\TransportType;
use PhpMcp\Client\Model\Capabilities as ClientCapabilities;
use PhpMcp\Client\ServerConfig;
use PhpMcp\Client\Exception\McpClientException;
$clientCapabilities = ClientCapabilities::forClient(); // 默认客户端功能
$userHome = $_SERVER['HOME'] ?? $_SERVER['USERPROFILE'] ?? getcwd();
$fsServerConfig = new ServerConfig(
name: 'local_filesystem',
transport: TransportType::Stdio,
timeout: 15,
command: 'npx',
args: [
'-y',
'@modelcontextprotocol/server-filesystem',
$userHome . '/Documents',
],
workingDir: $userHome
);
$fsClient = Client::make()
->withClientInfo('MyFileSystemApp', '1.0')
->withCapabilities($clientCapabilities)
->withServerConfig($fsServerConfig)
->build();
try {
// 初始化连接(阻塞)
$fsClient->initialize();
// 同步交互
$tools = $fsClient->listTools(); // 阻塞调用
foreach ($tools as $tool) {
echo "- Tool: {$tool->name}\n";
}
//... 调用其他方法,如 $fsClient->callTool(...)...
} catch (McpClientException $e) {
echo "[MCP ERROR] " . get_class($e) . ": " . $e->getMessage() . "\n";
// 检查 $e->getPrevious() 获取底层传输/进程错误
} catch (\Throwable $e) {
echo "[UNEXPECTED ERROR] " . $e->getMessage() . "\n";
} finally {
// 断开连接(阻塞)
if (isset($fsClient)) {
$fsClient->disconnect();
}
}
应用场景
PHP MCP Client 的发布为 PHP 开发者打开了接入 AI 工具的新大门,适用于以下场景:
- AI 助手:构建能够访问外部工具和资源的智能助手。
- 内容创作:集成提示和资源,提升内容生成效率。
- 数据分析:调用外部工具进行数据处理和分析。
- 自动化工作流:结合异步 API,实现复杂的自动化任务。
结语
PHP MCP Client v1.0.0 的发布,标志着 PHP 在 AI 应用开发领域迈出了重要一步。通过支持 MCP 协议,PHP 应用可以更加轻松地接入和管理 AI 工具,构建强大的智能应用。([维基百科,自由的百科全书][2])
更多信息,请访问 Model Context Protocol 官方网站 和 GitHub 仓库。([Model Context Protocol][4])