Skip to content

Repository files navigation

MCP PHP SDK

Latest Version CI PHP Version License

Server Conformance 2025-11-25 Client Conformance 2025-11-25 Server Conformance 2026-07-28 Client Conformance 2026-07-28

The official PHP SDK for the Model Context Protocol (MCP). It provides a framework-agnostic API for implementing MCP servers and clients in PHP — tools, resources, prompts, STDIO and HTTP transports, sessions, authorization, and both protocol eras (the initialize handshake and the stateless 2026-07-28 revision).

This project represents 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, please see the roadmap for planned next steps and features.

Installation

composer require mcp/sdk

Build a server

A server is a plain PHP class plus three lines of wiring:

use Mcp\Capability\Attribute\McpResource;
use Mcp\Capability\Attribute\McpTool;
use Mcp\Server;
use Mcp\Server\Transport\StdioTransport;

class Calculator
{
    /**
     * Adds two numbers.
     */
    #[McpTool]
    public function add(int $a, int $b): int
    {
        return $a + $b;
    }

    #[McpResource(uri: 'config://calculator/settings')]
    public function settings(): array
    {
        return ['precision' => 2];
    }
}

exit(Server::builder()
    ->setServerInfo('Calculator', '1.0.0')
    ->setDiscovery(__DIR__, ['.'], excludeDirs: ['vendor'])
    ->build()
    ->run(new StdioTransport()));

The walkthrough in First server explains each piece, and Try it with the Inspector shows it running.

Build a client

use Mcp\Client;
use Mcp\Client\Transport\StdioTransport;

$client = Client::builder()
    ->setClientInfo('My Application', '1.0.0')
    ->build();

$client->connect(new StdioTransport(command: 'php', args: ['/path/to/server.php']));

$tools = $client->listTools();
$result = $client->callTool('add', ['a' => 5, 'b' => 3]);

$client->disconnect();

See Connecting to a server for transports, timeouts, and the handlers that answer server-initiated requests.

Documentation

The full documentation is published at php.sdk.modelcontextprotocol.io.

  • Get started — Install the SDK and build your first server
  • Servers — Tools, resources, resource templates, prompts, and how to register them
  • Inside your handler — Talking back to the client, logging, and asking for input
  • Running your server — Server builder, STDIO and HTTP transports, framework integration, sessions, authorization
  • Clients — Client SDK for connecting to and communicating with MCP servers
  • Protocol versions — The two protocol eras, and what revision 2026-07-28 changed
  • Advanced — Events, protocol extensions (including MCP Apps), and custom message handlers
  • Examples — Runnable server and client examples
  • API Reference — Generated class reference

External Resources

PHP Libraries Using the MCP SDK

Building something on top of the SDK? Open a pull request to add it to this list.

Contributing

We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. Start by reporting issues or sending pull requests.

Credits

The starting point for this SDK was the PHP-MCP project, initiated by Kyrian Obikwelu, and the Symfony AI initiative. We are grateful for the work done by both projects and their contributors, which created a solid foundation for this SDK.

License

This project is licensed under the Apache License, Version 2.0 for new contributions, with existing code under the MIT License — see the LICENSE file for details.

About

The official PHP SDK for Model Context Protocol servers and clients. Maintained in collaboration with The PHP Foundation.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1.6k stars

Watchers

24 watching

Forks

Releases

Used by

Contributors

Languages