sem_impactLABSCO SUMMARY
One name collision to check before you install.
GNU Parallel ships its own sem binary at /usr/bin/sem; if you have both, run sem --version to see which one wins and fix your PATH or alias. Past that, the argument for wiring it into an agent is token cost — asking what breaks if submitOrder changes gets a precise answer from the dependency graph instead of reading files until the agent is confident.
What it is
A Rust CLI that parses your code with tree-sitter, extracts every function, class and method as an entity, and diffs at that level rather than by lines. sem mcp starts an MCP server over stdin/stdout so a coding agent can ask those questions while it works.
What you get
- Six entity-level tools for agents —
sem_impact,sem_context,sem_diff,sem_entities,sem_blame,sem_log - What breaks if an entity changes, from a cross-file dependency graph, narrowable to direct dependencies, direct dependents or affected tests —
sem_impact - Just the context needed to refactor one function, instead of reading whole files —
sem_context - Entity-level diffs with rename detection, structural hashing and word-level inline highlights, over working changes, staged changes, a commit or a range —
sem_diff - Entity-level blame showing who last touched each function, class or method —
sem_blame - One entity's history through git, so you can see how a single function evolved —
sem_log - The same operations from the CLI with plain, JSON and Markdown output, plus comparison of two files with no git repo at all
Requirements
The binary — install script, brew install sem-cli, winget, Scoop, npm install --save-dev @ataraxy-labs/sem, cargo install, a GitHub release, or Docker. sem mcp ships in the same binary, so there is nothing extra to install; register it with claude mcp add sem -- sem mcp or point any mcpServers config at the sem command. The SQLite entity cache lives outside the repository under the OS cache directory, overridable with SEM_CACHE_DIR. Cloud-backed queries are opt-in per repo — logging in does not upload a repo or send a query. Version 0.16.2, MIT licensed.
Setup effort
One command — curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/sem/main/install.sh | sh
USE CASES
Finding out what a change will break before making it
Query the impact of the entity you are about to touch, and narrow to affected tests when you only want to know what to run.
Refactoring a function without reading the whole file
Ask for exactly the context that function needs, so the model sees the relevant code and not the surrounding thousand lines.
Reviewing a change by what actually changed
Read the diff as entities — this function was modified, this class was renamed — with rename detection instead of a wall of line moves.
Working out who to ask about a function
Blame at the entity level rather than per line, and follow the function's own history through the commits that touched it.
6 tools
Listed in project docs. Your client may show a different list.
sem_contextsem_diffsem_entitiessem_blamesem_logBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Requires
sem on PATH
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/sem/main/install.sh | shMCP Clients
Claude Code
claude mcp add sem -- sem mcpCursor, Claude Desktop, Any MCP client
{
"mcpServers": {
"sem": {
"command": "sem",
"args": [
"mcp"
]
}
}
}