How modelcontextprotocol/php-sdk works
The MCP PHP SDK provides framework-agnostic client and server runtimes. Its central server workflow is to discover or register capabilities, dispatch incoming MCP requests to their handlers, and communicate over a transport; the client connects to an MCP server and exchanges requests and results. Sessions, stateless protocol support, authorization, notifications, and protocol schemas are supporting capabilities. Relationships are limited to those shown in the excerpts or stated in the README; unsampled subsystem links are documented or left unasserted.
Main entry points: Server.php Server entry · Client.php Client API · Transport STDIO and HTTP · Registry.php Capability registry
Components 22
Server runtime
- Server entry
src/Server.php - Server protocol
src/Server/Protocol.php - Request handlers
src/Server/Handler/Request - Session management
src/Server/Session/SessionManager.php - Session state
src/Server/Session/Session.php - Resource subscriptions
src/Server/Resource/SessionSubscriptionManager.php
Capabilities
- Capability attributes
src/Capability/Attribute/Schema.php - Capability discovery
src/Capability/Discovery - Capability registry
src/Capability/Registry.php - Capability invocation
src/Capability/Registry/ReferenceHandler.php
Client runtime
- Client API
src/Client.php - Client protocol
src/Client/Protocol.php - Client state
src/Client/State/ClientState.php
Protocol and state
- Stateless protocol
src/Server/Stateless/StatelessProtocol.php - Wire codecs
src/Server/Wire - JSON-RPC messages
src/Schema/JsonRpc - MCP schemas
src/Schema - Message factory
src/JsonRpc/MessageFactory.php
Transport and security
- STDIO and HTTP
src/Server/Transport - HTTP authorization
src/Server/Transport/Http/Middleware
Other components
- PHP application
- MCP server
Connections 25
- PHP application → Server entry: builds server
README.md - Server entry → Server protocol: connects
src/Server.php - Server entry → STDIO and HTTP: listens on
src/Server.php - Server entry → Stateless protocol: connects when supported
src/Server.php - PHP application → Capability discovery: configures discovery
README.md - Capability discovery → Capability registry: loads capabilities
src/Capability/Discovery/HandlerResolver.php - PHP application → Capability registry: registers capabilities
README.md - Capability attributes → Capability registry: describes capabilities
src/Capability/Registry.php - Server protocol → Request handlers: dispatches requests
- Request handlers → Capability registry: resolves capabilities
src/Server/Handler/Request/CallToolHandler.php - Request handlers → Capability invocation: invokes capability
src/Server/Handler/Request/CallToolHandler.php - Session management → Session state: manages sessions
src/Server/Session/SessionManager.php - Session state → Session management: reads and writes
src/Server/Session/Session.php - Resource subscriptions → Session state: tracks subscriptions
src/Server/Resource/SessionSubscriptionManager.php - STDIO and HTTP → HTTP authorization: may apply middleware
src/Server/Transport/Http/Middleware/ClientRegistrationMiddleware.php - Stateless protocol → Wire codecs: uses protocol revisions
- Server protocol → JSON-RPC messages: exchanges messages
- JSON-RPC messages → MCP schemas: carries MCP data
src/Schema/JsonRpc/Error.php - Message factory → JSON-RPC messages: creates messages
src/JsonRpc/MessageFactory.php - PHP application → Client API: builds client
README.md - Client API → Client protocol: sends requests
src/Client.php - Client API → STDIO and HTTP: connects through
- Client protocol → Client state: uses state
- Client API → MCP server: calls tools and reads resources
README.md - MCP server → STDIO and HTTP: communicates over
README.md