Skip to main content
Glama

Gitmoji Commit MCP

A Model Context Protocol (MCP) server for creating, validating, and formatting Git commits following the emoji-enhanced conventional commit standard.

Overview

This MCP server provides AI assistants with tools to help developers create well-formatted, meaningful commit messages with emojis. It implements a comprehensive commit convention that combines the clarity of conventional commits with the visual appeal of emojis.

Related MCP server: Cursor Auto-Review MCP Server

Features

  • Automated Commit Formatting: Generate properly formatted commit messages with correct emojis

  • Type Suggestions: Analyze staged changes and suggest appropriate commit types

  • Message Validation: Validate commit messages against convention rules

  • Git Integration: Seamlessly create commits directly from the tools

  • TypeScript: Fully typed implementation for reliability

  • 16 Commit Types: Support for primary and extended commit types

Installation

Global Installation

npm install -g gitmoji-commit-mcp

Local Development

git clone <repository-url>
cd gitmoji-commit-mcp
npm install
npm run build

MCP Server Configuration

Add this server to your MCP client configuration:

Claude Desktop

Edit your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "git-emoji-commit": {
      "command": "npx",
      "args": ["-y", "gitmoji-commit-mcp"]
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "git-emoji-commit": {
      "command": "gitmoji-commit-mcp"
    }
  }
}

VSCode (Native MCP Support)

VSCode has native MCP support. Edit your VSCode MCP configuration file:

Location: %APPDATA%\Code\User\mcp.json (Windows) or ~/.config/Code/User/mcp.json (macOS/Linux)

{
  "servers": {
    "gitmoji-commit-mcp": {
      "command": "npx",
      "args": ["-y", "gitmoji-commit-mcp"]
    }
  }
}

Or if installed globally (via npm install -g or npm link):

{
  "servers": {
    "gitmoji-commit-mcp": {
      "command": "gitmoji-commit-mcp"
    }
  }
}

VSCode with Continue Extension

If you're using the Continue extension for VSCode, add to your Continue configuration:

Location: ~/.continue/config.json (macOS/Linux) or %USERPROFILE%\.continue\config.json (Windows)

{
  "mcpServers": {
    "git-emoji-commit": {
      "command": "npx",
      "args": ["-y", "gitmoji-commit-mcp"],
      "disabled": false
    }
  }
}

OpenAI Codex

For OpenAI Codex, edit your config file:

Location: ~/.codex/config.toml (macOS/Linux) or %USERPROFILE%\.codex\config.toml (Windows)

[mcp_servers.gitmoji-commit-mcp]
transport = "stdio"
command = "npx"
args = ["-y", "gitmoji-commit-mcp"]
description = "MCP server for creating Git commits with emojis following conventional commit standards"

Or if installed globally (via npm install -g or npm link):

[mcp_servers.gitmoji-commit-mcp]
transport = "stdio"
command = "gitmoji-commit-mcp"
description = "MCP server for creating Git commits with emojis following conventional commit standards"

Other MCP Clients

For any MCP-compatible client that supports the Model Context Protocol:

{
  "servers": {
    "git-emoji-commit": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "gitmoji-commit-mcp"]
    }
  }
}

Note: Configuration file location and format may vary by client. Refer to your specific MCP client's documentation.

Available Tools

1. git_format_message

Format a commit message according to the convention.

Parameters:

  • type (required): Commit type (feat, fix, docs, etc.)

  • title (required): Brief description in imperative mood

  • scope (optional): Context like #123, auth, api

  • description (optional): Detailed explanation

  • breaking (optional): Whether this is a breaking change

Example:

{
  "type": "feat",
  "scope": "auth",
  "title": "add OAuth2 authentication",
  "description": "Implemented OAuth2 flow with Google and GitHub providers.",
  "breaking": false
}

Output:

✨ feat(auth): add OAuth2 authentication

Implemented OAuth2 flow with Google and GitHub providers.

2. git_validate_message

Validate a commit message against the convention.

Parameters:

  • message (required): The commit message to validate

Example:

