fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mattzcarey@pcarleton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mattzcarey@pcarleton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mattzcarey@pcarleton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mattzcarey@pcarleton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix: prevent Hono from overriding global Response object (v1.x) - #1411

Merged
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1
Jan 20, 2026
Merged

fix: prevent Hono from overriding global Response object (v1.x)#1411
mattzcarey merged 3 commits into
v1.xfrom
fix/hono-override-global-objects-v1

Conversation

@mattzcarey

@mattzcareymattzcarey commented Jan 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pass overrideGlobalObjects: false to getRequestListener() calls in StreamableHTTPServerTransport
  • Prevents Hono from overwriting the global Response object
  • Adds tests to verify global Response is preserved after transport initialization

Problem

When StreamableHTTPServerTransport is instantiated, Hono's getRequestListener() overwrites the global Response object with its own implementation (by default). This breaks frameworks like Next.js whose NextResponse class extends the native Response, causing instanceof Response checks to fail.

Fixes#1369

Test plan

  • Added tests that verify global Response is not overwritten after transport construction
  • Added tests that verify global Response is not overwritten after handleRequest is called
  • All existing tests pass

@mattzcarey
mattzcarey requested a review from a team as a code ownerJanuary 20, 2026 10:57
@changeset-bot

changeset-botBot commented Jan 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3becbfc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new

pkg-pr-newBot commented Jan 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1411

commit: 3becbfc

Pass `overrideGlobalObjects: false` to `getRequestListener()` calls in
StreamableHTTPServerTransport to prevent Hono from overwriting the
global Response object.
This fixes an issue where frameworks like Next.js whose response classes
extend the native Response would break after initializing MCP transport,
as `instanceof Response` checks would fail.
Also bumps @hono/node-server to ^1.19.9.
Fixes#1369
@mattzcarey
mattzcareyforce-pushed the fix/hono-override-global-objects-v1 branch from 5cd5d70 to 223d7ffCompareJanuary 20, 2026 11:00
@mattzcarey
mattzcarey enabled auto-merge (squash) January 20, 2026 11:16
@mattzcarey
mattzcarey merged commit 6e8f7e1 into v1.xJan 20, 2026
7 checks passed
@mattzcarey
mattzcarey deleted the fix/hono-override-global-objects-v1 branch January 20, 2026 11:17
sgmakgg added a commit to boringstudio-org/mcp-gitea that referenced this pull request Mar 13, 2026
…#17)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [@modelcontextprotocol/sdk](https://modelcontextprotocol.io) ([source](https://github.com/modelcontextprotocol/typescript-sdk)) | dependencies | patch | [`1.25.2` → `1.25.3`](https://renovatebot.com/diffs/npm/@modelcontextprotocol%2fsdk/1.25.2/1.25.3) |
---
### Release Notes
<details>
<summary>modelcontextprotocol/typescript-sdk (@&#8203;modelcontextprotocol/sdk)</summary>
### [`v1.25.3`](https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v1.25.3)
[Compare Source](modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3)
#### What's Changed
- \[v1.x backport] Use correct schema for client sampling validation when tools are present by [@&#8203;olaservo](https://github.com/olaservo) in [#&#8203;1407](modelcontextprotocol/typescript-sdk#1407)
- fix: prevent Hono from overriding global Response object (v1.x) by [@&#8203;mattzcarey](https://github.com/mattzcarey) in [#&#8203;1411](modelcontextprotocol/typescript-sdk#1411)
**Full Changelog**: <modelcontextprotocol/typescript-sdk@v1.25.2...v1.25.3>
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NC4zIiwidXBkYXRlZEluVmVyIjoiNDIuOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: Renovate Bot <renovate@boringstudio.by>
Co-authored-by: ChubbChubbs <sgmakgg@gmail.com>
Reviewed-on: https://git.boringstudio.by/BoringStudio/mcp-gitea/pulls/17
Co-authored-by: boring-bot <bot@boringstudio.by>
Co-committed-by: boring-bot <bot@boringstudio.by>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mattzcarey@pcarleton