PHP code example of dv-team / mcp-server
1. Go to this page and download the library: Download dv-team/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/ */
dv-team / mcp-server example snippets
$files = [
__DIR__ . '/../prompts/email--basic-rules.md',
__DIR__ . '/../prompts/behaviour--basic-rules.md'
];
$responseHandler = new StdoutResponseHandler();
$server = new MCPServer('Prompt provider example', $responseHandler);
foreach($files as $file) {
$document = YamlFrontMatter::parseFile($file);
/** @var string $name */
$name = $document->matter('name');
/** @var string $prompt */
$prompt = $document->matter('prompt');
/** @var string $description */
$description = $document->matter('description');
$server->registerPrompt(
name: $name,
description: $prompt,
arguments: new MCPPromptArguments(),
handler: function () use ($description, $document) {
return new MCPPromptResult(
description: $description,
messages: [new PromptResultStringMessage(
role: RoleEnum::User,
content: $document->body()
)]
);
}
);
}
$server->registerTool(
name: 'echo_text',
description: 'Echoes back the provided text.',
inputSchema: new MCPToolInputSchema(
properties: new MCPToolProperties(
new MCPToolString(name: 'text', description: 'Text to echo', echo' => (string) ($input->text ?? '')],
isError: false
);
}
);
$server->registerTool(
name: 'sum_numbers',
description: 'Adds two integers together.',
inputSchema: new MCPToolInputSchema(
properties: new MCPToolProperties(
new MCPToolInteger(name: 'a', description: 'First addend', es: new MCPToolProperties(
new MCPToolString(name: 'to', description: 'The recipient email address', APED_UNICODE | JSON_THROW_ON_ERROR);
error_log($json);
return new MCPToolResult(
content: ['result' => 'Email queued!'],
isError: false
);
}
);
use McpSrv\Common\Attributes\MCPDescription;
use McpSrv\Common\Attributes\MCPTool;
use McpSrv\Common\Tools\AttributeToolRegistrar;
use McpSrv\MCPServer;
class MathTools {
#[MCPTool(
name: 'add_numbers',
description: 'Adds two integers together.',
parametersSchema: [
'type' => 'object',
'properties' => [], // left empty; types/CPDescription('First addend')]
int $a,
#[MCPDescription('Second addend')]
int $b
): array {
return ['sum' => $a + $b];
}
}
$server = new MCPServer('attribute-sample', $responseHandler);
$registrar = new AttributeToolRegistrar();
$registrar->register(new MathTools(), $server);
bash
npx -y supergateway --stdio "php cli.php" --outputTransport streamableHttp --port 8000
bash
cd src-http
bun install
MCP_CLI_CMD="php ../cli.php" bun run start
bash
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"cli","version":"0.0"}}}' | php examples/src/prompts-and-tools-cli.php