{
  "message": "✨ feat(auth): add OAuth2 authentication"
}

Output:

✅ Commit message is valid!

3. git_suggest_type

Analyze staged changes and suggest an appropriate commit type.

Parameters:

  • repo_path (optional): Path to the target git repository when MCP server runs outside project directory

Output:

Suggested commit type: ✨ feat

Confidence: high
Reason: Significant additions (245 lines added vs 12 deleted) suggest new feature

Type description: A new feature

4. git_commit

Create a git commit following the convention.

Parameters: Same as git_format_message, plus:

  • repo_path (optional): Path to the target git repository when MCP server runs outside project directory

Output:

✅ Commit created successfully!

Commit hash: abc123def456

Message:
✨ feat(auth): add OAuth2 authentication

Implemented OAuth2 flow with Google and GitHub providers.

Repository Context Resolution

Git tools (git_suggest_type, git_commit) resolve repository context in this order:

  1. repo_path argument from the tool call

  2. MCP request metadata (_meta, if client provides cwd/workspace info)

  3. Environment variables (GITMOJI_REPO_PATH, MCP_REPO_PATH, MCP_WORKSPACE_ROOT, MCP_WORKING_DIR, PROJECT_ROOT, INIT_CWD, PWD)

  4. process.cwd() of the MCP server

If your client starts MCP servers outside your repository, pass repo_path explicitly:

{
  "type": "feat",
  "title": "add OAuth login",
  "repo_path": "C:/Users/Alex/Projects/my-repo"
}

Commit Types

Primary Types

Type

Emoji

Description

feat

A new feature

fix

🐛

A bug fix

docs

📝

Documentation only changes

style

🎨

Code formatting (no logic change)

refactor

♻️

Code restructuring (no feature/fix)

perf

Performance improvements

test

🧪

Adding or updating tests

build

📦

Build system/dependencies

ci

👷

CI/CD configuration

chore

🔧

Maintenance tasks

revert

Revert previous commit

Extended Types

Type

Emoji

Description

security

🔒

Security fixes

deprecate

⚠️

Deprecation warnings

breaking

💥

Breaking changes

i18n

🌐

Internationalization

a11y

Accessibility improvements

deps

⬆️

Dependency updates

Commit Message Format

<emoji> <type>(<scope>): <title>

<description>

Rules

Title:

  • Use imperative mood: "add feature" not "added feature"

  • Don't capitalize first letter

  • No period at the end

  • Maximum 50 characters

Description:

  • Separate from title with blank line

  • Wrap at 72 characters

  • Explain WHAT and WHY, not HOW

Usage Examples

With AI Assistant

User: "I added a new login feature with OAuth"

AI: Let me analyze your changes and create a commit.
[calls git_suggest_type]
This looks like a new feature. I'll create a commit for you.
[calls git_commit with type='feat', scope='auth', title='add OAuth login']

✅ Created commit: feat(auth): add OAuth login

Manual Tool Use

  1. Stage your changes:

