php mcp客户端连接需要oauth的远程服务时,可把oauth认证器传给httptransport。sdk在服务端返回401或相关403挑战后读取元数据并执行授权码加pkce流程;命令行应用默认通过本机回环地址接收浏览器回调,需要可用的本地浏览器和端口。

MCP PHP SDK官方OAuth客户端连接示例
准备客户端依赖
composer require mcp/sdk symfony/http-client nyholm/psr7
使用PHP 8.2或更高版本。将以下代码保存为client.php,先把示例地址替换为真正支持所需OAuth流程的MCP HTTPS服务;不需要令牌的服务不会因为配置auth就强制弹出授权。
<?php require __DIR__.'/vendor/autoload.php';
use Mcp\Client\Client;
use Mcp\Client\Auth\OAuth;
use Mcp\Client\Auth\FileCredentialStorage;
use Mcp\Client\Transport\HttpTransport;
$home = getenv('HOME');
if (!$home) { throw new RuntimeException('请显式配置私有凭据目录'); }
$auth = OAuth::forApplication('My MCP CLI')
->setCredentialStorage(new FileCredentialStorage($home.'/.config/my-mcp/credentials.json'))
->build();
$client = Client::builder()->setClientInfo('My MCP CLI', '1.0.0')->build();
$client->connect(new HttpTransport('https://mcp.example.com/mcp', auth: $auth));
echo "连接已建立\n";
完成浏览器回调
在命令行运行php client.php,按SDK显示的授权地址登录并确认实际服务要求的范围。默认回调为http://127.0.0.1:8765/callback;端口被占用时,用setRedirectUri调整,并同步满足授权服务器的回调要求。SDK检查state和iss,不应手动删除这些参数或关闭校验。

MCP PHP SDK官方凭据持久化与回调说明
保护本地令牌并区分运行环境
FileCredentialStorage可跨次运行保留令牌,但内容未加密。SDK创建的文件权限为0600、目录为0700,应放在Web根目录外并限制其他账户读取;Windows上也应选仅当前用户可访问的位置。远程终端可用ConsoleAuthorizationHandler,Web应用则需独立的重定向与回调流程,不能直接依赖本机回环监听。
元数据、issuer或服务地址校验失败时,检查真实服务器配置和授权范围,不改为跳过验证。访问令牌到期后,SDK可按服务端能力刷新或重新授权;持久化存储不代表令牌永久有效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











