Arbor

io.github.Anandb71由 GitHub 帳號 Anandb71 發布v1.0.0更新於 Oct 25, 2026

The Graph-Native Intelligence Layer for Code.

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

Arbor 為本機程式碼庫建立語意相依圖,並透過 MCP 提供給助理,讓它在改動前追蹤呼叫端、影響範圍與呼叫路徑。

可以做什麼
  • 取得依 PageRank 排序、受 token 預算限制的專案骨架與架構概覽
  • 定位程式碼:搜尋符號、列出進入點、檢視檔案圖或單一節點細節
  • 追蹤相依關係:呼叫端、被呼叫端、符號間最短路徑與邏輯路徑
  • 評估改動影響:爆炸半徑、符號說明、安全稽核、批次查詢
  • 找出 Python 中 OpenAI、Anthropic 與 Gemini SDK 的呼叫及其路由與模型 ID
適用情境
適合助理在真實程式碼倉庫中工作、需要知道某處改動會破壞什麼、誰呼叫了某個函式或程式碼如何組織時使用,而不是只憑文字猜測。也適用於審查拉取請求與熟悉陌生程式碼庫。
執行需求
以本機 stdio 程序由 arbor bridge 指令啟動,需先安裝 Arbor CLI(預先編譯的執行檔、Cargo、npm 包裝或 Docker)。專案需先建立索引,例如執行 arbor setup。不需帳號、API 金鑰或遙測。
安裝前請注意
伺服器在本機讀取並索引原始碼;README 稱程式碼不會離開本機,也不傳送遙測。retirements 指令的終端報告結尾會附上付費就緒評估的邀約,但在 JSON、markdown、註解與靜默模式以及 CI 中不會顯示。若目錄附近沒有專案標記,索引可能上溯到使用者主目錄,因此應明確索引目標專案。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Arbor,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Arbor]

Code context for people and agents.
Find a function’s callers. Trace the path through your code.
Know what breaks before you break it.

arbor retirements finds direct OpenAI, Anthropic and Google SDK calls in Python code that use a retired or retiring model, and says what has to change.
OpenAI shuts down the dated gpt-4o and gpt-4.1 snapshots on 14 January 2027. Shutdown list

[Rust CI] [Crates.io] [Latest release] [GHCR] [Glama MCP Directory] [MIT License]

[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)]

Simulated replay — the arbor commands and their output are real (tokio @ 178k LOC). Methodology: BENCHMARKS.md

v3.1.1 · A fix release. The arbor retirements data was read again on 28 October 2026 and now lists the bare gpt-5 and o3, which OpenAI's deprecations page gives 11 December 2026. npx @anandb71/arbor-cli runs on npm 12, and Arbor no longer takes your home folder as the project because ~/.arbor exists. Release notes


Why Arbor

Most AI coding tools treat code as text. Arbor builds a semantic dependency graph — functions, classes, and modules as nodes; calls, imports, and inheritance as edges — then answers execution-aware questions with deterministic precision:

QuestionArbor answer
If I change this symbol, what breaks?Blast radius with depth, confidence, and risk level
Who calls this — directly and transitively?Caller/callee traversal on the call graph
What's the shortest path between A and B?A* path through real dependencies
Is this PR too risky to merge?CI gate on blast-radius thresholds

No keyword guessing. No embedding hallucinations. One graph, every interface.

Where the graph is unsure, it says so — edges carry a confidence, and ambiguous resolutions are labelled rather than hidden. An honest unknown beats a confident wrong answer.


What's new in v3.1.1

A fix release. No breaking changes; as after every upgrade, a saved graph is rebuilt once on first use.

