Skip to content

Commit 47932cc

Browse files
committed
fix: inline vendor JS libraries for MCP Apps CSP compatibility
CDN script tags are blocked by Content Security Policy in MCP Apps iframes, causing "Vue is not defined" errors. Bundle the 4 JS libraries (Vue, Cytoscape, dagre, cytoscape-dagre) as embedded vendor files and inject them inline at serve time.
1 parent eb79c59 commit 47932cc

7 files changed

Lines changed: 3886 additions & 5 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
# Dependency directories
1616
vendor/
17+
!mcp/ui/vendor/
1718

1819
# IDE
1920
.idea/

mcp/resources.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,34 @@ package mcp
33
import (
44
"context"
55
_ "embed"
6+
"strings"
67

78
"github.com/felixgeelhaar/mcp-go/server"
89
)
910

1011
//go:embed ui/visualizer.html
1112
var visualizerHTML string
1213

14+
//go:embed ui/vendor/vue.global.prod.js
15+
var vendorVue string
16+
17+
//go:embed ui/vendor/cytoscape.min.js
18+
var vendorCytoscape string
19+
20+
//go:embed ui/vendor/dagre.min.js
21+
var vendorDagre string
22+
23+
//go:embed ui/vendor/cytoscape-dagre.min.js
24+
var vendorCytoscapeDagre string
25+
26+
func assembledVisualizerHTML() string {
27+
scripts := "<script>" + vendorVue + "</script>\n" +
28+
" <script>" + vendorCytoscape + "</script>\n" +
29+
" <script>" + vendorDagre + "</script>\n" +
30+
" <script>" + vendorCytoscapeDagre + "</script>"
31+
return strings.Replace(visualizerHTML, "<!-- VENDOR_SCRIPTS -->", scripts, 1)
32+
}
33+
1334
func registerResources(srv *server.Server) {
1435
srv.Resource("ui://statekit/visualizer").
1536
Name("Statekit Visualizer").
@@ -19,7 +40,7 @@ func registerResources(srv *server.Server) {
1940
return &server.ResourceContent{
2041
URI: "ui://statekit/visualizer",
2142
MimeType: "text/html",
22-
Text: visualizerHTML,
43+
Text: assembledVisualizerHTML(),
2344
}, nil
2445
})
2546
}

mcp/ui/vendor/cytoscape-dagre.min.js

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mcp/ui/vendor/cytoscape.min.js

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)