php-sdk/examples/server
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Mateu Aguiló Bosch 73e4cc2456
style: apply php-cs-fixer and PHPStan fixes (#289)
* style: apply php-cs-fixer to test files

Addresses drift flagged by the default PHP-CS-Fixer config — mostly
adds missing `: void` return types on pre-existing test methods.

No behavioural changes.

* fix: resolve phpstan errors surfaced by qa

- Drop the obsolete `Method ::test*() has no return type specified`
  ignore rule — every test method now declares a return type, so
  the pattern never matches and phpstan reports it as unmatched.
- Remove `?? []` from two reads of `CallToolRequest::$arguments`;
  the property is typed `array` (non-nullable), so the coalesce is
  a no-op that phpstan flags.

---------

Co-authored-by: DDEV User <nobody@example.com>
2026-04-20 20:49:15 +02:00
..
cached-discovery Move examples to server directory (#198) 2025-12-27 15:39:05 +01:00
client-communication [Client] Feat: Implement MCP client component (#192) 2026-03-10 17:22:40 +01:00
client-logging Move examples to server directory (#198) 2025-12-27 15:39:05 +01:00
combined-registration Move examples to server directory (#198) 2025-12-27 15:39:05 +01:00
complex-tool-schema Use SchemaValidator to validate tool input (#203) 2026-01-11 21:46:53 +01:00
custom-dependencies Update codestyle based on updated Symfony rules (#229) 2026-02-01 11:54:31 +01:00
custom-method-handlers style: apply php-cs-fixer and PHPStan fixes (#289) 2026-04-20 20:49:15 +02:00
discovery-calculator Move examples to server directory (#198) 2025-12-27 15:39:05 +01:00
discovery-userprofile Update codestyle based on updated Symfony rules (#229) 2026-02-01 11:54:31 +01:00
elicitation Add elicitation support for server-to-client user input requests (#228) 2026-02-15 23:34:19 +01:00
env-variables Update codestyle based on updated Symfony rules (#229) 2026-02-01 11:54:31 +01:00
explicit-registration Move examples to server directory (#198) 2025-12-27 15:39:05 +01:00
oauth-keycloak [Server] Oauth2 based on middleware (#221) 2026-03-10 17:10:07 +01:00
oauth-microsoft [Server] feat: relax StrictOidcDiscoveryMetadataPolicy and add Dynamic Client Registration middleware (RFC 7591) (#269) 2026-04-11 17:27:27 +02:00
schema-showcase Update codestyle based on updated Symfony rules (#229) 2026-02-01 11:54:31 +01:00
bootstrap.php [Client] Feat: Implement MCP client component (#192) 2026-03-10 17:22:40 +01:00
README.md [Client] Feat: Implement MCP client component (#192) 2026-03-10 17:22:40 +01:00

MCP SDK Examples

This directory contains various examples of how to use the PHP MCP SDK.

You can run the examples with the dependencies already installed in the root directory of the SDK. The bootstrapping of the example will choose the used transport based on the SAPI you use.

For running an example, you execute the server.php like this:

# For using the STDIO transport:
php examples/server/discovery-calculator/server.php

# For using the Streamable HTTP transport:
php -S localhost:8000 examples/server/discovery-userprofile/server.php

You will see debug outputs to help you understand what is happening.

Run with Inspector:

npx @modelcontextprotocol/inspector php examples/server/discovery-calculator/server.php

Debugging

You can enable debug output by setting the DEBUG environment variable to 1, and additionally log to a file by setting the FILE_LOG environment variable to 1 as well. A dev.log file gets written within the example's directory.

With the Inspector you can set the environment variables like this:

npx @modelcontextprotocol/inspector -e DEBUG=1 -e FILE_LOG=1 php examples/server/discovery-calculator/server.php