Arbor代码智能分析 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.2 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
基于图神经网络的开源代码智能工具,用AST替代嵌入式RAG实现确定性代码分析。提供精确的代码理解和智能补全,适合开发者、代码审查和AI应用集成场景。
Arbor代码智能分析 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
基于图神经网络的开源代码智能工具,用AST替代嵌入式RAG实现确定性代码分析。提供精确的代码理解和智能补全,适合开发者、代码审查和AI应用集成场景。
Arbor代码智能分析 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/Anandb71/arbor
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"arbor------": {
"command": "npx",
"args": ["-y", "arbor"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 Arbor代码智能分析 执行以下任务... Claude: [自动调用 Arbor代码智能分析 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"arbor______": {
"command": "npx",
"args": ["-y", "arbor"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/arbor-lockup-dark.svg" /> <source media="(prefers-color-scheme: light)" srcset="docs/assets/arbor-lockup-light.svg" /> <img src="docs/assets/arbor-lockup-dark.svg" alt="Arbor" width="300" /> </picture> </p>
<p align="center"> <strong>Code context for people and agents.</strong><br> Find a function’s callers. Trace the path through your code.<br> Know what breaks <em>before</em> you break it. </p>
<p align="center"> <a href="https://github.com/Anandb71/arbor/actions"><img src="https://img.shields.io/github/actions/workflow/status/Anandb71/arbor/rust.yml?style=flat-square&label=Rust%20CI" alt="Rust CI" /></a> <a href="https://crates.io/crates/arbor-graph-cli"><img src="https://img.shields.io/crates/v/arbor-graph-cli?style=flat-square&label=crates.io" alt="Crates.io" /></a> <a href="https://github.com/Anandb71/arbor/releases"><img src="https://img.shields.io/github/v/release/Anandb71/arbor?style=flat-square&label=release" alt="Latest release" /></a> <a href="https://github.com/Anandb71/arbor/pkgs/container/arbor"><img src="https://img.shields.io/badge/GHCR-container-blue?style=flat-square" alt="GHCR" /></a> <a href="https://glama.ai/mcp/servers/@Anandb71/arbor"><img src="https://img.shields.io/badge/MCP%20Directory-Glama-6f42c1?style=flat-square" alt="Glama MCP Directory" /></a> <img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License" /> </p>
<p align="center"> <img src="docs/assets/arbor-demo.gif" alt="Side-by-side: an agent navigating tokio with grep-and-read (47 tool calls, still searching) vs the same agent with arbor's code graph (4 graph calls + 1 read, done)" width="900" /> </p> <p align="center"> <sub>Simulated replay — the <code>arbor</code> commands and their output are real (tokio @ 178k LOC). Methodology: <a href="docs/BENCHMARKS.md">BENCHMARKS.md</a></sub> </p>
v3.1.0 · Find code that calls retiring AI models:arbor retirementslists the direct OpenAI, Anthropic and Google SDK calls in a Python project that use a retired or retiring model, with the listed replacement and what has to change, locally or as a GitHub Action.arbor usagesand the MCP toolfind_api_usageslist every such SDK call with its routing and model. Release notes
---
A feature release: two commands for Python code that calls AI model APIs. Both run locally, with no account, API key or telemetry.
| New | What it does |
|---|---|
**arbor retirements** | Lists the direct openai, anthropic and Google SDK calls that use a model its provider has retired or is retiring: the date, the replacement the provider lists, the arguments that change with it and the choices your repo makes first. OpenAI shuts down gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini on 14 January 2027. [More below](#find-code-that-calls-retiring-ai-models) |
**GitHub Action mode: retirements** | The same check in CI: a job summary that lists every affected call, and warnings on the most urgent lines. It warns by default and fails the build only when you set retirements-fail-on, or when the check cannot run. |
**arbor usages and find_api_usages** | Every OpenAI, Anthropic and Gemini SDK call with its file and line, client routing (direct, Azure, custom base_url, Bedrock, Vertex) and model IDs, for people and agents. A value is confirmed only inside a small supported grammar; everything else carries a typed gap. [What a report confirms](docs/SDK_USAGES.md) |
Python only for now; graph extraction is unchanged (a saved graph is rebuilt once on first use, as after every upgrade). See the 3.0.5 release notes for the previous release.
<details> <summary><strong>v3.0.3</strong> (Rust calls through paths and macros, per-symbol diff, <code>--base</code>)</summary>
A fix release. Every item below was a wrong answer, not a missing feature, and each ships with a regression test.
| Fix | What was wrong |
|---|---|
| **Rust calls resolve** | crate::jobs::enqueue(), Type::new(), self.helper() and calls inside assert!/format! produced no edge, so heavily used Rust functions reported no callers. Paths now resolve through the module tree, and macro arguments are read as code. |
**Per-symbol arbor diff** | Every symbol in a touched file counted as changed, so adding a function to a busy file reported that file's whole blast radius. New symbols now carry none; only modified ones do. Tests that call the change are listed as worth running, not counted as impact. |
**--base and --staged** | arbor diff, check and summary saw only uncommitted edits unless ARBOR_DIFF_BASE was set. --base origin/main compares against the merge base, which is what a pull request shows; --staged checks just what is staged. |
| **Languages stay apart** | A TypeScript enqueue could be reported as a caller of a Rust enqueue. Resolution stays within a language family, and callers/callees list each same-named definition separately. |
| **No stale graphs** | After a branch switch, answers came from the old branch's graph when no remaining file was newer than it. The graph now records the commit it was built from and refreshes when HEAD moves. |
| **Inheritance edges** | class Middle(Base) produced no edge, so changing a base class showed zero blast radius. extends/implements edges are emitted and inherited methods stay reachable. |
| **Call cycles rank as one** | A closed ring of functions filled the top of every centrality ranking. Cycles are condensed before PageRank. |
| **HTTP bridge hardening** | arbor bridge --http accepted cross-origin and DNS-rebinding requests. It now checks Origin/Host and requires JSON bodies. |
| **Quieter bridge** | The bridge re-indexed ignored build directories in a busy loop. |
Also new: arbor receipt. After each coding-agent turn it explains, in plain English, what changed and what was touched that you didn't ask for, with arbor receipt undo to put a turn back.
Cached graphs from 3.0.0 are rebuilt automatically on first use.
</details>
<details> <summary><strong>v3.0.0 — The Right Node</strong> (symbol resolution consults the importing file)</summary>
One fix, measured.
Symbol resolution consults the importing file. When a bare name matched definitions in several modules, resolve_ref fell through to SameDir and attached the edge to whichever definition sat in the caller's own directory — not a dropped edge, a confidently misrouted one, stamped at 0.55 confidence.
GraphBuilder already kept a per-file import map, but only apply_import_validation read it, and that scores an edge after one has been chosen. It never saw the references going to the wrong node. Consulting it between the same-file and same-directory checks keeps a local definition shadowing an import, while letting a written import beat mere adjacency. Resolution::ViaImport scores 0.93, above SameDir's 0.55.
cargo install arbor-graph-cli
```bash
docker pull ghcr.io/anandb71/arbor:latest ```
Pinned installs: docs/INSTALL.md
---
```bash
| Command | Description |
|---|---|
arbor setup | One-shot init + index |
arbor map | Ranked, token-budgeted project skeleton |
arbor query <term> | Fuzzy symbol search (supports \| OR) |
arbor callers / callees <sym> | One-hop graph traversal. Same-named symbols are listed per definition; narrow with jobs::enqueue, Type.method or src/jobs.rs:enqueue |
arbor entry-points | HTTP handlers, main, jobs, webhooks |
arbor file-graph <path> | Symbols + edges in one file |
arbor inspect <sym> | Full symbol detail |
arbor path <a> <b> | Shortest call-graph path |
arbor refactor <sym> | Blast radius before refactoring |
arbor usages | OpenAI, Anthropic and Gemini SDK calls in Python: client routing (direct, Azure, custom base_url, Bedrock, Vertex), model IDs and typed gaps; never prints credentials. --sdk openai\|anthropic\|google, --json. What a value with no gap confirms: [docs/SDK_USAGES.md](docs/SDK_USAGES.md) |
arbor retirements | Direct SDK calls to AI models their provider has retired or is retiring (Python): date and days left, listed replacement, the argument changes and per-repo choices it needs. --fail-within <days>, --count-unconfirmed, --include-routed, --json, --markdown, --annotations ([guide](docs/RETIREMENTS.md)) |
arbor diff | Git-change impact report, per symbol: new symbols carry no blast radius. --base <ref> compares against the merge base (what a PR shows), --staged only staged changes |
arbor check | CI safety gate (--max-blast-radius N, --base <ref>) |
arbor summary | Auto-generate PR description (--base <ref>) |
arbor agent review | Autonomous PR architecture review |
arbor agent onboard | Codebase onboarding guide |
arbor agent guard | Real-time architectural safety gate |
arbor bridge | MCP server (add --http for HTTP transport) |
arbor watch | Live re-index on file changes |
arbor receipt list / show / undo | Plain-English receipts of what each agent turn changed, and undo for a turn ([guide](docs/RECEIPTS.md)) |
arbor hook claude | Wire Arbor into Claude Code: directives, receipts after every turn |
arbor gui | Native desktop UI |
All query commands support --json. map additionally supports --tokens N, --focus "pattern", --focus-changed.
---
arbor bridge
{
"mcpServers": {
"arbor": {
"type": "stdio",
"command": "arbor",
"args": ["bridge"]
}
}
}
Templates: templates/mcp/ · Setup scripts: scripts/setup-mcp.sh · scripts/setup-mcp.ps1
创新性强,以确定性图分析替代概率RAG,技术方向正确。代码质量好,Rust实现高效稳定,有望成为代码智能领域标杆工具。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,Arbor代码智能分析 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | arbor |
| 原始描述 | 开源MCP工具:Graph-native code intelligence that replaces embedding-based RAG with determinis。⭐117 · Rust |
| Topics | 代码分析图神经网络AST解析MCP协议Rust工具 |
| GitHub | https://github.com/Anandb71/arbor |
| License | MIT |
| 语言 | Rust |
收录时间:2026-05-19 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端