FixWhat was wrong
Bare gpt-5 and o3OpenAI's deprecations page started listing bare IDs next to the dated snapshots after 3.1.0 was built, so model="gpt-5" or model="o3" was not listed at all. Both are listed now (11 December 2026, to GPT-5.6), with the 13 other IDs the page added.
Data read again on 28 October 2026Every provider page behind the bundled data was read and checked again. OpenAI's deprecations page lists the five dated gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini snapshots for 14 January 2027; for the bare aliases the report now cites OpenAI's API reference ("Deprecated. Announced shutdown date: 2027-01-14") and its models API. A call moving to claude-haiku-4-5-20251001 with temperature now gets a check line: Anthropic's API version 2026-10-21 rejects it on every model.
(no change) next to arguments that need reasoning offFor a call whose client Arbor could not resolve, temperature, tools or max_tokens went unchecked and "let the model reason" read (no change). They are checked now. When Arbor cannot read some of a call's arguments (**kwargs, extra_body) or a check line names one of them, each option says so instead of no change.
npx on npm 12npm 12 skips install scripts, so the binary was never downloaded. The wrapper now downloads it on first run and checks it against the release's SHA256SUMS.
The home folder as the project~/.arbor holds the global config (and, on Windows, the installed binary), so a folder under home with no nearer project marker resolved to the whole home folder, and arbor index . indexed all of it. The search now stops at the home folder.
Code graph: aliased imports and bare callsAfter from m import f as g, a call to g() now reaches f (also for import { f as g } in TypeScript and JavaScript). In Python, JavaScript, TypeScript and Go, a bare call to a function in another file counts only when the calling file can see it (in Python, when it imports the name); other languages are unchanged.

When the terminal report of arbor retirements lists a call to a retired or retiring model, it now ends with an offer of a paid readiness review. The link carries three values from the run: how many calls are listed, how many are already retired and the next shutdown date. Arbor sends nothing. The offer is not printed with --json, --markdown, --annotations or --quiet, or when the CI environment variable is set (GitHub Actions sets it), and the GitHub Action does not show it. Release notes

v3.1.0 (arbor retirements and arbor usages)

Two commands for Python code that calls AI model APIs. Both run locally, with no account, API key or telemetry.

NewWhat it does
arbor retirementsLists 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's deprecations page lists the dated gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini snapshots for shutdown on 14 January 2027; OpenAI's API reference and models API give the bare aliases the same date. More below
GitHub Action mode: retirementsThe same check in CI: a job summary of the affected calls it finds, 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_usagesThe OpenAI, Anthropic and Gemini SDK calls Arbor finds, with their 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

Python only for now. Release notes

v3.0.3 (Rust calls through paths and macros, per-symbol diff, --base)

A fix release. Every item below was a wrong answer, not a missing feature, and each ships with a regression test.

FixWhat was wrong
Rust calls resolvecrate::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 diffEvery 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 --stagedarbor 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 apartA 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 graphsAfter 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 edgesclass 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 oneA closed ring of functions filled the top of every centrality ranking. Cycles are condensed before PageRank.
HTTP bridge hardeningarbor bridge --http accepted cross-origin and DNS-rebinding requests. It now checks Origin/Host and requires JSON bodies.
Quieter bridgeThe 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.

v3.0.0 — The Right Node (symbol resolution consults the importing file)

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.

Measured

A fixture of 260 modules across 10 layers, each layer defining the same 26 function names. Ground truth is derived from the generator's own edge list, so the expected answer is exact rather than estimated.

True downstreamv2.6.0v3.0.0
1790163
1780161
1610133
14322133
12222119
362261
162246

Previously flat at about 22 regardless of the real answer. Now it tracks. Risk on the largest hub moves from LOW to CRITICAL.

Total edge count barely moves (1335 → 1334). That is the signature of misrouting rather than loss: the edges were always there, pointing at the wrong nodes.

Breaking

  • Resolution gains a ViaImport variant — an exhaustive match will not compile
  • Edges land on different nodes, so cached graphs, stored node ids, and centrality baselines from 2.6.0 will differ

Call cycles are condensed before PageRank. Each strongly connected component is ranked once and that mass is shared across its members, so a closed ring does not fill the top of the ranking and a cycle that calls out keeps its members together. The number CentralityScores reports is still the v2.6.0 percentile, i / (n - 1).

Known and still open

Written down rather than left to be discovered:

  • Small targets now over-report (36 → 61, 16 → 46). Safer direction than silence, but not yet correct.
  • Dynamic and reflective imports (importlib, __import__, import(), eval(require(...))) are unresolvable by construction and are documented as expected misses in the fixture rather than counted as defects.
v2.6.0 — Ground Truth (colliding symbols kept, deterministic resolution, edge confidence, percentile centrality)

Correctness, not speed. Each of these was silently wrong before.

