1. Go to this page and download the library: Download vielhuber/simplemcp 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 vielhuber\simplemcp\simplemcp;
new simplemcp(
name: 'my-mcp-server',
log: 'mcp-server.log',
discovery: '.',
auth: 'static', // 'static'|'totp'
env: '.env'
);
use vielhuber\simplemcp\Attributes\McpTool;
use vielhuber\simplemcp\Attributes\Schema;
class MyTools
{
/**
* Returns the sum of two numbers.
*
* @return int
*/
#[McpTool(name: 'add', description: 'Returns the sum of two numbers.')]
public function add(int $a, int $b): int
{
return $a + $b;
}
/**
* Greets a person by name.
*
* @return string
*/
#[McpTool]
public function greet(
#[Schema(type: 'string', description: 'The name to greet.')]
string $name
): string {
return "Hello, {$name}!";
}
/**
* Finds a user by their ID.
*
* @param int $user_id The unique ID of the user.
*
* @return array{id: int, name: string, email: string} The user data.
*
* @throws \RuntimeException If the user ID is invalid or the user does not exist.
*
*/
#[McpTool(name: 'get_user')]
public function getUser(int $user_id): array
{
if ($user_id <= 0) {
throw new \RuntimeException('User ID must be a positive integer.');
}
$user = db_fetch_row('SELECT * FROM users WHERE ID = ?', $user_id);
if ($user === null) {
throw new \RuntimeException(sprintf('User with ID %d does not exist.', $user_id));
}
return ['id' => $user->ID, 'name' => $user->name, 'email' => $user->email];
}
}
sh
php -r '$b="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";$r=random_bytes(20);$bits="";for($i=0;$i<20;$i++){$bits.=str_pad(decbin(ord($r[$i])),8,"0",STR_PAD_LEFT);}$s="";for($i=0;$i+5<=strlen($bits);$i+=5){$s.=$b[bindec(substr($bits,$i,5))];}echo "MCP_TOKEN=".$s.PHP_EOL;' > .env