Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Render a release changelog from merged pull requests, grouped by label, in Markdown.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"changelogforge": {
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add changelogforge -- npx -y @reneturcios/changelogforge mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"changelogforge": {
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"changelogforge": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account CloudCorpRecords, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 4 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js, Docker on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Python MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Local-only Python MCP server for the Files.com API.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A release is ready, the pull requests are merged, and now someone has to turn that list into the changelog section readers will actually scan. changelogforge does that one job: it takes the merged pull requests for a release, sorts them into labelled groups, and renders the section as Markdown in a fixed, predictable shape.
group_order that it carries. The default order is feature, bugfix, documentation, maintenance, and you can supply your own list to rename, reorder, add, or drop groups. Matching is exact and case-sensitive.Other changes. Groups that end up empty are left out entirely, and the other group only appears when it has something in it.group_order with the other group always last, and inside a group the pull requests are sorted by number ascending, so the same input always renders the same section.heading_level (default 2) and group headings one level deeper. The result also returns the grouped structure itself, so a caller can render the same data another way.Version and date are printed in the heading exactly as given; neither is parsed or reformatted. Pull request numbers must be unique across the list — a repeat is a validation error naming both occurrences, for example pull_requests[2].number duplicates pull_requests[0].number — and every other malformed field is likewise an error naming its path, with no partial section produced. The computation is pure and local: no network, no configuration, no files read beyond the input you pass in.
npx @reneturcios/changelogforge generate --input args.json
npx @reneturcios/changelogforge --version
args.json contains the full arguments object:
{
"version": "1.2.0", "date": "2026-10-27", "pull_requests": [ { "number": 7, "title": "Add export button", "labels": ["feature"] }, { "number": 12, "title": "Fix crash on empty input", "labels": ["bugfix"] }, { "number": 15, "title": "Tidy internals" } ] }
labels defaults to [] per pull request, group_order to ["feature", "bugfix", "documentation", "maintenance"], and heading_level to 2. The rendered section is printed as JSON:
{
"version": "1.2.0", "date": "2026-10-27", "groups": [ { "group": "feature", "heading": "feature", "pull_requests": [{ "number": 7, "title": "Add export button" }] }, { "group": "bugfix", "heading": "bugfix", "pull_requests": [{ "number": 12, "title": "Fix crash on empty input" }] }, { "group": "other", "heading": "Other changes", "pull_requests": [{ "number": 15, "title": "Tidy internals" }] } ], "markdown": "## 1.2.0 (2026-10-27)\n\n### feature\n\n- Add export button (#7)\n\n### bugfix\n\n- Fix crash on empty input (#12)\n\n### Other changes\n\n- Tidy internals (#15)", "total_pull_requests": 3 }
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.
npx -y @reneturcios/changelogforge mcp
MCP client config:
{
"mcpServers": { "changelogforge": { "command": "npx", "args": ["-y", "@reneturcios/changelogforge", "mcp"] } } }
generate_changelog — Render a release changelog section from merged pull requests, grouped by label.version (string, required) — release version label, printed verbatim in the headingdate (string, required) — release date, printed verbatim in the headingpull_requests (array, required, at least one) — merged pull requests as {number, title, labels?} objects; number is unique across the listgroup_order (array of strings, optional) — labels that define groups, in output orderheading_level (integer, optional, 1–5) — Markdown heading level for the version headingReturns {version, date, groups, markdown, total_pull_requests}.
docker run -i ghcr.io/cloudcorprecords/changelogforge
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/changelogforge generate --input /w/args.json
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
MIT — Copyright (c) 2026 Rene Turcios