FixWhy it mattered
Colliding symbols are keptSymbolTable used HashMap::insert, so a second handler, new, or process replaced the first. The loser had zero callers and was invisible to blast radius.
Resolution is deterministicSame-directory locality was decided by iterating a HashMap. Rust seeds RandomState per process, so the same binary on the same input could build different edges between runs. Now asserted across eight fresh processes.
Edges carry confidenceA proven same-file call and a same-directory guess were identical evidence. Each edge now scores [0,1] by how it resolved.
Exported TS symbols indexed onceexport_statement recursed into its children, then the generic loop recursed again — every exported symbol became two vertices sharing one node id. 133 phantom nodes on a 149-file app, 25% of the graph.
Method calls on untyped receivers resolveobj.method() was dropped outright, leaving the graph nearly edgeless on TS/JS — and an empty graph reports a blast radius of zero, which reads as "safe" rather than "unknown".
Centrality is a percentile rankScores were divided by the graph maximum, so the top node was 1.0 by construction and a 0.6 threshold meant nothing consistent between repos. Adding one hub rescaled every other node.
Resolution is O(1), not O(refs × nodes × files)Unresolvable references — stdlib and third-party calls, most call sites in real code — paid the worst case. Suffixes are now indexed.

New capability — concept search. Substring matching cannot find get_authenticated from login; they share no substring. Identifiers are now tokenized and expanded through curated concept clusters, and docstrings, signatures, and paths are indexed alongside names. Deterministic, offline, no model. Available on the library as ArborGraph::search_ranked (arbor query remains literal-substring for now).

New capability — hunk-level impact. changed_node_ids_for_ranges keeps only symbols whose lines actually changed, instead of every symbol in a touched file.

Measured on identical node sets, after the duplicate-extraction fix:

CodebaseBeforeAfter
TypeScript (149 files)172 edges196 (+14%)
Rust (arbor-graph)116 edges167 (+44%)

Graph caches from earlier versions are invalidated — centrality now means something different, so a stale cache would be read wrong.

v2.5.0 — The Last Excuse (PageRank 23x, parallel indexing, warm-start centrality)
ChangeMeasured
PageRank rewrite — flat call-graph adjacency replaces per-iteration traversal149.8ms → 6.6ms on a 10k-node graph (23x), verified side-by-side vs the old implementation
Parallel indexing — parse fans out across all cores, deterministic assemblyArbor: 253ms → 95ms · tokio (178k LOC): 2.7s → 1.6s
Warm-start centrality — watcher recomputes seed from previous scoresConverges in ~2 rounds after a one-file patch instead of the full 20-iteration budget
Convergence early-exitIteration stops at 1e-9 max delta — the budget is a ceiling, not a sentence

Think a number is wrong? cargo bench -p arbor-graph and prove it: BENCHMARKS.md.

