php程序可以使用mcp sdk作为客户端连接已有工具服务,读取工具清单后发起调用。这与编写服务端属于不同任务:客户端主要关注服务进程、初始化握手、请求超时,以及失败后能否安全重试。
配置连接与响应等待
安装mcp/sdk后,通过Mcp\Client::builder设置客户端信息。setInitTimeout控制连接等待,setRequestTimeout控制响应等待,setMaxRetries控制连接失败后的重试次数。
官方默认连接重试次数为3,表示首次尝试之外最多再试3次,不是总共只连接3次。该设置也不表示每次业务工具调用都会自动重跑。

官方PHP客户端连接、工具调用及释放示例
连接后核对工具输入
本地STDIO连接需要提供php命令和服务脚本路径。完成connect后,用listTools核对公开工具名与输入结构,再调用callTool,结束后disconnect。远程服务按官方HTTP传输文档配置,不能只把本地脚本路径换成网址。
在服务脚本已提供add工具、参数为a与b的前提下,可用下面的客户端脚本调用。先在项目中安装mcp/sdk,并把server.php路径改为实际服务文件:
<?php require __DIR__ . '/vendor/autoload.php';
use Mcp\Client;
use Mcp\Client\Transport\StdioTransport;
$client = Client::builder()
->setClientInfo('BusinessSite', '1.0.0')
->setInitTimeout(30)
->setRequestTimeout(120)
->setMaxRetries(3)
->build();
$client->connect(new StdioTransport(
command: 'php',
args: [__DIR__ . '/server.php']
));
$tools = $client->listTools();
$result = $client->callTool('add', ['a' => 4, 'b' => 8]);
$client->disconnect();
业务请求失败不能无条件重发
SDK文档明确,重试设置只作用于连接握手,callTool等单次请求只发送一次。工具可能写入文件或业务数据,超时后应先确认服务端是否已经执行,再判断工具是否允许重复调用。连接成功只表示协议建立,不代表每个业务操作都成功。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











