-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
473 lines (473 loc) · 27.8 KB
/
Copy pathindex.html
File metadata and controls
473 lines (473 loc) · 27.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Model Graph Tools</title>
<meta
name="description"
content="Parse, graph, search, and compare WildFly's management model across versions and feature packs."
/>
<meta property="og:title" content="Model Graph Tools" />
<meta property="og:description" content="Parse, graph, search, and compare WildFly's management model across versions and feature packs." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://model-graph-tools.github.io" />
<meta property="og:image" content="https://model-graph-tools.github.io/icon.png" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Model Graph Tools" />
<meta name="twitter:description" content="Parse, graph, search, and compare WildFly's management model across versions and feature packs." />
<link rel="icon" type="image/png" href="icon.png" />
<link rel="stylesheet" href="styles.css" />
<script>
(function () {
var s = localStorage, d = "dark", c = "dark";
try { c = s.getItem("mgt-theme"); } catch (e) {}
if (c === d || (!c && matchMedia("(prefers-color-scheme:dark)").matches)) {
document.documentElement.classList.add(d);
}
})();
</script>
</head>
<body>
<a href="#main" class="skip-link">Skip to content</a>
<header>
<a href="/" class="logo mono">Model Graph Tools</a>
<nav class="header-nav" aria-label="Page sections">
<a href="#prompts">What You Can Ask</a>
<a href="#install">Get Started</a>
<a href="#how-it-works">How It Works</a>
<a href="#ecosystem">Ecosystem</a>
<a href="#faq">FAQ</a>
</nav>
<div class="header-actions">
<button class="theme-toggle" id="themeToggle" aria-label="Toggle dark mode">
<span id="themeIcon">☽</span>
</button>
<a href="https://github.com/model-graph-tools" class="github-link" target="_blank" rel="noopener">
<svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor">
<path
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
/>
</svg>
GitHub
</a>
</div>
</header>
<main id="main">
<section class="hero container">
<div class="hero-text">
<div class="hero-label mono">MODEL GRAPH TOOLS</div>
<h1 class="hero-title">Explore the WildFly<br />Management Model</h1>
<p class="hero-subtitle">
Ask questions about WildFly's management model from any AI agent — search, compare, and
explore across versions and feature packs.
</p>
<p class="hero-versions">Supports all WildFly versions starting with 10, plus feature packs like AI, gRPC, GraphQL, and MyFaces.</p>
<div class="hero-actions">
<a href="#install" class="btn btn-primary">Get Started</a>
<a
href="https://github.com/model-graph-tools"
class="btn btn-outline"
target="_blank"
rel="noopener"
>GitHub →</a
>
</div>
</div>
<div class="hero-terminal mono">
<div class="hero-question"><span class="prompt">></span> How do I add a datasource?</div>
<div class="hero-answer">Required: jndi-name, driver-name</div>
<div class="hero-answer">62 optional attributes including</div>
<div class="hero-answer muted">connection-url, pool-size, validation…</div>
</div>
</section>
<section class="section prompts" id="prompts">
<div class="container">
<h2 class="section-title">What You Can Ask</h2>
<p class="prompts-subtitle">
Use natural language or the <code>/mgt:model</code> slash command in Claude Code. The
skill also activates automatically in any MCP‑compatible agent.
</p>
<div class="content-grid">
<div class="content-card">
<div class="content-card-title">Browse & Search</div>
<ul class="prompts-list mono">
<li>How do I add a new datasource?</li>
<li>How does the logging subsystem work?</li>
<li>How is TLS configured?</li>
<li>Tell me more about credential stores.</li>
</ul>
</div>
<div class="content-card">
<div class="content-card-title">Versions & Lifecycle</div>
<ul class="prompts-list mono">
<li>Compare the last two versions of WildFly.</li>
<li>Compare the undertow subsystem between WildFly 12 and now.</li>
<li>What resources have been deprecated recently?</li>
<li>Show me a breakdown of the stability levels.</li>
<li>Are there any preview features?</li>
</ul>
</div>
<div class="content-card">
<div class="content-card-title">Model Health</div>
<ul class="prompts-list mono">
<li>Are there timeout attributes without a time unit?</li>
<li>Find password attributes not marked as sensitive.</li>
<li>Are there conflicting attribute dependencies?</li>
<li>Which resources have the most attributes?</li>
<li>Are there capabilities declared but never referenced?</li>
</ul>
</div>
<div class="content-card">
<div class="content-card-title">Feature Packs</div>
<ul class="prompts-list mono">
<li>What resources does the AI feature pack provide?</li>
<li>How is the gRPC feature pack structured?</li>
<li>How do I configure the GraphQL feature pack?</li>
<li>Give me an overview of the MyFaces feature pack.</li>
</ul>
</div>
</div>
</div>
</section>
<section class="section install" id="install">
<div class="container">
<h2 class="section-title">Get Started</h2>
<p class="install-prereq">
Requires
<a href="https://www.docker.com/get-started/" target="_blank" rel="noopener">Docker</a> or
<a href="https://podman.io/get-started" target="_blank" rel="noopener">Podman</a>
to run model database containers.
<a href="https://nodejs.org/" target="_blank" rel="noopener">Node</a> for the MCP server.
The <code>mgt</code> CLI is bundled automatically.
</p>
<div class="install-grid">
<div class="install-group">
<div class="install-group-title">Claude Code Plugin</div>
<div class="code-block standalone-code-block code-block-multi mono">
<div class="code-block-line">
<code
>claude plugin marketplace add
https://github.com/model-graph-tools/claude-plugin</code
>
<button
class="copy-btn"
data-copy="claude plugin marketplace add https://github.com/model-graph-tools/claude-plugin"
>
Copy
</button>
</div>
<div class="code-block-line">
<code>claude plugin install mgt@model-graph-tools</code>
<button class="copy-btn" data-copy="claude plugin install mgt@model-graph-tools">
Copy
</button>
</div>
</div>
<p class="install-note">
Using a different agent? The
<a href="https://github.com/model-graph-tools/claude-plugin#other-ai-agents" target="_blank" rel="noopener">MCP server</a>
works with any MCP‑compatible client — Cursor, Windsurf, Copilot, Gemini CLI, and others.
</p>
</div>
<div class="install-group">
<div class="install-group-title">Ask Your AI Agent</div>
<p class="next-steps-example mono">› How do I add a datasource in WildFly 39?</p>
<p class="install-note">
See <a href="#prompts">What You Can Ask</a> for example queries, or browse the model
interactively with <code>mgt browse 39</code>.
</p>
</div>
<div class="install-group">
<div class="install-group-title">Standalone mgt CLI <span class="next-steps-optional">(optional)</span></div>
<div class="tabs" role="tablist">
<button class="tab active" role="tab" id="tab-btn-curl" data-tab="curl" aria-selected="true" aria-controls="tab-curl" tabindex="0">curl</button>
<button class="tab" role="tab" id="tab-btn-brew" data-tab="brew" aria-selected="false" aria-controls="tab-brew" tabindex="-1">Homebrew</button>
<button class="tab" role="tab" id="tab-btn-cargo" data-tab="cargo" aria-selected="false" aria-controls="tab-cargo" tabindex="-1">Cargo</button>
</div>
<div class="tab-content active" id="tab-curl" role="tabpanel" aria-labelledby="tab-btn-curl" tabindex="0">
<div class="code-block mono">
<code>curl -fsSL https://model-graph-tools.github.io/mgt/install.sh | sh</code>
<button
class="copy-btn"
data-copy="curl -fsSL https://model-graph-tools.github.io/mgt/install.sh | sh"
>
Copy
</button>
</div>
</div>
<div class="tab-content" id="tab-brew" role="tabpanel" aria-labelledby="tab-btn-brew" tabindex="0">
<div class="code-block mono">
<code>brew tap hpehl/tap && brew install mgt</code>
<button class="copy-btn" data-copy="brew tap hpehl/tap && brew install mgt">
Copy
</button>
</div>
</div>
<div class="tab-content" id="tab-cargo" role="tabpanel" aria-labelledby="tab-btn-cargo" tabindex="0">
<div class="code-block mono">
<code>cargo install mgt</code>
<button class="copy-btn" data-copy="cargo install mgt">Copy</button>
</div>
</div>
<p class="install-note">The MCP server bundles <code>mgt</code> automatically. Install standalone if you want to use <code>mgt</code> directly from the command line.</p>
</div>
<div class="install-group">
<div class="install-group-title">Start a Model Database <span class="next-steps-optional">(optional)</span></div>
<div class="code-block standalone-code-block mono">
<code>mgt start 39</code>
<button class="copy-btn" data-copy="mgt start 39">Copy</button>
</div>
<p class="install-note">The MCP server starts containers automatically when needed. Use this to pre‑load a version.</p>
</div>
</div>
</div>
</section>
<section class="section diagram" id="how-it-works">
<div class="container">
<h2 class="section-title">How It Works</h2>
<div class="architecture">
<div class="architecture-tier" data-color="purple">
<div class="architecture-tier-label label-mono mono">AGENT</div>
<div class="architecture-tier-content">
<div class="architecture-inner">
<div class="architecture-inner-name">Skill</div>
<div class="architecture-inner-detail mono">
<span class="prompt">></span> How is TLS configured?
</div>
</div>
<div class="architecture-inner">
<div class="architecture-inner-name">MCP Server</div>
<div class="architecture-inner-detail mono">
<div>Run mgt subcommands</div>
<div>Execute Cypher queries</div>
</div>
</div>
</div>
</div>
<div class="architecture-arrow">↓</div>
<div class="architecture-tier" data-color="red">
<div class="architecture-tier-label label-mono mono">CLI</div>
<div class="architecture-tier-content">
<div class="architecture-inner">
<div class="architecture-inner-name">mgt</div>
<div class="architecture-inner-detail mono">
<div><span class="prompt">$</span> mgt start 39</div>
<div><span class="prompt">$</span> mgt versions</div>
<div><span class="prompt">$</span> mgt ps</div>
</div>
</div>
</div>
</div>
<div class="architecture-arrow">↓</div>
<div class="architecture-tier" data-color="blue">
<div class="architecture-tier-label label-mono mono">MODEL</div>
<div class="architecture-tier-content">
<div class="architecture-inner">
<div class="architecture-inner-name">Model Database Images</div>
<div class="architecture-inner-detail mono">
<a href="https://quay.io/repository/modelgraphtools/model" target="_blank" rel="noopener">quay.io/modelgraphtools/model</a>
</div>
</div>
</div>
</div>
<div class="architecture-arrow">↑</div>
<div class="architecture-tier dashed" data-color="green">
<span class="architecture-tier-badge mono">BUILD TIME</span>
<div class="architecture-tier-label label-mono mono">ANALYZER</div>
<div class="architecture-tier-content">
<div class="architecture-inner">
<div class="architecture-inner-name">Analyzer</div>
<div class="architecture-inner-detail mono">
<div>Parse management model</div>
<div>Populate model database</div>
</div>
</div>
</div>
</div>
</div>
<div class="schema-container">
<h3 class="schema-title">Model Database</h3>
<p class="schema-caption">
The management model is stored as a graph in a Neo4j database. It contains nodes and relationships for
resources, attributes, operations, capabilities, and more.
</p>
<img
src="schema.svg"
alt="Graph schema showing resource, attribute, operation, capability, and parameter nodes with their relationships"
class="schema-img"
/>
</div>
</div>
</section>
<section class="section ecosystem" id="ecosystem">
<div class="container">
<h2 class="section-title">The Ecosystem</h2>
<div class="cards">
<div class="card" data-color="green">
<div class="card-label label-mono mono">JAVA CLI</div>
<div class="card-name">Analyzer</div>
<p class="card-desc">Parse the management model and store it as a Neo4j graph. Used internally by <code>mgt</code> — only needed for custom analysis.</p>
<ul class="card-features">
<li>Live server or doc ZIP</li>
<li>Full resource tree</li>
<li>Capabilities & relationships</li>
</ul>
<div class="card-terminal mono">
<span class="prompt">$</span> <span class="cmd">java -jar analyzer.jar -w localhost</span>
</div>
<a
href="https://github.com/model-graph-tools/analyzer"
class="card-link"
target="_blank"
rel="noopener"
>View on GitHub →</a
>
</div>
<div class="card" data-color="red">
<div class="card-label label-mono mono">RUST CLI</div>
<div class="card-name">mgt</div>
<p class="card-desc">Orchestrate the analysis pipeline and manage model containers. Bundled with the MCP server — install standalone for direct CLI use.</p>
<ul class="card-features">
<li>Analyze WildFly and feature packs</li>
<li>Start/stop model containers</li>
<li>Browse with Neo4j (<code>mgt browse <version></code>)</li>
</ul>
<div class="card-terminal mono">
<span class="prompt">$</span> <span class="cmd">mgt start 39</span>
</div>
<a
href="https://github.com/model-graph-tools/tooling"
class="card-link"
target="_blank"
rel="noopener"
>View on GitHub →</a
>
</div>
<div class="card" data-color="purple">
<div class="card-label label-mono mono">MCP SERVER</div>
<div class="card-name">Claude Plugin</div>
<p class="card-desc">Explore the model from AI agents via MCP and agent skills.</p>
<ul class="card-features">
<li>Search & browse resources</li>
<li>Compare versions</li>
<li>Run Cypher queries</li>
</ul>
<div class="card-terminal mono">
<div>
<span class="prompt">$</span>
<span class="cmd"
>claude plugin marketplace add
https://github.com/model-graph-tools/claude-plugin</span
>
</div>
<div>
<span class="prompt">$</span>
<span class="cmd">claude plugin install mgt@model-graph-tools</span>
</div>
</div>
<div class="card-links">
<a
href="https://github.com/model-graph-tools/claude-plugin"
class="card-link"
target="_blank"
rel="noopener"
>View on GitHub →</a
>
<a
href="https://github.com/model-graph-tools/claude-plugin#what-you-can-do"
class="card-link"
target="_blank"
rel="noopener"
>Tool reference →</a
>
</div>
</div>
</div>
</div>
</section>
<section class="section faq" id="faq">
<div class="container">
<h2 class="section-title">FAQ</h2>
<div class="content-grid">
<div class="content-card">
<div class="content-card-title">Do I need a running WildFly instance?</div>
<p class="faq-answer">
No. The management model is pre-extracted and stored in the graph database. You can
explore any WildFly version without installing or running a server.
</p>
</div>
<div class="content-card">
<div class="content-card-title">What are the system requirements?</div>
<p class="faq-answer">
Docker or Podman to run the model database containers. Node for the MCP server.
Each version uses roughly 1.2 GB of disk space.
</p>
</div>
<div class="content-card">
<div class="content-card-title">Which WildFly versions are available?</div>
<p class="faq-answer">
All major releases from WildFly 10 onwards, plus selected feature packs like the AI
subsystem. Run <code class="mono">mgt versions</code> and
<code class="mono">mgt feature-packs</code> to see the full list.
</p>
</div>
<div class="content-card">
<div class="content-card-title">What gets downloaded when I start a version?</div>
<p class="faq-answer">
A container image (~400 MB compressed) containing a Neo4j database pre-loaded with the
full management model for that WildFly version. After the first pull, subsequent starts
are instant.
</p>
</div>
<div class="content-card">
<div class="content-card-title">Where are the container images stored?</div>
<p class="faq-answer">
On <a href="https://quay.io/repository/modelgraphtools/model" target="_blank" rel="noopener">quay.io/modelgraphtools/model</a>.
They are pulled automatically when you start a version for the first time.
</p>
</div>
<div class="content-card">
<div class="content-card-title">Can I run multiple versions at once?</div>
<p class="faq-answer">
Yes. Each version runs in its own container, so you can start several in parallel.
</p>
</div>
<div class="content-card">
<div class="content-card-title">Can I use this offline?</div>
<p class="faq-answer">
Yes, once a version's container image has been pulled. The graph database runs entirely
on your machine with no external network calls.
</p>
</div>
<div class="content-card">
<div class="content-card-title">Is the data kept between sessions?</div>
<p class="faq-answer">
The graph data is read-only and baked into each container image. Stopping and restarting
a version gives you the same data every time.
</p>
</div>
<div class="content-card">
<div class="content-card-title">How do I access the raw graph?</div>
<p class="faq-answer">
Run <code class="mono">mgt browse <version></code> to open the Neo4j browser, where you
can write and execute Cypher queries directly.
</p>
</div>
</div>
</div>
</section>
<div id="copyStatus" class="sr-only" aria-live="polite"></div>
</main>
<footer>
<div class="container">
<span class="mono">Model Graph Tools</span>
<span class="footer-sep">·</span>
<a href="https://github.com/model-graph-tools" target="_blank" rel="noopener">GitHub</a>
<span class="footer-sep">·</span>
<span>Apache-2.0</span>
</div>
</footer>
<script src="main.js"></script>
</body>
</html>