Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Render a release changelog from merged pull requests, grouped by label, in Markdown.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"changelogforge": {
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add changelogforge -- npx -y @reneturcios/changelogforge mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"changelogforge": {
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"changelogforge": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub CloudCorpRecords ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.0) เข้า registry 4 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js, Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า 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.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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