diff --git a/CHANGELOG.md b/CHANGELOG.md
index 82043c029b3b..55d4a2fc9d24 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,15 @@
+
+
+# 20.3.14 (2026-01-07)
+
+### @angular/cli
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ |
+| [ff366499e](https://github.com/angular/angular-cli/commit/ff366499eff87e9943e25904fd06d109a0fa0075) | fix | update dependency @modelcontextprotocol/sdk to v1.25.2 |
+
+
+
# 20.3.13 (2025-12-03)
diff --git a/package.json b/package.json
index 3a070036b09b..76d5deb23264 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/devkit-repo",
- "version": "20.3.13",
+ "version": "20.3.14",
"private": true,
"description": "Software Development Kit for Angular",
"keywords": [
diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel
index 8102d101e166..059426ca38d1 100644
--- a/packages/angular/build/BUILD.bazel
+++ b/packages/angular/build/BUILD.bazel
@@ -300,6 +300,10 @@ jasmine_test(
name = "dev-server_integration_tests",
size = "medium",
data = [":dev-server_integration_test_lib"],
+ env = {
+ # Force IPv4 to resolve RBE resolution issues
+ "NODE_OPTIONS": "--dns-result-order=ipv4first",
+ },
flaky = True,
shard_count = 10,
)
diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json
index 38a2e6e30394..fc2b2ad08b2c 100644
--- a/packages/angular/cli/package.json
+++ b/packages/angular/cli/package.json
@@ -27,7 +27,7 @@
"@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER",
"@inquirer/prompts": "7.8.2",
"@listr2/prompt-adapter-inquirer": "3.0.1",
- "@modelcontextprotocol/sdk": "1.24.0",
+ "@modelcontextprotocol/sdk": "1.25.2",
"@schematics/angular": "workspace:0.0.0-PLACEHOLDER",
"@yarnpkg/lockfile": "1.1.0",
"algoliasearch": "5.35.0",
diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel
index 459197eaf149..f2f5ea56ac77 100644
--- a/packages/angular_devkit/build_angular/BUILD.bazel
+++ b/packages/angular_devkit/build_angular/BUILD.bazel
@@ -425,6 +425,9 @@ LARGE_SPECS = {
"//modules/testing/builder:node_modules/@angular-devkit/build-angular",
],
env = {
+ # Force IPv4 to resolve RBE resolution issues
+ "NODE_OPTIONS": "--dns-result-order=ipv4first",
+
# TODO: Replace Puppeteer downloaded browsers with Bazel-managed browsers,
# or standardize to avoid complex configuration like this!
"PUPPETEER_DOWNLOAD_PATH": "../../../node_modules/puppeteer/downloads",
diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel
index f66ea94f1919..3a104c243a66 100644
--- a/packages/angular_devkit/build_webpack/BUILD.bazel
+++ b/packages/angular_devkit/build_webpack/BUILD.bazel
@@ -90,6 +90,10 @@ jasmine_test(
"//:node_modules/typescript",
"//:node_modules/zone.js",
],
+ env = {
+ # Force IPv4 to resolve RBE resolution issues
+ "NODE_OPTIONS": "--dns-result-order=ipv4first",
+ },
)
genrule(
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 927032edd4ae..52ad43d56188 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,7 +48,7 @@ importers:
version: 20.2.10(72d1932aa29c0670c8359e3ed8a5ff55)
'@angular/ng-dev':
specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b69a61793bd6ba935af262297688408d0b48252e
- version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))
+ version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.25.2(zod@4.1.13))
'@angular/platform-browser':
specifier: 20.3.7
version: 20.3.7(@angular/animations@20.3.7(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.7(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.1))
@@ -472,8 +472,8 @@ importers:
specifier: 3.0.1
version: 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.1)
'@modelcontextprotocol/sdk':
- specifier: 1.24.0
- version: 1.24.0(zod@4.1.13)
+ specifier: 1.25.2
+ version: 1.25.2(zod@4.1.13)
'@schematics/angular':
specifier: workspace:0.0.0-PLACEHOLDER
version: link:../../schematics/angular
@@ -2143,6 +2143,12 @@ packages:
'@hapi/bourne@3.0.0':
resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==}
+ '@hono/node-server@1.19.7':
+ resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==}
+ engines: {node: '>=18.14.1'}
+ peerDependencies:
+ hono: ^4
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -2541,8 +2547,8 @@ packages:
cpu: [x64]
os: [win32]
- '@modelcontextprotocol/sdk@1.24.0':
- resolution: {integrity: sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==}
+ '@modelcontextprotocol/sdk@1.25.2':
+ resolution: {integrity: sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==}
engines: {node: '>=18'}
peerDependencies:
'@cfworker/json-schema': ^4.1.1
@@ -6407,6 +6413,9 @@ packages:
json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ json-schema-typed@8.0.2:
+ resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==}
+
json-schema@0.4.0:
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
@@ -9399,11 +9408,11 @@ snapshots:
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))':
+ '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.25.2(zod@4.1.13))':
dependencies:
'@actions/core': 1.11.1
'@google-cloud/spanner': 8.0.0(supports-color@10.2.2)
- '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)
+ '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.25.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)
'@inquirer/prompts': 7.9.0(@types/node@24.9.1)
'@inquirer/type': 3.0.9(@types/node@24.9.1)
'@octokit/auth-app': 8.1.1
@@ -10738,12 +10747,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)':
+ '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.25.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)':
dependencies:
google-auth-library: 10.4.0(supports-color@10.2.2)
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
optionalDependencies:
- '@modelcontextprotocol/sdk': 1.24.0(zod@4.1.13)
+ '@modelcontextprotocol/sdk': 1.25.2(zod@4.1.13)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -10775,6 +10784,8 @@ snapshots:
'@hapi/bourne@3.0.0': {}
+ '@hono/node-server@1.19.7': {}
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.7':
@@ -11142,8 +11153,9 @@ snapshots:
'@lmdb/lmdb-win32-x64@3.4.2':
optional: true
- '@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)':
+ '@modelcontextprotocol/sdk@1.25.2(zod@4.1.13)':
dependencies:
+ '@hono/node-server': 1.19.7
ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1)
content-type: 1.0.5
@@ -11154,11 +11166,13 @@ snapshots:
express: 5.1.0
express-rate-limit: 7.5.1(express@5.1.0)
jose: 6.1.3
+ json-schema-typed: 8.0.2
pkce-challenge: 5.0.0
raw-body: 3.0.1
zod: 4.1.13
zod-to-json-schema: 3.25.0(zod@4.1.13)
transitivePeerDependencies:
+ - hono
- supports-color
'@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
@@ -15557,6 +15571,8 @@ snapshots:
json-schema-traverse@1.0.0: {}
+ json-schema-typed@8.0.2: {}
+
json-schema@0.4.0: {}
json-stable-stringify-without-jsonify@1.0.1: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index d1752e85bda6..554da06f4c78 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -23,6 +23,7 @@ minimumReleaseAge: 1440
minimumReleaseAgeExclude:
- '@angular-devkit/*'
- '@angular/*'
+ - '@modelcontextprotocol/sdk@1.25.2' # Fix: https://www.cve.org/CVERecord?id=CVE-2026-0621
- '@ngtools/webpack'
- '@schematics/*'
- 'ng-packagr'