1. Go to this page and download the library: Download ldkafka/yii3-mcp-server 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/ */
ldkafka / yii3-mcp-server example snippets
use YiiMcp\McpServer\Command\McpCommand;
return [
'hello' => Console\HelloCommand::class,
'mcp:serve' => McpCommand::class, // Add this line
];
declare(strict_types=1);
use YiiMcp\McpServer\McpServer;
return [
McpServer::class => static fn() => new McpServer([
// Add your tool instances here
// new MyCustomTool(),
]),
];
declare(strict_types=1);
$params = [];
// Load local params if exists (gitignored credentials)
$localParams = __DIR__ . '/params.local.php';
if (file_exists($localParams)) {
$params = array_merge($params,
#!/usr/bin/env php
declare(strict_types=1);
// Default to 'dev' if APP_ENV not set (for Docker environments)
if (empty($_ENV['APP_ENV']) && empty(getenv('APP_ENV'))) {
putenv('APP_ENV=dev');
$_ENV['APP_ENV'] = 'dev';
}
use YiiMcp\McpServer\Contract\McpToolInterface;
class MyCustomTool implements McpToolInterface
{
public function getName(): string
{
return 'my_custom_tool';
}
public function getDescription(): string
{
return 'Does something useful for AI assistants';
}
public function getInputSchema(): array
{
return [
'type' => 'object',
'properties' => [
'input' => ['type' => 'string', 'description' => 'Input parameter'],
],
'
return [
McpServer::class => static fn() => new McpServer([
new MyCustomTool(),
]),
];
use YiiMcp\McpServer\Contract\McpToolInterface;
use Yiisoft\Db\Connection\ConnectionInterface;
class MysqlQueryTool implements McpToolInterface
{
public function __construct(private ConnectionInterface $db) {}
public function getName(): string {
return 'query_database';
}
public function getDescription(): string {
return 'Execute read-only SQL queries';
}
public function getInputSchema(): array {
return [
'type' => 'object',
'properties' => [
'sql' => ['type' => 'string', 'description' => 'SQL SELECT query']
],
'
use YiiMcp\McpServer\Contract\McpToolInterface;
class MyCustomTool implements McpToolInterface
{
public function getName(): string {
return 'my_tool';
}
public function getDescription(): string {
return 'What this tool does for the AI';
}
public function getInputSchema(): array {
return [
'type' => 'object',
'properties' => [
'param' => ['type' => 'string']
]
];
}
public function execute(array $args): array {
// Your logic here
return [
'content' => [
['type' => 'text', 'text' => 'Result data']
]
];
}
}