Tently, the AI PR reviewer for GitHub: agents check team decisions before they write code.
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @tently/mcp
MCP client config
{
"mcpServers": {
"tently": {
"command": "npx",
"args": [
"-y",
"@tently/mcp"
]
}
}
}Tently is an AI code reviewer for GitHub pull requests. It catches the two things diff-only reviewers miss: regressions in code that depends on the change, and changes that break design decisions your team made on purpose. It learns those decisions from your merged pull requests, review threads and docs, and checks every pull request against them.
This repo is Tently's MCP server: the same decisions, inside Claude Code, Cursor or Codex while the agent writes code, before a pull request exists.
Tently is one decision store with two gates:
| Gate | When | What it does |
|---|---|---|
| Pull request review (GitHub App) | Every PR | Posts a check run and inline comments for regressions and decision drift, with the evidence attached |
| This MCP server | While the agent writes | Lets the agent look up the decisions that apply and the blast radius of a change |
The MCP server needs a Tently workspace. Request early access at tently.dev.
Create an API key on the Connect page at app.tently.dev, then run this from your repo root:
npx @tently/mcp init --agent claude --api-key <your key>
Or pass the key through the environment:
TENTLY_API_KEY=<your key> npx @tently/mcp init
init adds the tently server to .mcp.json (Claude Code) or .cursor/mcp.json (Cursor), and
installs a small skill that tells the agent when to use it. It backs up any file before editing
it, keeps your other MCP servers, and prints every change. Restart your agent afterwards.
--agent takes claude, cursor, both or auto (the default, which detects what's in the
repo).
{
"mcpServers": {
"tently": {
"command": "npx",
"args": ["-y", "@tently/mcp", "mcp"],
"env": { "TENTLY_API_KEY": "<your key>" }
}
}
}
search_decisions: the decisions that apply to the code it's about to change, from your
Tently workspace. Each one says whether breaking it is blocking or advisory.query_impact_zone: the blast radius of a symbol (who calls it, what it depends on),
computed locally on your checkout with CodeGraph.
Your source code never leaves your machine. The index lives in .codegraph/, which init
adds to .gitignore.Impact results are evidence, not proof: callers reached through interfaces, dynamic dispatch or re-exports can be missed, and the tool says so in its output.
| Variable | Meaning |
|---|---|
TENTLY_API_KEY | Workspace API key (required for search_decisions) |
TENTLY_API_URL | API origin, default https://api.tently.dev |
TENTLY_WORKING_DIR | Directory query_impact_zone indexes, default the current directory |
search_decisions sends your query text and the file paths you pass to the Tently API. Nothing
else leaves your machine: query_impact_zone runs entirely locally. See
tently.dev for how Tently handles data.
npm install
npm test
npm run build
node dist/cli.js mcp # start the server on stdio
Requires Node.js 20 or later.
Issues and pull requests are welcome. For anything beyond a small fix, please open an issue first so we can agree on the approach.