v2.4.0 — The Agent-Native Leap (MCP 2026-07-28, HTTP transport, Tasks, MCP Apps)
FeatureWhat it does
MCP 2026-07-28Stateless server/discover, response caching (ttlMs/cacheScope), dual-version fallback for 2025-03-26 clients
Tasks extensiontasks/get · tasks/update · tasks/cancel — cold-start indexing returns task handles, not errors
MCP AppsInteractive blast-radius graph (ui://arbor/blast-radius) and architecture map (ui://arbor/architecture-map) inside agent hosts
HTTP transportarbor bridge --http --port 3333 — stateless MCP behind load balancers
Real get_blast_radiusGit-diff-aware impact analysis via shared arbor-graph::compute_blast_radius
Paginationoffset / limit / hasMore on search_symbols and get_map
BenchmarksCriterion suite + CI regression gate — see BENCHMARKS.md

Quickstart

bash
# Install (crates.io can lag the latest release: see docs/INSTALL.md)cargo install arbor-graph-cli
# Index your project (one command)cd your-project && arbor setup
# Explore before you editarbor map . --exclude-test          # ranked project skeleton (~1k tokens)arbor refactor parse_file           # blast radius of changing a symbolarbor diff                          # impact of uncommitted git changesarbor diff --base origin/main       # impact of this branch, as its PR shows it
# Wire up your AI agentclaude mcp add --transport stdio --scope project arbor -- arbor bridge

After every turn: arbor hook claude makes Claude Code show a receipt of what it changed, what it touched that you didn't ask for, and what to test. Receipts →

Agent workflow: call get_map first → search_symbols / get_file_graph to locate code → Read only the target file. Full MCP guide →


Find code that calls retiring AI models

OpenAI's deprecations page lists five dated GPT-4o, GPT-4o mini, GPT-4.1 and GPT-4.1 mini snapshots, such as gpt-4o-2024-08-06, for shutdown on 14 January 2027. It gives the bare gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini no row, but OpenAI's API reference lists each as "Deprecated. Announced shutdown date: 2027-01-14", and its models API returned that date when checked on 18 October 2026. Anthropic and Google retire models on their own dates. arbor retirements lists the direct openai, anthropic and Google SDK calls that use a retired or retiring model. For each one it shows the replacement the provider lists, the arguments that have to change with it, and the choices your repo makes first (such as whether gpt-6-luna should reason). Calls through LangChain, LiteLLM or other wrappers are not checked yet.

bash
npx @anandb71/arbor-cli retirements .
text
3 calls use models OpenAI shuts down on 14 Jan 2027 (88 days)  app/chat.py:12  gpt-4o (MODEL, line 8) → gpt-6-luna                  also change: max_tokens → max_completion_tokens                  decide: keep reasoning off (add reasoning_effort="none"; keep temperature) or let the model reason (remove temperature)  app/chat.py:21  gpt-4o-mini (line 22) → gpt-6-luna  fallback of an environment or config lookup: confirm the deployed value                  decide: keep reasoning off (add reasoning_effort="none"; check stop) or let the model reason (check stop)                  check: stop and logit_bias are not supported on gpt-6-luna (400).
  • Runs locally. No account, no API key, no telemetry; no code leaves your machine.
  • Honest about confidence. A literal is confirmed only where the usage scan has no doubt about the call. os.getenv("MODEL", "gpt-4o") fallbacks, parameter defaults, class attributes a subclass may override and calls whose routing is not certain are marked confirm first with the reason, and fail the check only with --count-unconfirmed. Calls through Azure, OpenRouter or a proxy are listed apart (--include-routed), because the provider's dates may not apply there; a base_url on the provider's own host is a direct call. Models Arbor cannot read, and code it did not analyze, are counted, not hidden.
  • Arbor does not decide for you. When the replacement behaves differently by design (gpt-6-luna runs at medium reasoning effort by default, so it can reason, where gpt-4o did not; claude-sonnet-5-5 thinks by default, where the Sonnet models it replaces did not), the report shows both options and what each costs, and changes nothing until you choose.
  • CI ready. --json, --markdown, --annotations, --markdown-out <file> and --fail-within <days>. Exit code 1 means a confirmed call uses a retired model, or one retiring inside your window; the shutdown day itself counts as retired (UTC).
  • Scope today: Python with the openai, anthropic and Google GenAI SDKs. TypeScript and JavaScript are coming.

GitHub Action (warns by default; it fails the build only if you ask it to):

yaml
      - uses: Anandb71/[email protected]        with:          mode: retirements          retirements-fail-on: never   # or: retired, or a number of days such as 90

How it works, the data sources and the full scope →


For AI agents (MCP)

Arbor ships a production MCP server via arbor bridge. Stdio is the default; HTTP is opt-in for remote/enterprise.

bash
# Stdio (Claude, Cursor, VS Code)arbor bridge
# HTTP (MCP 2026-07-28)arbor bridge --http --port 3333

Cursor / VS Code

json
{  "mcpServers": {    "arbor": {      "type": "stdio",      "command": "arbor",      "args": ["bridge"]    }  }}

Templates: templates/mcp/ · Setup scripts: scripts/setup-mcp.sh · scripts/setup-mcp.ps1

17 MCP tools

TierToolsUse when
Orientationget_mapFirst call — token-budgeted project skeleton ranked by PageRank
Surgicallist_entry_points · get_callers · get_callees · search_symbols · get_file_graph · get_node_detailNavigate to a specific symbol or file
Broadget_logic_path · analyze_impact · find_path · get_knowledge_pathTrace dependencies, blast radius, paths
Agent-nativeget_blast_radius · explain_symbol · audit_security · get_architecture_overview · batch_queryPR impact, onboarding, security audit, bulk lookup
SDK usagefind_api_usagesWhere the code calls the OpenAI, Anthropic or Gemini SDKs, with routing and model IDs (Python)

Every tool returns { ok, tool, data, meta: { suggested_next_tool, suggested_next_args } } so agents chain calls without re-prompting.

Registry: io.github.Anandb71/arbor · Official API lookup · Glama listing


CLI reference

CommandDescription
arbor setupOne-shot init + index
arbor mapRanked, 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-pointsHTTP 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 usagesOpenAI, 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
arbor retirementsDirect 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)
arbor diffGit-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 checkCI safety gate (--max-blast-radius N, --base <ref>)
arbor summaryAuto-generate PR description (--base <ref>)
arbor agent reviewAutonomous PR architecture review
arbor agent onboardCodebase onboarding guide
arbor agent guardReal-time architectural safety gate
arbor bridgeMCP server (add --http for HTTP transport)
arbor watchLive re-index on file changes
arbor receipt list / show / undoPlain-English receipts of what each agent turn changed, and undo for a turn (guide)
arbor hook claudeWire Arbor into Claude Code: directives, receipts after every turn
arbor guiNative desktop UI

