SCAST MCP Server
by davidkingzyb
Verified
# 🔱SCAST
**代码静态分析可视化工具**
2024/9/27 by DKZ
[English](./README.md)/中文

[🔱SCAST](https://davidkingzyb.github.io/scast/SCAST.html) 可以将输入的代码转换为UML图和流程图,可用作整理流程架构,输出文档图表。
[📺视频](https://www.bilibili.com/video/BV1QK2QYXEPW)
[📺教程](https://www.bilibili.com/video/BV1EZNBejEfR)
[📺MCP](https://www.bilibili.com/video/BV1fkoyY3EB5/)
多种语言支持
- javascript (使用[acorn](https://github.com/acornjs/acorn))
- typescript (目前使用 [typescript](https://www.typescriptlang.org/) 之后可能迁移到 [estree](https://typescript-eslint.io/) 版本)
- csharp (定制的解析器,之后不再支持)
- python (定制解析器功能较全,之后可能迁移到 [filbert](https://github.com/differentmatt/filbert) 目前功能不全)
原理是将输入代码整理为AST树并对其进行静态分析,最后输出使用[Mermaid](https://github.com/mermaid-js/mermaid-live-editor) 和 [D3](https://github.com/d3/d3) 输出可视化图表.
可以使用在线版本 [online](https://davidkingzyb.github.io/scast/SCAST.html) 或者下载源码双击**SCAST.html**文件在浏览器中使用.
对于开发者可使用 `npm run server` 将它部署在服务器中. 或者作为 **MCP** server 使用将它集成到你的 AI 客户端中.

## 更新
### MCP

1. `git clone https://github.com/davidkingzyb/SCAST.git` 下载源码.
2. `npm install`
3. 在你的客户端设置
```
{
"mcpServers": {
"scast":{
"command":"node",
"args":[
"/YOUR_INSTALL_DIR/SCAST/mcp/index.js",
"/YOUR_WORKSPACE/",
"C:\\Users\\DKZ\\OTHER_ALLOWED_DIR\\",
]
}
}
}
```
#### 工具
##### scast_analysis:
SCAST 是一个帮助用户分析总结代码并将可视化的工具.
只需要提供源代码所在的文件夹路径, SCAST 会对文件夹下的源代码做静态分析,生成 AST 树, 帮助用户理解代码结构,解释代码的功能.
生成一系列的可视化图表, 如 UML 类图, AST tree 图 以及 Mermaid flowchart 图等.
最后返回一个keyword列表,包含所有类和方法名称和其功能解释,并附一个连接, 让用户在浏览器中查看图表详情.
##### scast_retriever
SCAST 是一个帮助用户分析总结代码并将可视化的工具.
需要提供源代码所在的文件夹路径, SCAST 会对文件夹下的源代码做静态分析,生成 AST 树, 帮助用户理解代码结构, 解释代码的功能.
使用 SCAST 分析完代码目录之后, 可以通过提供关键字在 AST 树中进行检索,用 RAG 的方法更好的回答用户的提问.
这个关键字可以是类名,方法名,或者是字段名称. SCAST 会找到其定义处的源代码并返回.
#### Ollama AI
请先安装[ollama](https://ollama.com/)
[ai.js](./js/ai.js)中查看更多详情

#### ESTree
兼容ESTree规范的AST paser
#### 力导引图

#### 其他 D3 图表
- Indented tree
- Tidy tree
- Cluster tree
- Tadial tidy tree
- Radial cluster tree
- Force directed tree
- Edge bundling
