datashaman/claude-agent-sdk
PHP SDK for building autonomous agents powered by Claude
Platform-specific configuration:
{
"mcpServers": {
"claude-agent-sdk": {
"command": "npx",
"args": [
"-y",
"claude-agent-sdk"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
PHP SDK for building autonomous agents powered by Claude. This is the PHP equivalent of the official TypeScript and Python SDKs.
composer require datashaman/claude-agent-sdkuse DataShaman\Claude\AgentSdk\Claude;
foreach (Claude::query('What is PHP?') as $message) {
if ($message->type === 'content_block_delta' && isset($message->delta['text'])) {
echo $message->delta['text'];
}
}use DataShaman\Claude\AgentSdk\Claude;
use DataShaman\Claude\AgentSdk\ClaudeAgentOptions;
use DataShaman\Claude\AgentSdk\Enum\PermissionMode;
$options = ClaudeAgentOptions::create()
->model('claude-sonnet-4-6')
->maxTurns(5)
->systemPrompt('You are a helpful PHP expert.')
->permissionMode(PermissionMode::AcceptEdits);
foreach (Claude::query('Explain generators', $options) as $message) {
// Process streaming messages
}Define tools using PHP attributes:
use DataShaman\Claude\AgentSdk\Attribute\Tool;
use DataShaman\Claude\AgentSdk\Attribute\Parameter;
use DataShaman\Claude\AgentSdk\Claude;
use DataShaman\Claude\AgentSdk\ClaudeAgentOptions;
#[Tool(name: 'get_weather', description: 'Get current weather for a city')]
function getWeather(
#[Parameter(description: 'City name')]
string $city,
#[Parameter(description: 'Temperature unit', enum: ['celsius', 'fahrenheit'])]
string $unit = 'celsius',
): array {
// Your weather API logic here
return ['temp' => 22, 'unit' => $unit, 'city' => $city];
}
$options = ClaudeAgentOptions::create()
->tools(['getWeather']);
foreach (Claude::query('What is the weather in London?', $options) Loading reviews...