io.github.qwertymuzaffar/udacity-commit
Validate & format git commit messages per the Udacity Git Commit Message Style Guide.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
mcp-udacity-commitclaude mcp add udacity-commit -- npx -y mcp-udacity-commit@1.2.2
{
"mcpServers": {
"udacity-commit": {
"command": "npx",
"args": [
"-y",
"mcp-udacity-commit@1.2.2"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
mcp-udacity-commit
An MCP server that validates and formats git commit messages according to the Udacity Git Commit Message Style Guide.
Install
One line — paste it into your terminal:
claude mcp add udacity-commit -- npx -y mcp-udacity-commit
For Claude Desktop, add to claude_desktop_config.json:
{
"mcpServers": {
"udacity-commit": {
"command": "npx",
"args": ["-y", "mcp-udacity-commit"]
}
}
}
Install from source
git clone https://github.com/qwertymuzaffar/mcp-udacity-commit
cd mcp-udacity-commit
npm install
npm run build
claude mcp add udacity-commit -- node "$(pwd)/build/index.js"
What it exposes
| Primitive | Name | Purpose |
|---|---|---|
| Resource | udacity://commit-styleguide | The style-guide rules, as markdown |
| Resource | udacity://branch-naming | The companion type/kebab-case branch-naming rules, as markdown |
| Tool | validate_commit_message | Checks a message against every rule (type, ≤50-char subject, capitalization, no trailing period, blank line, ≤72-char body wrap) |
| Tool | format_commit_message | Builds a compliant message from type + subject + optional body/footer |
| Tool | validate_branch_name | Checks a branch name against the companion type/kebab-case convention (e.g. feat/add-dark-mode); release/* is a typed branch with a version-style description (release/1.2.0), and base branches like main are exempt |
Example
format_commit_message turns loose parts into a compliant commit:
in: type=fix subject="prevent duplicate auth token refresh."
body="The refresh timer could fire twice under load, minting two tokens…"
footer="Resolves: #142"
out:
fix: Prevent duplicate auth token refresh
The refresh timer could fire twice under load, minting two tokens and
logging the user out. Serialize refreshes behind a single in-flight
promise so concurrent callers await the same request.
Resolves: #142
validate_commit_message flags every violation:
"Fixed the login bug." → ❌ Not compliant.
• Subject must follow "type: Subject".
• Subject must not end with a period.
validate_branch_name enforces the companion type/kebab-case convention:
"feat/add-dark-mode" → ✅ Compliant branch name.
"release/1.2.0" → ✅ Compliant branch name.
"Feature/Add_Dark_Mode" → ❌ Not compliant.
• Unknown type "Feature". Use one of: feat, fix, docs, style, refactor, test, chore, release.
• Description must be lowercase kebab-case. Got: "Add_Dark_Mode".
"main" → ✅ (base branch — feature-branch rules don't apply)
Develop
npm install
npm run build # → build/index.js
npm run test:client # spawns the server and exercises the tools
License
MIT
Frequently asked questions
What is io.github.qwertymuzaffar/udacity-commit?
Validate & format git commit messages per the Udacity Git Commit Message Style Guide.
How do I install io.github.qwertymuzaffar/udacity-commit?
It runs on your machine. In Claude Code: claude mcp add udacity-commit -- npx -y mcp-udacity-commit@1.2.2. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.qwertymuzaffar/udacity-commit need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.qwertymuzaffar/udacity-commit open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.qwertymuzaffar/udacity-commit?
It is published by qwertymuzaffar. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.