Validate commit messages, branch names, author info, push safety, and repo state.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Model Context Protocol (MCP) server for commit-check.
commit-check-mcp exposes commit-check as local MCP tools so an MCP client can validate commit messages, branch names, author info, push safety, and repository state.
This MCP server exposes commit-check validations as MCP tools:
server_health β returns server/sdk versionsvalidate_commit_message β validates a commit messagevalidate_branch_name β validates a branch name or the current repo branchvalidate_push_safety β validates that a push is not a force push (force pushes are always rejected by this tool)validate_author_info β validates author name/email or the repo's git author configvalidate_commit_context β runs combined checks in one callvalidate_repository_state β validates latest commit, current branch, author state, and optional push safety for a repodescribe_validation_rules β returns the effective config and enabled rules after merging defaults and repo configAll validation tools return the same structured commit-check result shape:
rule_id is the stable id of the rule that produced the check and docs_url
links to its documentation.
Only fail is a rejection. A check reports skip when it did not run β the
author matched ignore_authors, or there was nothing to check β and the
top-level status is skip only when every check skipped, so a run that
validated nothing is never reported as a pass. A check reports warn when the
config lists it under warn: the finding is complete, but it does not fail
the run, the top-level status stays pass, and warnings counts them.
suggest is the advice a person reads. fix is the corrected value itself,
present only when the correction is unambiguous β Fix: add x comes back with
"fix": "fix: add x" β and an empty string otherwise, so an agent can apply
a non-empty fix as it stands and fall back to suggest when it is empty.
A call that cannot run at all β an empty message, a repo_path that does not
exist, a repo_path that is not a git repository when the tool has to read git
state (see the repo_path note under Tool Usage), a malformed or rejected
commit-check config, a push_refs SHA that is not a commit in repo_path even
after the force-push check tried to fetch it β is returned as an MCP tool error
(is_error) whose text names the problem, for example
repo_path is not a git repository: /path/to/dir,
invalid commit-check config: ... or
push_refs: <sha> is not a commit in the repository; fetch it first, the force-push check cannot be judged,
rather than as a pass/fail result. In particular a push whose SHAs cannot
be judged is never reported as a pass.
This installs the commit-check-mcp CLI entrypoint.
For local development from this repository:
This server runs over stdio, so it is meant to be launched by an MCP client rather than used as a long-running HTTP service.
With uvx (recommended β no install needed):
Tip: If
uvis not installed, get it viacurl -LsSf https://astral.sh/uv/install.sh | sh.
Every client below launches the same command; only the config file and, for a few clients, the wrapper key differ. This is the object to register:
| Client | Where it goes | Notes |
|---|---|---|
| Claude Code | claude mcp add commit-check -- uvx commit-check-mcp | Add --scope project to write a shareable .mcp.json at the repo root (--scope user makes it available in all your projects). You can also commit a .mcp.json containing the block above; "type": "stdio" may be added inside the server object. MCP servers are not configured in ~/.claude/settings.json. |
| Claude Desktop | macOS ~/Library/Application Support/Claude/claude_desktop_config.json; Windows %APPDATA%\Claude\claude_desktop_config.json | Block above as-is; restart Claude Desktop. |
| Cursor | project .cursor/mcp.json or global ~/.cursor/mcp.json | Block above as-is (or Settings β Cursor Settings β MCP β Add new MCP server with command uvx commit-check-mcp). |
| VS Code (Copilot agent mode) | .vscode/mcp.json | Different key: {"servers": {"commit-check": {"type": "stdio", "command": "uvx", "args": ["commit-check-mcp"]}}} |
| Cline | MCP Servers panel β Configure β cline_mcp_settings.json (check your client's docs) | Block above as-is. |
| Roo Code | project .roo/mcp.json or global mcp_settings.json (Edit Global MCP) | Block above as-is; optional "alwaysAllow": [...]. |
| Windsurf | ~/.codeium/windsurf/mcp_config.json (check your client's docs) | Block above as-is. |
| Continue | config.yaml (or a file in .continue/mcpServers/) | YAML list under mcpServers:, see below. Continue also picks up the JSON block above when dropped into .continue/mcpServers/. |
| Zed | ~/.config/zed/settings.json | Different key: {"context_servers": {"commit-check": {"command": "uvx", "args": ["commit-check-mcp"]}}} |
| Anything else | your client's MCP config | If the client cannot run uvx: pip install commit-check-mcp, then set "command" to the absolute path of the installed binary and drop args. Find it with which commit-check-mcp (macOS/Linux), where commit-check-mcp (Windows cmd) or Get-Command commit-check-mcp | Select-Object -ExpandProperty Source (PowerShell). |
Continue's config.yaml entry in full (name, version and schema are required by Continue; drop them if you are adding only the mcpServers fragment to an existing file, or save this as a standalone file in .continue/mcpServers/):
The server uses stdio transport, which is the recommended MCP default for local tool integrations.
After the client starts the server, it will expose these tools:
server_health: returns server, SDK, and dependency versionsvalidate_commit_message(message, config?, repo_path?, config_path?)validate_branch_name(branch?, config?, repo_path?, config_path?)validate_push_safety(push_refs?, config?, repo_path?, config_path?)validate_author_info(author_name?, author_email?, config?, repo_path?, config_path?)validate_commit_context(message?, branch?, author_name?, author_email?, config?, repo_path?, config_path?)validate_repository_state(repo_path?, config?, config_path?, include_message?, include_branch?, include_author?, include_push?)describe_validation_rules(config?, repo_path?, config_path?)Every parameter carries a description in the tool's JSON input schema, so an
MCP client (and the model behind it) can see what each one expects without
reading this file: for example push_refs documents the git pre-push line
format <local_ref> <local_sha> <remote_ref> <remote_sha>. Each tool also has
a display title and MCP tool annotations: destructiveHint: false and
idempotentHint: true everywhere, readOnlyHint: true on the six tools that
only read, and readOnlyHint: false with openWorldHint: true on
validate_push_safety and validate_repository_state, because the force-push
check may run git fetch to resolve a SHA, which updates FETCH_HEAD and
remote-tracking refs (the working tree and commits are never touched). Clients
that gate tool calls on those hints can auto-approve the read-only six. The
server's instructions describe the intended
loop: validate first, read status (only fail rejects, skip is not
approval), apply a non-empty fix verbatim or follow suggest, then validate
again.
The common optional arguments are:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/commit-check-mcp)<a href="https://allmcps.com/mcp/commit-check-mcp"><img src="https://allmcps.com/api/badge/commit-check-mcp?style=directory" alt="Commit Check MCP on AllMCPs" /></a>