aimasteracc/tree-sitter-analyzer
GitHub: aimasteracc/tree-sitter-analyzer
基于tree-sitter的跨语言代码智能MCP服务,为AI编程智能体提供高精度调用图、符号搜索和代码健康分析,核心优势是大幅减少跨语言调用图的误连接。
Stars: 37 | Forks: 8
# 🌳 Tree-sitter Analyzer
**English** | **[日本語](README_ja.md)** | **[简体中文](README_zh.md)**
[](https://pypi.org/project/tree-sitter-analyzer/) [](https://python.org) [](LICENSE) [](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer) [](https://github.com/aimasteracc/tree-sitter-analyzer) [](#supported-agents)
**AI 智能体可信赖的代码智能** —— 跨越 20 多种语言的正确跨语言结构,原生适配智能体(MCP + CLI)。
TSA 使用 tree-sitter 对您的代码库进行索引,并为 AI 编程智能体提供正确的调用图、符号搜索和结构化查询 —— 所有操作均在本地完成,无任何遥测。
**为什么它与众不同:**
* **跨语言的准确性是它的护城河。** 仅依赖名称的索引会将 Python 的 `sorted()` 错误地关联到 Swift 的 `func sorted` 上。TSA 不会这样做。它的跨语言调用图错误连接比同类工具少约 390 倍([可复现的审计](benchmarks/codegraph_compare/MISWIRE-AUDIT-EXAMPLES.md))。
* **专为智能体原生构建。** 8 个 MCP 工具,TOON 输出(在批量响应上比 JSON 小 50-70%),裁决封装(verdict envelopes),以及 13 个精选技能(Skills)—— 专为 Claude Code、Cursor 和任何 MCP 客户端设计。
* **覆盖广泛且分类正确。** 13 种语言支持完整的调用图索引(Python · Go · Rust · Java · JS · TS · C · C++ · C# · Swift · Kotlin · Ruby · PHP),另有 8 种语言支持符号索引或可通过 CLI 访问。
## 快速开始
**Claude Code** 一行代码安装:
```
claude mcp add tree-sitter-analyzer \
--env TREE_SITTER_PROJECT_ROOT="$PWD" \
-- uvx --from "tree-sitter-analyzer[mcp]" tree-sitter-analyzer-mcp
```
重启您的智能体,然后说:*"Run the `index` tool with action=status."*
[其他智能体 (Cursor、Copilot、Cline、Continue、Claude Desktop、Roo Code) →](#supported-agents)
### 快速安装
#### 1. 安装依赖
```
# uv(必需)
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS / Linux
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
# fd + ripgrep(`search action=content` 文本搜索必需;符号搜索使用 SQLite FTS5,两者均不需要)
brew install fd ripgrep # macOS
winget install sharkdp.fd BurntSushi.ripgrep.MSVC # Windows
```
#### 2. 安装 Tree-sitter Analyzer
```
# 独立安装(持久化 CLI 命令):
uv tool install "tree-sitter-analyzer[all,mcp]"
# — 或者完全跳过安装:下面的 MCP 条目会按需通过 uvx 运行。
# 在 uv 管理的 Python 项目中,使用:uv add "tree-sitter-analyzer[all,mcp]"
```
#### 3. 接入您的智能体
请参阅 **[受支持的智能体](#supported-agents)**。大多数客户端需要这个 MCP 服务器条目:
```
{
"mcpServers": {
"tree-sitter-analyzer": {
"command": "uvx",
"args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"],
"env": { "TREE_SITTER_PROJECT_ROOT": "/absolute/path/to/your/project" }
}
}
}
```
重启后:*"Run the `index` tool with action=status."*
**在您自己的仓库中查看准确性的优势** —— 无需安装,无需 CodeGraph(它会先重新索引;小型仓库只需几秒钟,大型仓库需要一两分钟):
```
uvx --from tree-sitter-analyzer miswire-audit .
```
它会打印出仅依赖名称的代码索引(大多数工具使用的设计)*会*在语言边界上错误连接多少条调用边 —— 例如将 Python 的 `sorted()` 连接到 Swift 的 `func sorted` —— 相比之下 TSA 的错误连接数(≈0)。在 [HuggingFace `tokenizers`](benchmarks/codegraph_compare/MISWIRE-AUDIT-EXAMPLES.md) 上的表现为:**从 1,259 降至 0**。
## 为什么选择 Tree-sitter Analyzer
* **默认 Token 高效。** 每个 MCP 响应都使用 **TOON** —— 一种表格化的 JSON 变体,与原始 JSON 相比,可减少约 50-70% 的批量/表格化负载([测量结果](tests/unit/mcp/test_output_cost_invariants.py);RFC-0012 在代表性决策工具上测得比率为 0.52×)。
* **裁决封装。** 每个响应都带有 `verdict: SAFE | CAUTION | UNSAFE | INFO | WARN | ERROR | NOT_FOUND`,因此编排器可以根据结果进行分支,而无需重新提示。
* **项目健康度评级 (A–F)。** 极少有代码智能工具能提供全项目质量评分 —— TSA 通过一次调用即可根据体积 / 复杂度 / 覆盖率 / 重复度 / 依赖关系 / 结构 / git 热点进行评级。
* **13 个精选工作流 (Skills)。** 为“查找符号”、“追踪调用链”、“评估健康度”、“重构前的安全编辑检查”、“PR 审查”等预制了工具子集。
* **5 层安全防护。** `edit action=safe` + `edit action=guard` + 约束 DSL + `edit action=impact` + 裁决封装 —— 旨在让智能体在修改前就*掌握*情况。
* **严格的 CLI,作为 CodeGraph 的超集,索引速度更快,并具有单次调用的查询 DSL** —— 附带诚实客观的成本比较([见下文](#how-tsa-compares-to-codegraph))。
## 核心功能
### 预索引代码智能 (CodeGraph 对等 + 超集)
| 功能 | TSA 工具 | 状态 |
|---|---|---|
| 符号搜索 (FTS5 + **BM25 排序**) | `search` action=symbol | **领先** —— 结果按相关性得分排序,而非按文件路径 |
| 单次调用实现 跳转定义 / 查找引用 / 调用层级 | `nav` action=navigate | 主要入口点 |
| 批量获取 N 个相关符号 + 关系图 | `structure` action=explore | 功能对等 |
| 函数级影响范围 + 风险评分 | `nav` action=impact | 功能对等 + 风险评分 |
| 谁调用了 X / X 调用了什么 | `nav` action=callers / action=callees | 功能对等 |
| 索引健康度一目了然 (+ 边数量) | `index` action=status | **领先** —— 报告 `total_edges` 作为图密度信号 |
| 预构建的调用图缓存 | `index` action=auto / action=full / action=sync | 功能对等 |
| 受变更影响的测试 (CLI) | `--affected FILE...` | 功能对等 |
### Tree-sitter Analyzer 独有功能
| 功能 | TSA 工具 | 备注 |
|---|---|---|
| **BM25 排序的符号搜索** | 所有搜索工具 | 每个结果包含 relevance_score(最小-最大归一化:最佳=1.0,最弱=0.0);DSL 中使用 sort(by='confidence') |
| **语义搜索 (BM25 预过滤)** | `search` action=chain (`semantic()` DSL) | BM25 预过滤在余弦重排前将 4 万个符号缩小到约 400 个 |
| **项目 A–F 健康度评级** | `health` action=project | 7 个维度(体积/复杂度/依赖/覆盖率/重复度/结构/git 热点),在代码智能工具中很少见 |
| **TOON 输出** | 每个工具,`output_format: "toon"` (默认) | 在批量/表格化输出上节省 50-70% 的 token |
| **裁决封装** | 每个工具 | `SAFE/CAUTION/UNSAFE/INFO/WARN/ERROR/NOT_FOUND` |
| **安全编辑门控** | `edit` action=safe / action=guard | 在高风险编辑发生前予以拒绝 |
| **架构约束 DSL** | `edit` action=constraints | “模块 A 不能导入 B” → 强制执行 |
| **代码健康度 (文件级)** | `health` action=file | 块状/过长方法/坏味道检测 |
| **类层次结构** | `structure` action=class_tree | 类型继承树 |
| **依赖矩阵** | `health` action=matrix | 模块耦合矩阵 |
| **死代码** | `health` action=dead | 传递不可达分析 |
| **复杂度热力图** | `health` action=heatmap | 每个函数的圈复杂度 + 项目视图 |
| **AST 结构克隆检测** | `viz` action=similarity | 超越文本相似性 |
| **Mermaid 调用图导出** | `viz` action=graph | 可直接粘贴到文档中 |
| **UML Mermaid 导出** | `viz` action=uml | 类 / 包 / 组件 / 时序图 |
| **PR 审查** | `edit` action=pr | AST 差异 + 语义分类 + 影响范围 |
| **agent_summary** | 每个响应 | 封装中内置了下一步提示 |
| **Synapse 跨文件解析器** | 内部 | 感知 import,超越正则猜测 |
| **时间激活度** | `nav` action=lineage | 每个符号的 git 修改频率 |
| **一次性文件导向** | `project` action=smart | 一次调用获取健康度 + 导出 + 依赖 + 编辑风险(替代 3-4 次调用) |
| **架构决策日志** | `project` action=journal | 跨会话持久化推理 —— 在代码智能工具中很少见 |
### Skills(13 个精选工作流)
CodeGraph 没有技能。我们在 `.claude/skills/tsa-*/` 下提供了 13 个:
`tsa-landing`、`tsa-find`、`tsa-graph`、`tsa-structure`、`tsa-deps`、`tsa-index`、`tsa-health-watch`、`tsa-edit-safety`、`tsa-edit-then-verify`、`tsa-constraints`、`tsa-pr-review`、`tsa-refactor-queue`、`tsa-temporal`。
每个技能都附带一个 `allowed-tools` 子集 + 操作步骤配方 + 决策面 schema,这样智能体就不必在每个问题上都在 8 个工具中进行筛选。
### 295 个 CLI 标志
作为 CodeGraph CLI 的超集。亮点:
```
tree-sitter-analyzer --table full # method/signature/complexity table
tree-sitter-analyzer --partial-read --start-line N --end-line M
tree-sitter-analyzer --project-health # A-F grade across the project
# 注意:--callers / --callees 需要 call-graph index — 请先运行 --full-index
tree-sitter-analyzer --full-index # build call-graph index (run once)
tree-sitter-analyzer --callers # who-calls
tree-sitter-analyzer --codegraph-impact # blast radius + risk
tree-sitter-analyzer --affected # tests transitively affected
tree-sitter-analyzer --dead-code # transitive unreachable
tree-sitter-analyzer --check-constraints # architectural rules
tree-sitter-analyzer --safe-to-edit # refuse if risky
tree-sitter-analyzer --uml class # Mermaid UML class diagram
```
完整接口请参阅 [`docs/CODEMAPS/cli.md`](docs/CODEMAPS/cli.md)。
## TSA 与 CodeGraph 的对比
### 调用图准确性 —— TSA 解决了 CodeGraph 错误连接的问题
Token 成本是一个维度;代码智能工具的*首要*任务是构建一个**正确的图**。
**在此仓库上进行正面交锋,两个工具都使用实时索引**(统计每一条调用者语言与被调用者语言不同的调用边 —— 这在结构上属于跨语言错误连接;[可复现](benchmarks/codegraph_compare/REPORT-v1.21.0.md)):
| 工具 | 跨语言错误连接 | 总调用边数 | 比率 |
|---|---|---|---|
| CodeGraph | **745** | 38,103 | 1.96 % |
| **Tree-sitter Analyzer** | **6** | 114,160 | **0.005 %** |
**在跨语言正确性上干净了约 390 倍,同时解析出了多 3 倍的调用边。** CodeGraph 的错误连接跨越了 19 对以上的语言组合(python→swift **408**,python→typescript 195,python→ruby 81,……);而 TSA 的 6 次错误全是由于 Java 的单词方法名导致的 `java→python/php`。
具体来说:
| 调用 (Python `_resolve_entry_points` / `build_response`) | CodeGraph | TSA |
|---|---|---|
| `sorted()` (Python 内置) | ❌ 被调用方 = **`tests/golden/corpus_swift.swift` — 一个 Swift `func sorted`**(在仓库范围内被连接为 **299** 个 Python 函数的被调用方) | ✅ `builtin` — 无跨语言边 |
| `fts_search()` / `fts_search_ranked()` | ❌ 绑定到了**测试模拟对象**(`FallbackCache`)而不是真实方法 | ✅ 解析到源方法(`_ast_cache_query.py` / `ast_cache.py`) |
TSA 的各语言解析器通过**语系**在 **13 种语言**(Python · Java · Go · JS · TS · C · C++ · Rust · C# · Kotlin · Ruby · PHP · Swift)中对每个绑定进行门控,并在其所有解析路径中为非测试调用者**降级仅用于测试的定义**。告诉智能体一个 Python 函数*调用了 Swift 方法*,或者说生产环境的调用目标是测试模拟对象,这些都是错误的结构数据 —— 而这正是仅依赖名称的索引的主要失败模式。
#### 既正确又完整 —— 96.3% 的调用边已分类
一个正确的图如果大部分边仍然是 `unknown`,那它也只算半张图。TSA 的级联解析器现在可以对 **96.3%** 的调用边进行分类(从之前的 83.9% 上升),并且具有**零**跨语言或测试遮蔽错误连接 —— 每一次提升的前提都是项目中不存在该名称的兼容语言符号,因此始终保留遮蔽特性:
| 解析层级 | 解析的内容 | |
|---|---|---|
| 绑定级联 | local / self / import / unique-method / single-global | RFC-0002 |
| 标准库 **方法**名 (`write_text`, `strip`, `items`) | `str` / `Path` / `dict` / `re` / `argparse` 方法 → `stdlib` | [RFC-0004](rfcs/0004-stdlib-method-resolution.md) |
| 外部**库**方法 (`raises`, `given`, `MagicMock`) | pytest / hypothesis / mock → `external` | [RFC-0005](rfcs/0005-external-method-resolution.md) |
剩余约 4% 的 `unknown` 主要由真正无法解析的动态分派(`BaseTool.execute()`)、构造函数和同名歧义项目方法主导 —— 这是静态分析的假阳性底线,我们保持了它的诚实性而不是胡乱猜测。
### TSA 领先的地方
- **索引构建速度。** 移除多余的后索引自适应刷新过程,将 django 的冷启动索引(约 2,950 个文件)从 **181 秒缩短至 97 秒 (−46%)**;并且仓库越大,效果越显著。对未更改文件的重新索引只需进行内容哈希查找。
- **严格的 CLI 超集。** 每个 MCP 工具都有对应的 CLI 等价物(CodeGraph 的 CLI 较为单薄);两种接口之间的*行为*默认值(排序、限制、截断)保持同步。输出格式是唯一有意的分歧 —— MCP 默认使用 TOON(对智能体而言 token 效率高),CLI 默认使用 JSON(对人类/`jq` 友好)。
- **单次调用的表达能力。** 一种 jQuery 风格的链式 DSL —— `search('X').callees(depth=2).explore(include_code=true).answer(compact=true)` —— 可以在单次调用中返回整个流程的子图 + 源码,并支持 JS 风格的 `true`/`false`,以便智能体能自然地编写。
- **输出结构化且具备 token 意识。** MCP 默认使用 TOON(在批量/表格输出上比 JSON 小 50–70%),每次调用提供截断提示,并在每个排序路径中一致地降低测试文件的优先级。
- **广度。** 健康度评分、安全编辑/变更影响门控、13 个精选 Skills 以及广泛的语言覆盖范围。
### 关于 Token 成本 —— 以及我们修正的一项基准测试
Token 成本是 CodeGraph 曾经领先的一个维度。[RFC-0006](rfcs/0006-context-progressive-disclosure.md) 渐进式披露从源头上弥补了大部分差距:`nav context` 现在返回一个**精简的默认值** —— 入口点 + 紧凑的 `related_symbols` 列表 + 代码块 —— 并将扁平的节点/边图移至可选的 `include_graph=true` 背后。在此仓库上测量(4 个代表性查询,TOON):
| 上下文负载 | 字符数 |
|---|---|
| RFC-0006 之前的 TSA 默认值 | ~13,900 |
| **RFC-0006 之后的 TSA 默认值 (精简)** | **~6,600 (−53%)** |
| TSA `include_graph=true` (完整,可选开启) | ~13,900 |
| CodeGraph 基准 | ~4,400 |
主要的上下文调用从 **~2.9× CodeGraph 的负载降至 ~1.5×**。
作为参考,以下是 RFC-0006 **之前**测量的每个任务的 `$` 成本(已更正的测试环境 —— Claude Sonnet、gin + django、MCP 测试组、无错误):
| 测试组 | 中位数成本 (RFC-0006 前) | 工具调用次数 | 文件读取次数 |
|---|---|---|---|
| CodeGraph MCP | **~$0.27** | 7 | 2 |
| Tree-sitter Analyzer MCP | ~$0.44 | 7 | 1 |
| 无 MCP (grep/read) | ~$0.34 | 14 | 7 |
下一次测量将是对每个任务的 `$` 进行全面重新基准测试(命令如下)。我们直接报告负载指标,而不是在 RFC-0006 已经发布的情况下复述旧表格。
### 响应式推送 + 边类型细分 —— CodeGraph 做不到的两件事
CodeGraph(以及大多数一次性索引器)只能在轮询时做出响应:你提问,它回复快照,然后你再提问以了解是否有任何变化。TSA 提供了两个填补这一闭环的功能:
- **响应式推送 / 订阅([RFC-0001](rfcs/0001-reactive-push.md),已实现)。** `search action=subscribe` 注册一个 Hyphae 选择器并返回一个 `tsa://hyphae/{selector}` MCP 资源 URI。当受监控的代码发生变化时,服务器会发出资源更新通知 —— 智能体重新读取该资源,而不是进行轮询。`search action=unsubscribe` 可取消订阅。CodeGraph 没有推送或订阅通道。
- **在 `index action=status` 中提供 `edges_by_kind`。** 状态返回按边类型(calls / extends / implements / imports 等)划分的计数,而不仅仅是单一的 `total_edges` —— 因此智能体可以在深入分析之前读取图的形状(例如仓库是偏向调用密集型还是继承密集型)。CodeGraph 仅提供一个扁平的总数。
在两个工具都已索引的任何仓库中复现准确性修复:
```
# CodeGraph:生成跨语言 / test-shadow callee
# (例如 `sorted` → corpus_swift.swift,`fts_search` → test mock)
# 应用 resolver 修复后的 TSA:语言正确,优先选择 source
tree-sitter-analyzer --callees _resolve_entry_points --format json
```
## 工作原理
```
Source code → tree-sitter parse → SQLite + FTS5 index (.ast-cache/index.db)
↓
nav (navigate) / structure (explore) / nav (callers) / ...
↓
TOON-encoded envelope
(compact for tabular output;
verdict + agent_summary + data)
↓
MCP client / CLI consumer
```
索引在首次查询时延迟构建,并在文件更改时通过内容哈希差异进行刷新(`index` action=sync)。所有 8 个工具都读取同一个 `.ast-cache/`,因此查询及其后续操作可以共享工作成果。
## 受支持的智能体
## 受支持的语言
21 个语言插件;13 个完全接入索引器(完整符号 + 调用图)+ 2 个已索引符号(调用图连接待定)+ 5 个(数据/标记)可通过单文件 CLI 路径访问 + 1 个脚手架(插件已存在,索引器连接待定)。bash 和 scala 在 v1.22.0 中毕业;2026-05-24 的补丁解除了对 Swift / Kotlin / Ruby / PHP / C# 的阻塞,这些语言此前已被静默跳过数月。
| 级别 | 语言 |
|---|---|
| **完整索引 + 符号 + 调用图** | Python · Java · JavaScript · TypeScript · Go · Rust · C · C++ · C# · Swift · Kotlin · Ruby · PHP |
| **完整索引 + 符号(调用图连接待定)** | Bash · Scala |
| **单文件分析 (CLI)** | HTML · CSS · Markdown · SQL · YAML |
| **脚手架(插件已存在,索引器连接待定)** | json |
CodeGraph 支持类似的语言集合。**Dart、Vue、Svelte、Lua** 尚未发布 —— 属于愿景积压任务,无确定的交付日期。
## 配置
基本上不需要配置。默认值旨在让您可以将其接入智能体后就无需理会:
* **输出格式**:TOON。可通过 `output_format: "json"` 对单次调用进行覆盖。
* **项目根目录**:`TREE_SITTER_PROJECT_ROOT` (环境变量,MCP) 或 `--project-root` (CLI)。
* **缓存位置**:`/.ast-cache/`。可以安全删除 —— 会自动重建。
* **可选**:`TREE_SITTER_OUTPUT_PATH` 用于指定大输出的写入目标。
## 质量与测试
| 指标 | 数值 |
|---|---|
| 测试通过数 | 18,493 ✅ |
| 覆盖率 | [](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer) |
| 类型安全 | 100 % mypy |
| 平台 | macOS · Linux · Windows |
| 预提交门控 | ruff · bandit · mypy · pyupgrade · detect-secrets · tsa-codemap-sync |
```
uv run pytest -q # full suite
uv run pytest -q --maxfail=1 -m "not slow and not full_language and not integration" # fast local loop
PYTEST_XDIST_AUTO_NUM_WORKERS=1 uv run pytest -q --maxfail=1 -m "not slow and not full_language and not integration" # one-worker mode for lower CPU load
PYTEST_XDIST_AUTO_NUM_WORKERS=2 uv run pytest -q --maxfail=1 -m "not slow and not full_language and not integration" # two-worker balanced mode
uv run pytest --lf --maxfail=1 # rerun only failed tests from last run
uv run python check_quality.py --new-code-only # quality gate
```
## 故障排除
| 症状 | 修复方法 |
|---|---|
| 在 `.swift / .kt / .rb / .php / .cs` 上出现 `unsupported language` | 更新至 ≥ 1.12.x —— 这 5 种语言的缺口已在提交 `50e99a8f` 中修补。受 extras 限制的语言语法模块不包含在基础安装中;请运行 `pip install "tree-sitter-analyzer[swift]"` (或 `kotlin`, `ruby`, `php`, `csharp`) 来添加它们。 |
| MCP 服务器未在客户端中显示 | `TREE_SITTER_PROJECT_ROOT` 必须为**绝对路径**;编辑配置后需重启客户端。 |
| `database is locked` | 停止任何其他占用 `.ast-cache/index.db` 的进程;如果问题持续存在,执行 `rm -rf .ast-cache && tree-sitter-analyzer --autoindex`。 |
| 首次调用缓慢 | 首次调用会构建索引。后续调用均在亚秒级完成。可预先运行 `--full-index` 以分摊开销。 |
| 智能体选择了错误的工具 | 使用 `tsa-*` 技能 (`/tsa-graph`, `/tsa-find`, ...) —— 每个技能都将可见工具集限制在一个工作流中。 |
## 开发
```
git clone https://github.com/aimasteracc/tree-sitter-analyzer.git
cd tree-sitter-analyzer
uv sync --extra all --extra mcp
uv run pytest -q
```
开发指南请参阅 **[`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md)**。
## 贡献与许可
* ⭐ 在 GitHub 上点个 Star 有助于将此工具推荐给其他 AI 智能体用户。
* 💖 [赞助](https://github.com/sponsors/aimasteracc) —— 支持持续的 MCP / Skills 开发。
* 首席赞助商:**[@o93](https://github.com/o93)**。
* MIT 许可证 —— 详见 [LICENSE](LICENSE)。
* 发布历史:[CHANGELOG.md](CHANGELOG.md)。
📘 Claude Code (推荐)
``` claude mcp add tree-sitter-analyzer \ --env TREE_SITTER_PROJECT_ROOT="$PWD" \ -- uvx --from "tree-sitter-analyzer[mcp]" tree-sitter-analyzer-mcp ``` 验证:`claude mcp list`。13 个 `tsa-*` 技能会从 `.claude/skills/` 自动发现。 **PyPI / uvx 用户** —— 只需安装一次自带的技能: ``` tree-sitter-analyzer --install-skills ``` 通过 Git 克隆的用户已经拥有它们 —— 无需任何操作。📗 Claude Desktop
编辑 `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`, Linux: `~/.config/Claude/`): ``` { "mcpServers": { "tree-sitter-analyzer": { "command": "uvx", "args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"], "env": { "TREE_SITTER_PROJECT_ROOT": "/absolute/path/to/your/project" } } } } ```📙 GitHub Copilot (VS Code)
创建 `.vscode/mcp.json` (注意:是 `servers`,而不是 `mcpServers`): ``` { "servers": { "tree-sitter-analyzer": { "type": "stdio", "command": "uvx", "args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"], "env": { "TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}" } } } } ```🖱 Cursor / Cline / Continue / Roo Code
它们都读取与 Claude Desktop 相同的 `mcpServers` schema。Cursor: **Settings → MCP**。Cline: MCP 面板 → Edit settings。Continue: `~/.continue/config.json` 中的 `experimental.modelContextProtocolServers`。Roo Code: MCP 面板 → Edit MCP Settings。🐳 Docker (无本地 Python / uv)
该仓库提供了一个 [`Dockerfile`](Dockerfile),用于从源码构建 MCP 服务器(stdio 传输),因此镜像始终与提交的代码相匹配。 ``` # 构建一次 docker build -t tree-sitter-analyzer-mcp . # 针对当前 repo 运行(server 通过 stdio 进行 MCP 通信;-i 保持 stdin 开启) docker run --rm -i --user "$(id -u):$(id -g)" \ -v "$PWD:/work" -w /work tree-sitter-analyzer-mcp ``` `--user "$(id -u):$(id -g)"` 使用您宿主机的 UID/GID 运行,因此绑定挂载仓库下的 `.ast-cache/`、决策日志以及任何 `edit` 写入操作都归您所有,而不是 root。 MCP 客户端配置(容器内的项目根目录是挂载点 `/work`): ``` { "mcpServers": { "tree-sitter-analyzer": { "command": "docker", "args": [ "run", "--rm", "-i", "--user", "1000:1000", "-v", "/absolute/path/to/your/project:/work", "-w", "/work", "-e", "TREE_SITTER_PROJECT_ROOT=/work", "tree-sitter-analyzer-mcp" ] } } } ```标签:AI代码助手, MCP, Python, SOC Prime, Tree-sitter, 云安全监控, 代码分析, 凭证管理, 开发工具, 无后门, 逆向工具, 静态分析