Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [v2] Мonorepo, `sdk-client`, `sdk-server`, `sdk-core` package split by KKonstantinov · Pull Request #1279 · modelcontextprotocol/typescript-sdk · GitHub
Skip to content

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split - #1279

Merged
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup
Dec 19, 2025
Merged

[v2] Мonorepo, sdk-client, sdk-server, sdk-core package split#1279
felixweinberger merged 61 commits into
modelcontextprotocol:mainfrom
KKonstantinov:feature/v2-monorepo-setup

Conversation

@KKonstantinov

@KKonstantinovKKonstantinov commented Dec 10, 2025

Copy link
Copy Markdown
Contributor

Proof of Concept: v2 monorepo, package split

Motivation and Context

v1 of the sdk shipped both client and server in the same package, introducing extra dependencies to users who have a single concern (client or server only). Client and server packages are now split, depending on a shared core package.

Additionally, v1 exported all files as the public API of the SDK, limiting the SDK ability to iterate internally while keeping backwards compatibility. Barrel files are now introduced as the single entrypoint to the SDK and defining the public API of the SDK.

  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown
  • updated docs

How Has This Been Tested?

Unit, integration tests

Breaking Changes

v2

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

@pkg-pr-new

pkg-pr-newBot commented Dec 10, 2025

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/client@1279
npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/server@1279

commit: c3b1a40

@KKonstantinovKKonstantinov added the v2 Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes label Dec 10, 2025
@KKonstantinovKKonstantinov self-assigned this Dec 10, 2025

@felixweinbergerfelixweinberger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way we can break this PR up somehow so that this is more reviewable? E.g. with using git mv to preserve history and provenance of files? As it is it'll be quite hard to verify correctness of the split.

@KKonstantinov

KKonstantinov commented Dec 12, 2025

Copy link
Copy Markdown
ContributorAuthor

EDITs:

  • Provenance / history retained (except 3-4 files, will review them and bring it to them as well)
  • Dropped Node v18
  • Dropped CommonJS (ESM only)
  • Updated tsgo to one of the latest versions
  • Bumped the ts version
  • Added eslint import rules to tidy up imports
  • cleaned-up package.json files - client-sdk and server-sdk ship with the minimum required dependencies (as opposed to v1, which shipped server deps if you were only interested in the client and vice versa
  • introduce catalogs for reusing dep versions
  • bundling tool change - tsdown as per @mattzcarey
  • updated docs

TODOs still:

  • test(18) check - no code change, repository config -> needs to be removed as required check from branch rulesets, and replaced with test(20)

@KKonstantinovKKonstantinov added this to the v2 milestone Dec 12, 2025
@KKonstantinovKKonstantinov linked an issue Dec 12, 2025 that may be closed by this pull request
Closed
23 tasks
mozmo15 pushed a commit to mozmo15/typescript-sdk that referenced this pull request Mar 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2Ideas, requests and plans for v2 of the SDK which will incorporate major changes and fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ESM only (if feasible) Publish separate client and server packages SDK V2

3 participants

@KKonstantinov@mattzcarey@felixweinberger