clouatre-labs/code-analyze-mcp
GitHub: clouatre-labs/code-analyze-mcp
基于 tree-sitter 的 MCP 服务器,为 LLM 提供高效的代码结构分析、语义提取和调用图生成能力。
Stars: 1 | Forks: 0
# code-analyze-mcp
[](https://github.com/clouatre-labs/code-analyze-mcp/actions/workflows/mcp-scan.yml)
[](LICENSE)
[](https://www.rust-lang.org)
[](https://modelcontextprotocol.io)
使用 tree-sitter 进行代码结构分析的独立 MCP server。
## 概述
code-analyze-mcp 是一个 Model Context Protocol server,可分析 5 种编程语言的代码结构。它提供三个工具:`analyze_directory`(带指标的文件树)、`analyze_file`(单个文件中的函数、类、导入)以及 `analyze_symbol`(指定符号的调用图)。它与任何兼容 MCP 的编排器(Claude Code、Kiro、Fast-Agent、MCP-Agent 等)集成,在最大限度地减少 token 使用量的同时,为 LLM 提供精确的结构上下文。
## 安装
### Homebrew (macOS 和 Linux)
```
brew install clouatre-labs/tap/code-analyze-mcp
```
更新:`brew upgrade code-analyze-mcp`
### cargo-binstall (无需 Rust)
```
cargo binstall code-analyze-mcp
```
### cargo install (需要 Rust 工具链)
```
cargo install code-analyze-mcp
```
## 快速开始
### 从源码构建
```
cargo build --release
```
二进制文件位于 `target/release/code-analyze-mcp`。
### 配置 MCP Client
通过 brew 或 cargo 安装后,向 Claude Code CLI 注册:
```
claude mcp add --transport stdio code-analyze -- code-analyze-mcp
```
如果您是从源码构建的,请直接使用二进制文件路径:
```
claude mcp add --transport stdio code-analyze -- /path/to/repo/target/release/code-analyze-mcp
```
使用 stdio 是有意为之:该服务器在本地运行并直接处理磁盘上的文件。这种低延迟、零网络开销的传输方式非常适合该用例。对于本地工具而言,可流式传输的 HTTP 会增加网络跳数,却没有任何好处。
或者手动添加到项目根目录的 `.mcp.json`(通过版本控制与您的团队共享):
```
{
"mcpServers": {
"code-analyze": {
"command": "code-analyze-mcp",
"args": []
}
}
}
```
## 工具
所有可选参数均可省略。工具间通用的可选参数:
| 参数 | 类型 | 默认值 | 描述 |
|-----------|------|---------|-------------|
| `summary` | boolean | auto | 紧凑输出;超过 50K 字符时自动触发 |
| `cursor` | string | -- | 来自上一次响应 `next_cursor` 的分页游标 |
| `page_size` | integer | 100 | 每页条目数 |
| `force` | boolean | false | 跳过输出大小警告 |
### `analyze_directory`
遍历目录树,统计每个文件的代码行数、函数数和类数。遵循 `.gitignore` 规则。
**必填:** `path` *(string)* -- 要分析的目录
**额外可选:** `max_depth` *(integer,默认无限制)* -- 递归限制;对于大型 monorepo,建议使用 2-3
**示例输出:**
```
src/ [328 LOC | F:28 C:5]
main.rs [18 LOC | F:1 C:0]
lib.rs [156 LOC | F:12 C:3]
parser.rs [89 LOC | F:8 C:2]
formatter.rs [65 LOC | F:7 C:0]
languages/ [142 LOC | F:19 C:5]
mod.rs [45 LOC | F:5 C:2]
rust.rs [97 LOC | F:14 C:3]
Total: 4 files, 328 LOC, 28 functions, 5 classes
```
```
analyze_directory path: /path/to/project
analyze_directory path: /path/to/project max_depth: 2
analyze_directory path: /path/to/project summary: true
```
### `analyze_file`
从单个文件中提取函数、类、导入和类型引用。
**必填:** `path` *(string)* -- 要分析的文件
**额外可选:** `ast_recursion_limit` *(integer,默认 256)* -- tree-sitter 递归上限,用于栈安全
**示例输出:**
```
FILE: src/lib.rs [156 LOC | F:12 C:3]
CLASSES:
CodeAnalyzer:20
SemanticExtractor:45
FUNCTIONS:
new:27
analyze:35
extract:52
format_content:78
build_index:89
IMPORTS:
rmcp (3)
serde (2)
tree_sitter (4)
thiserror (1)
REFERENCES:
methods: [analyze, extract, format_content]
types: [AnalysisResult, SemanticData, ParseError]
fields: [path, mode, language]
```
```
analyze_file path: /path/to/file.rs
analyze_file path: /path/to/file.rs page_size: 50
analyze_file path: /path/to/file.rs cursor: eyJvZmZzZXQiOjUwfQ==
```
### `analyze_symbol`
为目录中所有文件的指定符号构建调用图。使用哨兵值 `标签:Claude, Claude Code, CVE检测, LLM工具, MCP服务器, Model Context Protocol, odt, Rust, Tree-sitter, 云安全监控, 代码分析, 代码理解, 代码结构, 低延迟, 凭证管理, 可视化界面, 多语言支持, 威胁情报, 安全测试框架, 开发者工具, 抽象语法树, 本地部署, 源代码解析, 符号分析, 网络流量审计, 调用图, 通知系统, 零网络开销, 静态分析