Skip to content

MCP Gateway 0.6 blog post, inc mermaid plugin#89

Merged
david-martin merged 1 commit intomainfrom
mcp-gateway-0.6.0
Apr 20, 2026
Merged

MCP Gateway 0.6 blog post, inc mermaid plugin#89
david-martin merged 1 commit intomainfrom
mcp-gateway-0.6.0

Conversation

@david-martin
Copy link
Copy Markdown
Member

@david-martin david-martin commented Apr 17, 2026

Depends on Kuadrant/docs.kuadrant.io#234

Summary by CodeRabbit

Release Notes

  • New Features

    • Mermaid diagrams now render dynamically across the site.
  • Documentation

    • Published announcement for MCP Gateway 0.6 tech preview release, covering operator-based installation, horizontal scaling capabilities, and protocol elicitation support.

Signed-off-by: David Martin <davmarti@redhat.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 17, 2026

Deploy Preview for relaxed-faloodeh-7fa6f1 ready!

Name Link
🔨 Latest commit 7e7c65a
🔍 Latest deploy log https://app.netlify.com/projects/relaxed-faloodeh-7fa6f1/deploys/69e25ba532119c0007dbac18
😎 Deploy Preview https://deploy-preview-89--relaxed-faloodeh-7fa6f1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 17, 2026

📝 Walkthrough

Walkthrough

The changes add Mermaid diagram rendering support to the website and introduce a new blog post announcing the MCP Gateway 0.6 tech preview release, which includes details on Kubernetes operator installation, configuration updates, Redis-backed scaling, and protocol elicitation features.

Changes

Cohort / File(s) Summary
Mermaid Diagram Rendering
src/_includes/layout.njk
Added ES module script that imports Mermaid from CDN, initializes with startOnLoad: false, dynamically replaces code.language-mermaid elements with div.mermaid elements, and executes mermaid.run() to render diagrams.
MCP Gateway Release Announcement
src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md
New blog post documenting MCP Gateway 0.6 tech preview release, covering transition from dev preview, OLM-based Kubernetes operator integration with MCPGatewayExtension CRD, configuration changes, Redis-backed horizontal scaling, MCP protocol elicitation support, and community engagement links.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Mermaid flows now flutter on our pages bright,
As Gateway v0.6 takes its preview flight,
With operators and scaling, the plot does thicken,
The tech preview release makes our hearts quicken! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the two main changes: adding a blog post for MCP Gateway 0.6 and implementing a Mermaid plugin, matching the file modifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch mcp-gateway-0.6.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md (1)

7-9: Duplicate link to the same release page.

Line 7 links to the v0.6.0 release page twice in the same sentence ("0.6 tech preview release" and "0.6.0 release page"). Consider rewording so the second link points somewhere distinct (e.g. the changelog or milestone) or dropping the redundant link to tighten the intro.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md` around lines 7
- 9, The intro duplicates the same release URL for "0.6 tech preview release"
and "0.6.0 release page"; update the sentence so the second reference is not the
same link—either remove the second link and leave it as plain text, or point the
second link to a different resource (e.g., the changelog or milestone) instead.
Locate the sentence containing the phrases "0.6 tech preview release" and "0.6.0
release page" and replace the second occurrence of the
https://github.com/Kuadrant/mcp-gateway/releases/tag/v0.6.0 link with a unique
target or plain text to eliminate the duplicate link.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/_includes/layout.njk`:
- Around line 148-159: The loader unconditionally imports and runs mermaid
causing the CDN fetch on every page and lacks SRI/crossorigin; change the logic
in the script so you first check document.querySelector('code.language-mermaid')
and only then perform a dynamic import (e.g.,
import('https://cdn.jsdelivr.net/npm/mermaid@11.X.Y/...') inside that if) before
calling mermaid.initialize(...) and mermaid.run(), and pin the import URL to an
exact mermaid version and add Subresource Integrity and crossorigin="anonymous"
(or load via a script tag with integrity/crossorigin) to harden the external
fetch referenced by mermaid and the code paths that use
document.querySelectorAll('code.language-mermaid'), mermaid.initialize, and
mermaid.run.

In `@src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md`:
- Line 48: Fix two copy nits in the markdown: add a comma after "For the full
list of changes" in the sentence that begins with that phrase, and remove the
trailing space at the end of the sentence that ends with "from the client." (use
these exact sentence fragments to locate the lines in
src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md).

---

Nitpick comments:
In `@src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md`:
- Around line 7-9: The intro duplicates the same release URL for "0.6 tech
preview release" and "0.6.0 release page"; update the sentence so the second
reference is not the same link—either remove the second link and leave it as
plain text, or point the second link to a different resource (e.g., the
changelog or milestone) instead. Locate the sentence containing the phrases "0.6
tech preview release" and "0.6.0 release page" and replace the second occurrence
of the https://github.com/Kuadrant/mcp-gateway/releases/tag/v0.6.0 link with a
unique target or plain text to eliminate the duplicate link.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bf4c8547-9c2f-4c98-ad27-59a740e37048

