About versionbump
versionbump is a CLI and MCP server that computes a semantic-version bump from commits and public API changes. It applies ordered rules and returns the evidence behind its recommendation, with local, deterministic validation.
Key features
- 01Major, minor, patch, or none recommendations
- 02Commit and API change analysis
- 03Evidence listed in fixed order
- 04Strict semver and input validation
- 05Local CLI and MCP server
Use cases
- 01Choosing the next release version
- 02Reviewing why a bump level was selected
MCP support
Exposes the recommend_version_bump tool to MCP clients. It accepts a current version, commits, and optional API changes, and returns the next version, bump level, and reasons.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| commits | array | Yes | Commits since the current version (may be empty) |
| api_changes | array | No | Public API surface changes since the current version (optional, default []) |
| current_version | string | Yes | Current version, strict MAJOR.MINOR.PATCH semver (e.g. "1.4.2") |
Details
From the project READMEversionbump
Choosing the next version number is usually a judgement call made from memory: "this feels like a minor". versionbump makes it a computation instead. You give it the current version, the commits since that version, and the public API surface changes since that version, and it applies the semantic-versioning rules mechanically — then lists the evidence for the level it chose, so anyone can check its work:
- Major — a commit is marked breaking, or an API entry was
removed or changed incompatibly. The next version is
(X+1).0.0. - Minor — no breaking signal, but a
featcommit landed or an API entry was added. The next version isX.(Y+1).0. - Patch — no breaking or feature signal, but there are
commits. The next version is
X.Y.(Z+1). - None — no commits and no API changes at all. The next version is the current version, unchanged.
The first matching rule wins, but the evidence is complete,
not just the winner: reasons lists every breaking commit,
every breaking API change, every feature commit, and every
added API entry, in that fixed order, each group in input
order. A patch bump carries the single reason
no breaking or feature signals; <n> commit(s) present, and
a none bump carries no commits and no API changes supplied.
Feature detection is exact: a commit is a feature only when
its type is precisely feat (case-sensitive); every other
commit type is patch-level unless it is marked breaking. The
current version must be strict MAJOR.MINOR.PATCH semver —
no prerelease or build suffix. Malformed input — a bad
version string, a commit without a type, an API change with
an unknown kind — is a validation error naming the offending
path (for example commits[1].type must be a non-empty string), and no partial recommendation is produced. The
computation is pure and local: no network, no configuration,
no files read beyond the input you pass in.
CLI
npx @reneturcios/versionbump recommend --input args.json
npx @reneturcios/versionbump --version
args.json contains the full arguments object:
{
"current_version": "1.4.2",
"commits": [
{ "type": "feat" },
{ "type": "fix", "breaking": true }
],
"api_changes": [
{ "kind": "added", "name": "exportReport" }
]
}
breaking defaults to false per commit and api_changes
defaults to []. The recommendation is printed as JSON:
{
"current_version": "1.4.2",
"next_version": "2.0.0",
"bump": "major",
"reasons": [
"commit[1] of type \"fix\" is marked breaking",
"commit[0] is a feature (\"feat\")",
"API entry \"exportReport\" was added"
]
}
Exit codes: 0 on success, 1 on a runtime error (including
an unreadable or invalid input file, or invalid input), 2
on a usage error.
MCP server
npx -y @reneturcios/versionbump mcp
MCP client config:
{
"mcpServers": {
"versionbump": {
"command": "npx",
"args": ["-y", "@reneturcios/versionbump", "mcp"]
}
}
}
Tools
-
recommend_version_bump— Recommend the next semantic version from commit types and API surface changes, listing the evidence for the bump level chosen.current_version(string, required) — strictMAJOR.MINOR.PATCHsemver, e.g."1.4.2"commits(array, required, may be empty) — commits as{type, breaking?}objects;typeis the conventional-commit type andbreakingdefaults tofalseapi_changes(array, optional, default[]) — API changes as{kind, name}objects, wherekindis one of"removed","changed","added"
Returns
{current_version, next_version, bump, reasons}.
Docker
docker run -i ghcr.io/cloudcorprecords/versionbump
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/versionbump recommend --input /w/args.json
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.