
ChangeAtlas
io.github.robyrorov0.1.0更新於 Oct 9, 2026
Local Git change impact and related test discovery with inspectable import paths
概覽
ChangeAtlas 讓助理檢查本機 Git 儲存庫,找出可能受某次變更影響的檔案與測試,並提供可檢視的匯入路徑。
- 功能
- 它會從受追蹤的 Python、JavaScript 與 TypeScript 檔案建立本機匯入圖,並從被變更的檔案沿反向連結找出附近的模組與測試。它提供四個工具:repository_overview、analyze_changes、trace_file 與 find_tests。結果會包含每個建議背後的文件鏈,analyze_changes 會把工作區(含已暫存的變更)與某個 Git 提交比較。它不會執行專案程式碼、測試指令、套件管理器或 Git 鉤子。
- 適用情境
- 當你變更了某個模組,想在提交前取得一份簡短、有依據的待檢查位置清單時使用。它適合靜態匯入關係足以提示相關檔案與測試的本機儲存庫。它不判斷變更是否安全,也不判斷測試是否涵蓋某個行為。
- 執行需求
- 需要 Python 3.11 或更新版本以及 Git。伺服器透過 stdio 在本機執行,需要把 CHANGEATLAS_ROOT 環境變數設為要檢查的 Git 儲存庫絕對路徑。根目錄由執行伺服器的人設定,工具呼叫無法更改。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ChangeAtlas,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
ChangeAtlas
ChangeAtlas shows which local files and tests may be affected by a Git change. It follows static imports and returns the file path behind every link, so you can inspect the evidence yourself. It runs on your machine, reads your repository, and does not send its contents to a service.
It is useful when you have changed a module and want a short, grounded list of places to check before committing. It does not decide whether a change is safe or whether a test covers a behavior.
Install
Requires Python 3.11 or newer and Git.
Point it at the exact root of a Git repository:
For an MCP client, configure a stdio server with command mcp-changeatlas and arguments --root, the repository path, and serve. For example:
The four tools are repository_overview, analyze_changes, trace_file, and find_tests. The root is set by the person running the server and cannot be changed by a tool call.
The Docker image is for directory build checks and a self-contained demo. It analyzes the repository snapshot inside the image. To analyze your own work, install the package locally and set --root to your repository.
How it works
ChangeAtlas reads tracked Python, JavaScript, and TypeScript files and builds a local import graph. Python imports are parsed with the standard library AST. JS/TS relative import, export, and require links are found statically. It follows reverse links from a changed file to nearby modules and tests, up to a chosen depth. Results include the file chain that led to each suggestion.
analyze_changes compares the working tree, including staged changes, with a Git commit. include_untracked adds untracked file names. It never runs project code, test commands, package managers, or Git hooks. It resolves paths and rejects files that point outside the configured repository. File and result counts have fixed limits.
This first release resolves local Python imports and relative JS/TS imports. It cannot follow runtime imports, package aliases, monorepo path mappings, or non-code dependencies. Deleted and unsupported files are shown under unindexed_changes; an incomplete result is marked as such. A suggested test is a path through imports, not a coverage claim.
Development
Publishing
The package name and MCP Registry name are set in pyproject.toml, README.md, and server.json. Before the first PyPI release, create a pending trusted publisher for robyroro/mcp-changeatlas, workflow release.yml, environment pypi. Then publish a GitHub release tagged with the matching package version. The release workflow runs tests and publishes the wheel and source archive through PyPI's trusted publishing flow.
Once the exact version is visible on PyPI, run the Publish to MCP Registry GitHub Actions workflow. It validates server.json and publishes it with GitHub OIDC, following the Registry publisher guide. The registry is a separate publication step. A repository or PyPI release alone does not create a registry listing.
License
MIT
來源:README.md,提交 64fc723
工具
0版本歷史
1- v0.1.0最新Oct 9, 2026