📥 Commits

Reviewing files that changed from the base of the PR and between deddc80 and 7e7c65a.

📒 Files selected for processing (2)
  • src/_includes/layout.njk
  • src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md

Comment thread src/_includes/layout.njk
Comment on lines +148 to +159
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: false });
document.querySelectorAll('code.language-mermaid').forEach(el => {
const pre = el.parentElement;
const div = document.createElement('div');
div.classList.add('mermaid');
div.textContent = el.textContent;
pre.replaceWith(div);
});
await mermaid.run();
</script>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Mermaid loader runs on every page; consider scoping and adding SRI.

A couple of observations on the new loader:

  • The script is included in the base layout, so every page on the site will fetch ~1MB of Mermaid ESM from cdn.jsdelivr.net even when no diagrams are present. Consider gating execution on the presence of a code.language-mermaid element before importing, e.g. dynamic import() inside an if (document.querySelector('code.language-mermaid')) check, to avoid the network/parse cost on unrelated pages.
  • The CDN script is loaded without a Subresource Integrity (integrity) hash or version pin beyond the major (mermaid@11). A compromised or unexpectedly updated upstream would execute on every page. Pinning to an exact version and adding integrity/crossorigin="anonymous" would harden this.
♻️ Suggested guard to skip the import when no diagrams are on the page
   <script type="module">
-    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
-    mermaid.initialize({ startOnLoad: false });
-    document.querySelectorAll('code.language-mermaid').forEach(el => {
+    const blocks = document.querySelectorAll('code.language-mermaid');
+    if (blocks.length === 0) return;
+    const { default: mermaid } = await import('https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs');
+    mermaid.initialize({ startOnLoad: false });
+    blocks.forEach(el => {
       const pre = el.parentElement;
       const div = document.createElement('div');
       div.classList.add('mermaid');
       div.textContent = el.textContent;
       pre.replaceWith(div);
     });
     await mermaid.run();
   </script>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: false });
document.querySelectorAll('code.language-mermaid').forEach(el => {
const pre = el.parentElement;
const div = document.createElement('div');
div.classList.add('mermaid');
div.textContent = el.textContent;
pre.replaceWith(div);
});
await mermaid.run();
</script>
<script type="module">
const blocks = document.querySelectorAll('code.language-mermaid');
if (blocks.length === 0) return;
const { default: mermaid } = await import('https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs');
mermaid.initialize({ startOnLoad: false });
blocks.forEach(el => {
const pre = el.parentElement;
const div = document.createElement('div');
div.classList.add('mermaid');
div.textContent = el.textContent;
pre.replaceWith(div);
});
await mermaid.run();
</script>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/_includes/layout.njk` around lines 148 - 159, The loader unconditionally
imports and runs mermaid causing the CDN fetch on every page and lacks
SRI/crossorigin; change the logic in the script so you first check
document.querySelector('code.language-mermaid') and only then perform a dynamic
import (e.g., import('https://cdn.jsdelivr.net/npm/mermaid@11.X.Y/...') inside
that if) before calling mermaid.initialize(...) and mermaid.run(), and pin the
import URL to an exact mermaid version and add Subresource Integrity and
crossorigin="anonymous" (or load via a script tag with integrity/crossorigin) to
harden the external fetch referenced by mermaid and the code paths that use
document.querySelectorAll('code.language-mermaid'), mermaid.initialize, and
mermaid.run.


### MCP Specification Elicitation Support

This release adds support for the MCP protocol's [elicitation](https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation) capability. Elicitation allows an MCP server to request additional information from the client during a tool call, enabling multi-turn exchanges between the agent and server. Below is a sequence diagram showing how elicitation events are mapped at the gateway between the client and server. Note the different request IDs on either side of the gateway, as the gateway abstracts this from the client.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Minor copy nits.

  • LanguageTool flags a missing comma on line 7: "For the full list of changes**,** you can check out…".
  • Line 48 ends with a trailing space after "from the client."; harmless but worth trimming.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md` at line 48,
Fix two copy nits in the markdown: add a comma after "For the full list of
changes" in the sentence that begins with that phrase, and remove the trailing
space at the end of the sentence that ends with "from the client." (use these
exact sentence fragments to locate the lines in
src/blog/mcp-gateway-tech-preview/mcp-gateway-tech-preview.md).

@david-martin david-martin added this pull request to the merge queue Apr 20, 2026
Merged via the queue into main with commit c895174 Apr 20, 2026
8 checks passed
@github-project-automation github-project-automation Bot moved this to Done in Kuadrant Apr 20, 2026
@david-martin david-martin deleted the mcp-gateway-0.6.0 branch April 20, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants