Git提交格式化工具

一个遵循表情符号增强型常规提交标准的Git提交消息创建、验证和格式化工具,帮助开发者生成格式良好的提交信息。

  • by AleksandrSemykin
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AleksandrSemykin/gitmoji-commit-mcp

使用说明

Gitmoji提交MCP

模型上下文协议(MCP)服务器,用于按照表情增强的传统提交标准创建、验证和格式化Git提交。

概述

此MCP服务器为AI助手提供了工具,帮助开发人员使用表情符号创建格式良好、有意义的提交消息。它实现了一个全面的提交约定,将传统提交的清晰度与表情符号的视觉吸引力相结合。

特性

  • 自动提交格式:使用正确的表情符号生成格式正确的提交消息
  • 类型建议:分析阶段性更改,并建议适当的提交类型
  • 消息验证:根据约定规则验证提交消息
  • Git集成:直接从工具无缝创建提交
  • TypeScript:全类型实施,可靠性高
  • 16种提交类型:支持主提交类型和扩展提交类型

安装

全球安装

npm install -g gitmoji-commit-mcp

本地开发

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

MCP服务器配置

将此服务器添加到MCP客户端配置中:

克劳德桌面版

编辑您的Claude Desktop配置文件:

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

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

或者,如果全局安装:

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

VSCode(原生MCP支持)

VSCode具有本机MCP支持。编辑VSCode MCP配置文件:

位置: %APPDATA%\Code\User\mcp.json (Windows)或 ~/.config/Code/User/mcp.json (macOS/Linux)

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

或者,如果全局安装(通过 npm install -g 或 npm link):

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

带连续扩展的VSCode

如果你正在使用 继续 VSCode的扩展,添加到您的继续配置中:

位置: ~/.continue/config.json (macOS/Linux)或 %USERPROFILE%\.continue\config.json (Windows)

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

OpenAI Codex

对于OpenAI Codex,编辑您的配置文件:

位置: ~/.codex/config.toml (macOS/Linux)或 %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"

