1. Go to this page and download the library: Download ronydebnath/mcp-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Ronydebnath\MCP\Client\MCPClient;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
class YourController
{
public function __construct(private MCPClient $client)
{}
public function handle()
{
$message = new Message(
role: Role::USER,
content: 'Hello, how are you?',
type: 'text'
);
$response = $this->client->send($message);
}
}
use Ronydebnath\MCP\Facades\MCP;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
$message = new Message(
role: Role::USER,
content: 'Hello, how are you?',
type: 'text'
);
$response = MCP::send($message);
use Ronydebnath\MCP\Client\MCPClient;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
$messages = [
new Message(role: Role::USER, content: 'First message', type: 'text'),
new Message(role: Role::USER, content: 'Second message', type: 'text'),
];
$responses = $client->sendMultiple($messages);
use Ronydebnath\MCP\Client\StreamingMCPClient;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
// Using Dependency Injection
class YourController
{
public function __construct(private StreamingMCPClient $client)
{}
public function handle()
{
$message = new Message(
role: Role::USER,
content: 'Hello, how are you?',
type: 'text'
);
$this->client->stream($message, function ($chunk) {
// Handle each chunk of the response
echo $chunk['content'];
});
}
}
// Using the Facade
MCP::stream($message, function ($chunk) {
echo $chunk['content'];
});
// Streaming multiple messages
$messages = [
new Message(role: Role::USER, content: 'First message', type: 'text'),
new Message(role: Role::USER, content: 'Second message', type: 'text'),
];
$client->streamMultiple($messages, function ($chunk) {
echo $chunk['content'];
});
use Ronydebnath\MCP\Server\MCPServer;
Route::post('/mcp', function (Request $request, MCPServer $server) {
return $server->handle($request);
});
use Ronydebnath\MCP\Server\MCPServer;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
$server->registerHandler('text', function (Message $message) {
return [
'role' => Role::ASSISTANT->value,
'content' => 'This is a response to: ' . $message->content,
'type' => 'text',
];
});
use Ronydebnath\MCP\Server\Auth\AuthMiddleware;
use Ronydebnath\MCP\Server\Auth\AuthProvider;
// Generate a token
$token = $authProvider->generateToken();
// Register the authentication middleware
$server->registerMiddleware(function ($request) use ($authMiddleware) {
return $authMiddleware->handle($request);
});
use Ronydebnath\MCP\Shared\Memory;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
$memory = app(Memory::class);
// Add messages to memory
$memory->add(new Message(
role: Role::USER,
content: 'Hello',
type: 'text'
));
// Get messages by role
$userMessages = $memory->getByRole(Role::USER);
// Get messages by type
$textMessages = $memory->getByType('text');
// Clear memory
$memory->clear();
use Ronydebnath\MCP\Shared\Context;
use Ronydebnath\MCP\Types\Message;
use Ronydebnath\MCP\Types\Role;
$context = app(Context::class);
// Set context data
$context->set('user_id', 123);
$context->set('preferences', ['theme' => 'dark']);
// Add messages to context
$context->addMessage(new Message(
role: Role::USER,
content: 'Hello',
type: 'text'
));
// Get context data
$userId = $context->get('user_id');
$messages = $context->getMessages();
// Clear context
$context->clear();
use Ronydebnath\MCP\Shared\Progress;
$progress = app(Progress::class);
// Update progress
$progress->update(50, 'Processing...', ['step' => 'analysis']);
// Increment progress
$progress->increment(10, 'Moving to next step');
// Get progress information
$percentage = $progress->getPercentage();
$status = $progress->getStatus();
$metadata = $progress->getMetadata();
// Check if complete
if ($progress->isComplete()) {
// Handle completion
}
// Reset progress
$progress->reset();