git add src/auth/*
  1. Ask AI to suggest type:

"What type of commit should this be?"
  1. Create the commit:

"Create a commit with type feat, scope auth, and title 'add OAuth2 authentication'"

Development

Project Structure

gitmoji-commit-mcp/
├── src/
│   ├── index.ts          # MCP server entry point
│   ├── types.ts          # Type definitions and commit types
│   ├── utils.ts          # Formatting and validation
│   └── git.ts            # Git operations
├── dist/                 # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

Build

npm run build

Watch Mode

npm run watch

Testing Locally

For local development without publishing to npm:

  1. Build the project:

npm run build
  1. Link globally (creates a symlink to your local development version):

npm link
  1. Test the server:

gitmoji-commit-mcp

The server communicates via stdio and expects MCP protocol messages.

After running npm link, you can use the simplified "installed globally" configuration in all MCP clients (see configuration examples above). The symlink ensures your local changes are reflected immediately after rebuilding - no need to republish or reinstall!

Integration

With Claude Desktop

Once configured, Claude can automatically use these tools when you ask questions like:

  • "Create a commit for my changes"

  • "What type of commit should this be?"

  • "Validate my commit message"

  • "Format a commit for adding authentication"

With VSCode (Continue Extension)

The Continue extension brings AI assistance directly into VSCode with MCP support. After configuration, you can:

  • Ask Continue to analyze your staged changes and suggest commit types

  • Request formatted commit messages directly in the editor

  • Validate commit messages before committing

  • Use natural language to create commits: "Commit these changes as a bug fix"

Usage: Press Cmd+L (macOS) or Ctrl+L (Windows/Linux) to open Continue, then interact with the MCP tools.

With Other MCP Clients

Any MCP-compatible client can use this server:

  • Zed Editor: Configure in MCP settings for AI-assisted commits

  • Custom MCP Clients: Use the stdio transport protocol

  • API Integrations: Connect via the Model Context Protocol specification

Add it to your client's server configuration with the appropriate command and args. The server uses stdio transport and follows the standard MCP protocol.

Validation Rules

The validator checks for:

  • Required Format: <emoji> <type>(<scope>): <title>

  • Valid Types: Must be one of the defined commit types

  • Emoji Match: Emoji must match the commit type

  • Title Length: Recommended max 50 characters

  • Title Case: Should start with lowercase

  • Title Period: Should not end with period

  • Imperative Mood: Basic check for common mistakes

  • Description Format: Blank line after title, 72 char lines

Type Suggestion Algorithm

The git_suggest_type tool analyzes:

  1. File Types: Documentation, tests, configs, CI files

  2. File Patterns: Build files, dependencies, source code

  3. Change Ratio: Additions vs deletions

  4. Change Volume: Total lines changed

Returns suggestion with confidence level (high/medium/low).

Error Handling

All tools provide clear error messages:

  • No staged changes for commit

  • Invalid commit type

  • Malformed commit message

  • Git operation failures

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT

Support

For issues, questions, or contributions, please visit the GitHub repository.

Changelog

1.0.0 (2025-02-06)

  • Initial release

  • Four MCP tools: format, validate, suggest, commit

  • Support for 16 commit types

  • TypeScript implementation

  • Git integration with simple-git

  • Comprehensive validation and formatting


Made with ❤️ for better Git commits

Available Tools

4 tools
git_commitA

Create a git commit following the emoji-commit convention. Validates staged changes exist, formats the message, and creates the commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesThe commit type (feat, fix, docs, etc.)
scopeNoOptional scope (e.g., #123, auth, api)
titleYesBrief description in imperative mood (50 chars max)
breakingNoWhether this is a breaking change
repo_pathNoOptional path to the git repository. Use when MCP server runs outside your project directory.
descriptionNoOptional detailed explanation

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden. It does disclose important behaviors: it validates staged changes, formats the message, and creates the commit. However, it omits other relevant traits such as failure modes, commit hooks, or repository configuration needs, so it provides only partial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, front-loaded with the main action. It avoids unnecessary detail and every sentence adds value, even though 'creates the commit' appears twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters and no output schema, the description covers the core purpose and a key prerequisite, but does not explain return values or broader context like repo_path usage. Still, the schema comprehensively documents parameters, so the description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides; it does not elaborate on how parameters like 'scope' or 'breaking' are used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: 'Create a git commit following the emoji-commit convention.' It also names the resource (git commit) and differentiates from sibling tools that only format/validate/suggest messages by emphasizing the creation step: 'creates the commit.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by noting the prerequisite of staged changes ('Validates staged changes exist') and the workflow (format then create). However, it does not explicitly mention alternatives like git_format_message or state when not to use this tool, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_format_messageA

Format a commit message according to the git-emoji-commit convention. Takes commit parameters and returns a properly formatted message with emoji.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesThe commit type (feat, fix, docs, etc.)
scopeNoOptional scope (e.g., #123, auth, api)
titleYesBrief description in imperative mood (50 chars max)
breakingNoWhether this is a breaking change
descriptionNoOptional detailed explanation

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It explicitly states the tool 'returns a properly formatted message,' which implies a pure, side-effect-free operation and no repository mutation. This is adequate for a formatter, though it does not explicitly declare read-only status or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that communicates the core purpose and output without fluff. Every word earns its place, and there is no unnecessary repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple pure formatting function, the description covers input ('commit parameters') and output ('properly formatted message with emoji'). Since there is no output schema, this return-value description is sufficient. It omits deep format details, but schema and the convention named provide enough context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for all parameters, so the schema already documents meaning. The description adds no extra parameter semantics beyond the generic phrase 'commit parameters,' making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Format a commit message according to the git-emoji-commit convention' with a specific verb and resource, and clarifies it 'returns a properly formatted message with emoji.' This directly distinguishes it from sibling tools like git_validate_message, git_suggest_type, and git_commit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a formatter for commit messages but does not explicitly state when to use this tool versus alternatives. It does not name siblings or provide exclusions, leaving the agent to infer the role from the tool name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_suggest_typeA

Analyze staged git changes and suggest an appropriate commit type. Returns suggested type with reasoning.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoOptional path to the git repository. Use when MCP server runs outside your project directory.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that it returns a suggested type and reasoning, and 'analyze' implies read-only behavior. However, it doesn't explicitly state that it makes no modifications, nor does it mention any prerequisites like an initialized repository or existing staged changes. This leaves some behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the core purpose and followed by the return value. Every word is useful, with no redundancy or irrelevant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and no output schema. The description covers the main purpose and return value. It could mention that staged changes must exist or that the tool works only in a git repository, but these are minor gaps given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single optional parameter repo_path, so the description doesn't need to add param details. The baseline of 3 applies because the description adds no extra meaning beyond the schema, but it also doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: analyzing staged git changes and suggesting a commit type. The verb 'suggest' and resource 'staged git changes' are specific, and it distinguishes itself from siblings (format, validate, commit) by focusing on type suggestion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use when you have staged changes and need a commit type suggestion. It doesn't explicitly mention alternatives or exclusions, but the purpose is distinct from sibling tools, and the usage scenario is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_validate_messageA

Validate a commit message against the git-emoji-commit convention. Returns validation results with any issues or warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe commit message to validate

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return behavior ('Returns validation results with any issues or warnings') but does not detail the result structure, error handling, or whether the operation is read-only. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two sentences that are front-loaded with the primary purpose and immediately followed by the result summary. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with a single parameter and no output schema, the description adequately covers purpose and return value. It could mention usage against sibling tools or provide an example result, but given the low complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the parameter descriptions, where the 'message' parameter is described as 'The commit message to validate'. The tool description does not add any additional meaning beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Validate') and the resource ('a commit message against the git-emoji-commit convention'). This distinguishes it from siblings like git_format_message, git_suggest_type, and git_commit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by specifying the exact convention being validated, making it evident this tool is used for checking commit messages before committing. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.1
    • First observedgit_commit
    • First observedgit_format_message
    • First observedgit_suggest_type
    • First observedgit_validate_message

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct role: formatting, validating, suggesting type, and committing. There is no overlap in their primary purposes, making selection unambiguous.

Naming Consistency5/5

All tool names follow the same `git_<verb>_<object>` pattern (e.g., git_format_message, git_validate_message). The naming is consistent and predictable.

Tool Count5/5

With only 4 tools, the set is tightly focused on the gitmoji commit workflow. Each tool serves a necessary step without redundancy, making the count appropriate.

Completeness5/5

The tools cover the entire commit workflow: suggesting a type, formatting a message, validating it, and creating the commit. No obvious missing operation within the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    An intelligent MCP server that automatically generates Conventional Commits style commit messages by analyzing git diffs using LLM providers like DeepSeek and Groq. It enables developers to maintain standardized version history through natural language interactions in supported MCP clients.
    1
    2
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that uses AI to analyze code diffs and transform vague commit messages into readable, conventional commit history. It helps maintain project documentation quality by challenging unclear messages and suggesting improvements based on actual code changes.
    3
    2
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AleksandrSemykin/gitmoji-commit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server