或者,如果全局安装(通过 npm install -g 或 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"

其他MCP客户端

对于支持模型上下文协议的任何MCP兼容客户端:

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

备注:配置文件的位置和格式可能因客户端而异。请参阅您的特定MCP客户的文档。

可用工具

1. git_format_message

根据约定格式化提交消息。

参数:

  • type (必填):提交类型(壮举、修复、文档等)
  • title (必填):祈使语气的简要描述
  • scope (可选):类似#123、auth、api的上下文
  • description (可选):详细说明
  • breaking (可选):这是否是一个突破性的变化

例子:

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

输出:

✨ feat(auth): add OAuth2 authentication

Implemented OAuth2 flow with Google and GitHub providers.

2. git_validate_message

根据约定验证提交消息。

参数:

  • message (必填):要验证的提交消息

例子:

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

输出:

✅ Commit message is valid!

3. git_suggest_type

分析阶段性更改,并建议适当的提交类型。

参数:

  • repo_path (可选):当MCP服务器在项目目录外运行时,目标git存储库的路径

输出:

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

按照约定创建git commit。

参数: 同 git_format_message,加上:

  • repo_path (可选):当MCP服务器在项目目录外运行时,目标git存储库的路径

输出:

✅ Commit created successfully!

Commit hash: abc123def456

Message:
✨ feat(auth): add OAuth2 authentication

Implemented OAuth2 flow with Google and GitHub providers.

存储库上下文解析

Git工具(git_suggest_type, git_commit)按以下顺序解析存储库上下文:

  1. repo_path 工具调用中的参数
  2. MCP请求元数据(_meta,如果客户端提供cwd/工作区信息)
  3. 环境变量(GITMOJI_REPO_PATH, MCP_REPO_PATH, MCP_WORKSPACE_ROOT, MCP_WORKING_DIR, PROJECT_ROOT, INIT_CWD, PWD)
  4. process.cwd() MCP服务器的

如果您的客户端在存储库外启动MCP服务器,请通过 repo_path 明确地:

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

提交类型

主要类型

类型 表情符号 描述
feat ✨ 新功能
fix 🐛 bug修复
docs 📝 仅文档更改
style 🎨 代码格式(无逻辑更改)
refactor ♻️ 代码重构(无功能/修复)
perf ⚡ 性能改进
test 🧪 添加或更新测试
build 📦 构建系统/依赖关系
ci 👷 CI/CD配置
chore 🔧 维护任务
revert ⏪ 还原以前的提交

扩展类型

类型 表情符号 描述
security 🔒 安全修复
deprecate ⚠️ 弃用警告
breaking 💥 突破性变化
i18n 🌐 国际化
a11y ♿ 可访问性改进
deps ⬆️ 依赖关系更新

提交消息格式

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

<description>

规则

标题:

  • 使用命令式语气:“添加功能”而不是“添加了功能”
  • 不要将第一个字母大写
  • 末尾没有句号
  • 最多50个字符

说明:

  • 用空行与标题分隔
  • 包装长度为72个字符
  • 解释什么和为什么,而不是如何

使用示例

使用AI助手

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

手动工具使用

  1. 进行更改:
git add src/auth/*
  1. 让AI建议类型:
"What type of commit should this be?"
  1. 创建提交:
"Create a commit with type feat, scope auth, and title 'add OAuth2 authentication'"

发展

项目结构

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

构建

npm run build

观看模式

npm run watch

本地测试

对于不发布到npm的本地开发:

  1. 构建项目:
npm run build
  1. 全局链接(创建指向本地开发版本的符号链接):
npm link
  1. 测试服务器:
gitmoji-commit-mcp

服务器通过stdio进行通信,并期望收到MCP协议消息。

运行后 npm link,您可以在所有MCP客户端中使用简化的“全局安装”配置(见上面的配置示例)。符号链接确保您的本地更改在重建后立即反映出来,无需重新发布或重新安装!

整合

使用克劳德桌面

配置后,当您提出以下问题时,Claude可以自动使用这些工具:

  • “为我的更改创建提交”
  • “这应该是什么类型的承诺?”
  • “验证我的提交消息”
  • “设置添加身份验证的提交格式”

使用VSCode(继续扩展)

这 继续 扩展将人工智能辅助直接引入支持MCP的VSCode。配置后,您可以:

  • 继续分析你的阶段性更改,并建议提交类型
  • 直接在编辑器中请求格式化的提交消息
  • 提交前验证提交消息
  • 使用自然语言创建提交:“将这些更改作为bug修复提交”

用法:新闻 Cmd+L (macOS)或 Ctrl+L (Windows/Linux)打开Continue,然后与MCP工具交互。

与其他MCP客户端

任何兼容MCP的客户端都可以使用此服务器:

  • Zed编辑:在MCP设置中配置AI辅助提交
  • 自定义MCP客户端:使用stdio传输协议
  • API集成:通过模型上下文协议规范连接

使用适当的命令和参数将其添加到客户端的服务器配置中。服务器使用stdio传输并遵循标准MCP协议。

验证规则

验证器检查:

  • 所需格式: <emoji> <type>(<scope>): <title>
  • 有效类型:必须是已定义的提交类型之一
  • 表情符号匹配:表情符号必须与提交类型匹配
  • 标题长度:建议最多50个字符
  • 首字母大写:应以小写开头
  • 所有权期限:不应以句号结尾
  • 祈使语气:常见错误的基本检查
  • 描述格式:标题后空白行,72个字符行

类型建议算法

这 git_suggest_type 工具分析:

  1. 文件类型:文档、测试、配置、CI文件
  2. 文件模式:构建文件、依赖关系、源代码
  3. 变化率:添加与删除
  4. 改变音量:更改的行总数

返回带有置信度(高/中/低)的建议。

错误处理

所有工具都提供明确的错误消息:

  • 没有提交的阶段性更改
  • 提交类型无效
  • 提交消息格式错误
  • Git操作失败

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

麻省理工学院

支持

有关问题、疑问或贡献,请访问GitHub存储库。

更新日志

1.0.0 (2025-02-06)

  • 初始版本
  • 四种MCP工具:格式化、验证、建议、提交
  • 支持16种提交类型
  • TypeScript实现
  • Git与简单Git的集成
  • 全面的验证和格式化

相关


由以下材料制成❤️ 更好的Git提交