All query commands support --json. map additionally supports --tokens N, --focus "pattern", --focus-changed.


Visual tour

[Arbor visualizer screenshot]


Installation

bash
# macOS / Linux: prebuilt binary from the latest GitHub releasecurl -fsSL https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.sh | bash
# Windows (PowerShell)irm https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.ps1 | iex
# Scoop (Windows)scoop install https://raw.githubusercontent.com/Anandb71/arbor/main/packaging/scoop/arbor.json
# Rust / Cargo (crates.io can lag the latest release)cargo install arbor-graph-cli
# npm wrapper (cross-platform)npx @anandb71/arbor-cli
# Dockerdocker pull ghcr.io/anandb71/arbor:latest

Pinned installs: docs/INSTALL.md


Language support

Production parsers: Rust · TypeScript / JavaScript · Python · Go · Java · C / C++ · C# · Dart

Fallback parsers: Kotlin · Swift · Ruby · PHP · Shell

Adding languages →


CI & pull requests

bash
arbor diff --markdownarbor check --max-blast-radius 30 --markdownarbor summary

GitHub Action (pre-built binary, ~5s vs ~3–5min compile):

yaml
name: Arbor Checkon: [pull_request]
jobs:  arbor:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4        with:          fetch-depth: 0
      - uses: Anandb71/[email protected]        with:          command: check . --max-blast-radius 30 --markdown          comment-on-pr: true          github-token: ${{ secrets.GITHUB_TOKEN }}

mode: retirements runs arbor retirements instead. It writes a job summary that lists each call it finds to a retiring model and annotates the 10 most urgent lines, GitHub's limit per step (guide).


Architecture

arbor-core (Tree-sitter parsing)    └── arbor-graph (petgraph + PageRank + impact analysis)            ├── arbor-cli      — CLI + MCP bridge            ├── arbor-mcp      — MCP protocol server            ├── arbor-server   — WebSocket JSON-RPC            ├── arbor-watcher  — incremental file watcher            └── arbor-gui      — desktop UI

Docs: Quickstart · Architecture · Graph schema · MCP integration · Receipts · Benchmarks · Roadmap · Philosophy

Release channels: GitHub Releases · crates.io · GHCR · npm · VS Code / Open VSX · Scoop — Releasing guide


Philosophy

  1. Consumer first — beautiful, intuitive, instantly useful
  2. Accessibility second — works across ecosystems, runs anywhere
  3. Affordability next — minimal overhead, from laptops to monoliths

Arbor is local-first: no mandatory data exfiltration, offline-capable, open source. Security policy →


Contributing

bash
cargo build --workspacecargo test --workspacecargo clippy --workspace --all-targets --all-features

CONTRIBUTING.md · Good first issues · Code of conduct


Contributors

[Anandb71] [holg] [cabinlab] [Karthiksenthilkumar1] [zacwolfe] [sanjayy-j] [sathguru07] [Junaid]

7 contributors | View all


License

MIT — see LICENSE.

來源:README.md,提交 b6e50ee

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分