The official PHP SDK for Model Context Protocol (MCP). It provides a framework-agnostic API for implementing MCP servers in PHP.
Important
Currently, we are still in the process of merging Symfony's MCP SDK and PHP-MCP components. Not all code paths are fully tested or complete, and this package may still contain duplicate functionality or dead code.
If you want to help us stabilize the SDK, please see the issue tracker.
This project is a collaboration between the PHP Foundation and the Symfony project. It adopts development practices and standards from the Symfony project, including Coding Standards and the Backward Compatibility Promise.
Until the first major release, this SDK is considered experimental.
Features
- Bring back PHP-MCP examples
- Glue handler, registry and reference handlers
- Revive
ServerBuilder
- Revive transports
- Support pagination
- Support Schema validation
- Support multiple versions of the MCP specification #14
- (Re-)Implement missing Notification & Request Handlers #9
Examples working
- 01-discovery-stdio-calculator
- 02-discovery-http-userprofile
- 03-manual-registration-stdio
- 04-combined-registration-http
- 05-stdio-env-variables
- 06-custom-dependencies-stdio
- 07-complex-tool-schema-http
- 08-schema-showcase-streamable
- 09-standalone-cli
composer require mcp/sdk
Since this package has no tagged releases yet, it is required to extend your composer.json
:
"minimum-stability": "dev",
"prefer-stable": true
This example demonstrates the most common usage pattern - a stdio
server using attribute discovery.
1. Define Your MCP Elements
Create src/CalculatorElements.php
:
<?php
namespace App;
use Mcp\Capability\Attribute\McpTool;
class CalculatorElements
{
#[McpTool(name: 'add_numbers')]
public function add(int $a, int $b): int
{
return $a + $b;
}
}
2. Create the Server Script
Create mcp-server.php
:
#!/usr/bin/env php
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Mcp\Server;
use Mcp\Server\Transport\StdioTransport;
Server::make()
->withServerInfo('Stdio Calculator', '1.1.0', 'Basic Calculator over STDIO transport.')
->withDiscovery(__DIR__, ['.'])
->build()
->connect(new StdioTransport());
3. Configure Your MCP Client
Add to your client configuration (e.g., mcp.json
):
{
"mcpServers": {
"php-calculator": {
"command": "php",
"args": ["/absolute/path/to/your/mcp-server.php"]
}
}
}
4. Test the Server
Your AI assistant can now call:
add_numbers
- Add two integers
- SDK documentation
- Model Context Protocol documentation
- Model Context Protocol specification
- Officially supported servers
We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. See the contributing guide to get started before you report issues and send pull requests.
The starting point for this SDK was the PHP-MCP project, initiated by Kyrian Obikwelu. We are grateful for the work done by Kyrian and other contributors to that repository, which created a solid foundation for this SDK.
This project is licensed under the MIT License - see the LICENSE file for details.