SCAST MCP Server
by davidkingzyb
Verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SCAST</title>
<script src="./lib/acorn.js" async></script>
<!-- <script src="./lib/filbert.js" async></script> -->
<!-- <script src="./lib/typescript.min.js" async></script> -->
<link rel="stylesheet" href="./scast.css">
<link rel="stylesheet" href="./lib/vs2015.min.css">
<script src="./lib/highlight.min.js"></script>
<script src="./lib/highlightjs-line-numbers.min.js"></script>
<script src="./lib/json-viewer.bundle.js" async></script>
<script src="./lib/mermaid.min.js" async></script>
<script src="./lib/d3.min.js" async></script>
<script src="./js/D3M.js" async></script>
<!-- <script src="./js/SCASTTS.js"></script> -->
<!-- <script src="./js/ESTREEPY.js"></script> -->
<script src="./js/ESTREEJS.js"></script>
<script src="./lib/SCAST.min.js"></script>
<script src="./lib/SCASTPY.min.js"></script>
<script src="./js/common.js"></script>
<script src="./js/analysis.js"></script>
<script src="./js/ai.js"></script>
</head>
<body style="margin-bottom: 90px;">
<div id="title">
<span class="jump">οΈπ±</span>
<h1 style="display: inline;" class="pointer"><a href="https://github.com/davidkingzyb/SCAST" style="color:black;"> SCAST</a> </h1>
<span class="pointer jump"
onclick="scrollToView('mermaidUML',-window.innerHeight/2-20)" title="scroll to UML">π§ββοΈ</span>
<span class="pointer jump"
onclick="scrollToView('mermaidFlow',-window.innerHeight/2-20)" title="scroll to flow">π</span>
<span class="pointer jump"
onclick="scrollToView('FDP',-window.innerHeight/2-20)" title="scroll to FDG">βοΈ</span>
<span class="pointer jump"
onclick="scrollToView('D3Select',-window.innerHeight/2-20)" title="scroll to D3">π³</span>
<!-- <a href="https://davidkingzyb.github.io/blogmd/50.html"> by DKZ</a> -->
</div>
<details id="code_con" open>
<summary id="code_con_summary">codes </summary>
</details>
<div id="code_panel">
<div id="code_scroll">
<div id="code">
<textarea name="" id="codetext" placeholder="HOW TO USE
1. paste code here
or select from file by click π at right corner
2. click οΈπ± generate AST
3. click π§ββοΈ analysis and show mermaid diagram
click π§ββοΈ again for more details
or click π³ show D3 diagram
4. click π¦ use ollama AI analysis code
Β© 2024 DKZ"></textarea>
</div>
</div>
<div id="codescaler"></div>
</div>
<details id="mermaid_conf_con">
<summary>mermaid <a onclick="reMermaid()" title="refresh mermaid">ποΈ</a></summary>
<div id="mermaid_conf_panel">
<textarea name="" id="textUML" placeholder="Mermaid classDiagram UML code"></textarea><br>
<textarea name="" id="textFlow" placeholder="Mermaid flowchart code"></textarea>
</div>
</details>
<details id="d3_conf_con">
<summary>config</summary>
<details style="margin-top: 50px;" open>
<summary title="Ollama AI config" >AI</summary>
<select id="ai_models" onchange="onModelChange()"></select>
num ctx: <select id="ai_numctx" style="margin-top: 10px;" onchange="onNumCtxChange()">
<option value="4000">4k</option>
<option value="8000">8k</option>
<option value="16000" selected>16k</option>
<option value="32000">32k</option>
</select>
<select name="" id="ai_language" onchange="onLanguageChange()">
<option value="zh">zh</option>
<option value="en">en</option>
</select>
</details>
<details>
<summary title="D3 SCAST filter">SCAST</summary>
<div id="D3Option" class="opcls"></div>
</details>
<details>
<summary title="D3 ESTree filter">ESTree</summary>
<div id="D3ESTree" class="opcls"></div>
</details>
</details>
<details id="outline_con">
<summary>outline</summary>
<div id="mmdfilter_con" class="opclsfilter"></div>
</details>
<div class="" id="load_con">
<label class="input-file-button" for="codefile" title="1. open files">π</label>
<input type='file' id='codefile' multiple />
<button id="load" class="pointer" onclick="load()" title="2. generate AST">π±</button>
<button onclick="genMermaid()" title="3. generate mermaid click twice for detail">π§ββοΈ</button>
<button onclick="genD3()" title="3. generate D3">π³</button>
<button id="aibtn" class="pointer" style="display: none;" onclick="aiAnalysis()" title="4.AI Analysis" disabled>π¦</button>
</div>
<details class="json_con">
<summary onclick="showJson()">json
<input id="searchinput" type="text">
<button onclick="search()" title="search">π</button>
<button onclick="storageAstJson()" title="save Ast json to storage">π₯</button>
<button onclick="loadAstJson()" title="load Ast json from storage">π€</button>
<button onclick="saveScast()" title="save Ast json">πΎ</button>
</summary>
<json-viewer id="json"></json-viewer>
</details>
<details open>
<summary id="mermaidHead">mermaid UML & Flow
<button onclick="genMermaid()" title="generate mermaid">π§ββοΈ</button>
<button onclick="storageMermaid()" title="save mermaid to storage">π₯</button>
<button onclick="loadMermaid()" title="load mermaid from storage">π€</button>
<button onclick="saveMermaid()" title="save mermaid">πΎ</button>
<button onclick="scaleMermaid()" title="scale mermaid">π</button>
</summary>
<div id="mermaidOption" class="opcls">
<!-- <input type="checkbox" id="mmdop_relation" class="mmdops" checked /><label for="mmdop_relation">UML Relationship</label> -->
<input type="checkbox" id="mmdop_click" class="mmdops" checked /><label for="mmdop_click" title="Click mermaid diagram jump to defined.">Can Click</label>
<input type="checkbox" id="mmdop_method" class="mmdops" checked /><label for="mmdop_method" title="Use OOP paradigm analysis.">OOP</label>
<input type="checkbox" id="mmdop_call" class="mmdops" checked /><label for="mmdop_call" title="Show function call detail.">Call Detail</label>
<input type="checkbox" id="mmdop_idone" class="mmdops" checked /><label for="mmdop_idone" title="Function call and function define node use same node.">One ID</label>
<input type="checkbox" id="mmdop_samename" class="mmdops" checked /><label for="mmdop_samename" title="deal with same name function.">Same Name</label>
<input type="checkbox" id="mmdop_if" class="mmdops" /><label for="mmdop_if" title="Show if and loop in flow chart.">If and Loop</label>
<!-- <input type="checkbox" id="mmdop_condition" class="mmdops" /><label for="mmdop_condition">Condition</label> -->
<input type="checkbox" id="mmdop_namespace" class="mmdops" /><label for="mmdop_namespace" title="Layout by Namespace.">Namespace</label>
</div>
<div id="mermaidPane">
<!-- <pre class="mermaid" id="mermaidUML"></pre> -->
<!-- <pre class="mermaid" id="mermaidFlow"></pre> -->
</div>
<div id="FDP"></div>
</details>
<details open>
<summary>D3
<select id="D3Select">
<option value="IndentedTree">IndentedTree</option>
<!-- <option value="treeMap">TreeMap</option> -->
<option value="TidyTree">TidyTree</option>
<option value="ClusterTree">ClusterTree</option>
<option value="RadialTidyTree">RadialTidyTree</option>
<option value="RadialClusterTree">RadialClusterTree</option>
<option value="forceDirectedTree">ForceDirectedTree</option>
<option value="EdgeBundling">EdgeBundling</option>
</select>
<button onclick="genD3()" title="generate D3">π³</button>
<button onclick="clearD3()" title="clear D3">π§Ή</button>
<button onclick="scaleD3()" title="scale D3">π</button>
<button onclick="fontSizeD3Minus(4)" title="scale font size">β</button>
<button onclick="fontSizeD3Plus(4)" title="scale font size">β</button>
</summary>
<div id="D3Diagram"></div>
</details>
</body>
<script>
initFile()
renderD3Option()
initCodeScaler()
getModels()
</script>
</html>