modelcontextprotocol / modelcontextprotocol/php-sdk

Slicing the SDK into Multiple Packages

Open
#489 3 comments 3 reactions 1 assignee View on GitHub

@chr-hertel is already working on this.

Since Aug 29, 2026.

needs confirmation needs maintainer action
Dominant language
PHP
Stars
1.6k
Forks
173
Avg merge
2d 49m
Merged PRs (30d)
23

Description

Package slicing

It was discussed already before and we should get this sorted before tagging v1.0: Slicing the monolithic mcp/sdk package into multiple packages.

At least the following packages make sense to me:

  • mcp/client
  • mcp/schema
  • mcp/server

Unclear to me right now: how to deal with extensions? But that's not blocking.

Namespaces

In my understanding this comes with some major shifts in namespaces:
everything that is under Mcp\* needs to go into one of those:

  • Mcp\Client\*
  • Mcp\Schema\*
  • Mcp\Server\*

Exceptions would get distributed into three namespaces below that - with one central interface each.

Monorepo + Subtree Splits

Development (incl. issues and PRs), docs, examples and releases would still happen via the main repository https://github.com/modelcontextprotocol/php-sdk, but the tree packages split into read-only subtrees:

=> meaning PRs only hit modelcontextprotocol/php-sdk and versioning across all packages is synced.

Cross Dependencies
Decoupling namespaces might be the annoying change here, but we should slice cleanly and enforce proper inter-dependencies:

  • Client can use Schema, but not Server
  • Server can use Schema, but not Client
  • Schema mustn't use Client nor Server

Maybe deptrac or similar to enforce.


This is a maintainer issue - community contributions won't be accepted but closed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.