公关解说员mcp
](https://www.npmjs.com/package/pr-narrator-mcp)  
自动生成一致的提交消息、PR内容和发布说明。
一个MCP服务器,从git更改中生成提交消息、PR内容(标题、描述和模板)和发布说明。如果你的仓库还没有PR模板,它会自动检测域(移动、前端、后端、devops、安全、ML)并应用正确的模板——不需要配置。
安装
npx pr-narrator-mcp快速开始
光标
增添 ~/.cursor/mcp.json:
{
"mcpServers": {
"pr-narrator": {
"command": "npx",
"args": ["-y", "pr-narrator-mcp"],
"env": {
"BASE_BRANCH": "develop",
"TICKET_PATTERN": "[A-Z]+-\\d+"
}
}
}
}克劳德桌面版
添加到您的Claude Desktop配置中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"pr-narrator": {
"command": "npx",
"args": ["-y", "pr-narrator-mcp"],
"env": {
"BASE_BRANCH": "develop",
"TICKET_PATTERN": "[A-Z]+-\\d+"
}
}
}
}帆板运动
增添 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"pr-narrator": {
"command": "npx",
"args": ["-y", "pr-narrator-mcp"],
"env": {
"BASE_BRANCH": "develop",
"TICKET_PATTERN": "[A-Z]+-\\d+"
}
}
}
}VS代码(GitHub副本)
增添 .vscode/mcp.json 在您的项目中:
{
"servers": {
"pr-narrator": {
"command": "npx",
"args": ["-y", "pr-narrator-mcp"],
"env": {
"BASE_BRANCH": "develop",
"TICKET_PATTERN": "[A-Z]+-\\d+"
}
}
}
}其他MCP客户端
任何支持stdio传输的MCP客户端都可以使用此服务器。命令是:
npx -y pr-narrator-mcp就是这样!不需要配置文件。所有env变量都是可选的。
设置
所有设置都是MCP JSON中的可选环境变量:
| Env Var | 它的作用 | 示例 |
|---|---|---|
BASE_BRANCH | PR的基础分支 | develop |
TICKET_PATTERN | 票证正则表达式 | [A-Z]+-\\d+ |
TICKET_LINK | 票证URL模板 | https://jira.example.com/browse/{ticket} |
PREFIX_STYLE | 前缀格式 | capitalized 或 bracketed |
DEFAULT_REPO_PATH | 后备回购路径(单个回购工作流) | /Users/me/my-project |
PR_TEMPLATE_PRESET | 强制预置PR模板 | mobile, backend, devops |
PR_DETECT_REPO_TEMPLATE | 启用/禁用回购模板检测 | true (默认)或 false |
如果 BASE_BRANCH 如果未设置,它会从仓库(主仓库、主仓库、开发仓库)自动检测。
注意 repoPath: 所有工具都接受 repoPath 参数。调用该工具的AI应传递用户当前的工作区目录。 DEFAULT_REPO_PATH 这只是单个repo工作流的后备方案。
工具
公关生成
generate_pr
生成一份完整的PR,包括标题、描述和AI增强的上下文。自动解析仓库的最佳模板(请参阅 PR模板).
退货:
title--PR标题(占位符来源于分支/提交——AI应该重写)description--PR描述,包括已解析模板中的部分purposeContext--所有提交标题、所有提交项目符号、测试信息、文件计数purposeGuidelines--AI从所有数据中重写标题和目的的说明
重要提示: 标题和目的都是占位符。AI必须阅读所有内容 purposeContext.commitTitles 和 purposeContext.commitBullets 综合一个反映全部变化的标题和描述。
可选的 templatePreset 用于强制特定模板的参数(例如。, mobile, backend).
generate_pr_title
根据分支机构信息和提交生成PR标题。
generate_pr_description
生成带有自动填充部分的PR描述。模板分辨率与 generate_pr 但仅返回描述。接受可选 templatePreset 和 summary 参数。
get_pr_template
在生成之前预览已解析的回购PR模板。显示将根据仓库的模板文件、域自动检测或配置的预设显示哪些部分。有助于在打电话之前了解PR的样子 generate_pr.
返回模板源(repo, preset, auto-detected,或 default),检测到的域,以及基于当前分支更改的每个部分的可见性。
提交消息
generate_commit_message
根据阶段性或非阶段性更改准备提交消息上下文。
如果没有暂存,该工具会自动回退到未暂存的工作树更改,并提供暂存指令——无需运行 git add 首先,分析一下你的变化。该回复包括 source 现场("staged" 或 "unstaged")以及a hint 与确切 git add 命令运行。
当 includeBody 是真的,提供了实际的差异,这样AI就可以编写一个有意义的正文来描述 *发生了什么变化* 功能上——不仅仅是文件类型计数。
两种模式:
- 随着
summary参数(推荐): 返回具有正确前缀/格式的即用型提交消息。添加includeBody: true以获得基于diff的身体生成。 - 没有
summary: 返回占位符标题+差异+AI编写消息和正文的准则
validate_commit_message
根据配置的规则(长度、格式、大小写、命令式语气)检查提交消息。
发布说明
generate_changelog
从两个引用(标签、SHA或分支)之间的git提交历史中生成更改日志/发布说明。
- 自动解析引用 --默认值
from到最新标签(如果没有标签,则为初始提交),以及to率领 - 解析提交 --检测常规提交类型/范围,从非常规消息的关键字中推断类型,提取合著者和票证引用
- 重复数据删除 挤压合并伪影
- 三种输出格式:
keepachangelog(默认),github-release,plain - 三种分组模式:
type(默认),scope,ticket - 包括统计数据 --提交计数、贡献者计数、票证计数和单行摘要
退货 changelog (格式化标记), entries (结构化数据), summary, stats, range,以及 warnings.
存储库分析
分析it变化
分析当前存储库状态:阶段性更改、分支信息、工作树状态和文件分类。
提取门票
在分支机构名称中查找票号,并使用配置的 TICKET_PATTERN.
get_config
查看当前设置及其解析值。
前缀示例
| 分支 | 提交/PR前缀 |
|---|---|
feature/PROJ-123-add-login | PROJ-123: |
task/update-readme | Task: |
bug/fix-crash | Bug: |
main | (无前缀) |
PR模板
PR讲述人通过解析管道自动为每个存储库选择最佳模板:
- 回购模板 --如果a
PULL_REQUEST_TEMPLATE.md存在于回购中(.github/,根,或docs/),它被解析为多个部分 - 显式预设 --如果
PR_TEMPLATE_PRESET已设置或templatePreset传递给工具 - 自动检测域 --对仓库的文件树进行扫描和评分,以检测其域
- 默认 --一个通用的6节模板
这意味着在转发(iOS应用程序、Express API、Terraform infra)之间切换会自动使用正确的模板,零配置。
域自动检测
PR讲述者扫描回购文件树的前3个级别,并根据域信号模式对文件进行评分。只要达到最低阈值,得分最高的域名就获胜。
| 域 | 关键信号 | 已添加部分 |
|---|---|---|
| 移动 | .swift, .kt, .xcodeproj, AndroidManifest.xml | 屏幕截图、设备测试、可访问性 |
| 前端 | .tsx, .vue, next.config, vite.config | 屏幕截图/视觉变化、浏览器兼容性、可访问性 |
| 后端 | .go, .rs, migrations/, prisma/schema | API更改、数据库/迁移、中断更改 |
| 开发运维 | .tf, helm/, k8s/, Dockerfile | 基础设施影响、受影响的环境、回滚计划 |
| 安全 | .snyk, tfsec, trivy | 安全影响、威胁模型变化 |
| 毫升 | .ipynb, model/, training/, dvc.yaml | 模型更改、数据集更改、度量/评估 |
预置模式
| 预设 | 部分 | 最适合 |
|---|---|---|
default | 6 | 通用仓库 |
minimal | 2 | 快速PR(目的+测试计划) |
detailed | 10 | 全面审查,包括截图、重大变更、部署说明 |
mobile | 8 | iOS和Android应用程序 |
frontend | 8 | Web应用程序(React、Vue、Svelte等) |
backend | 8 | API和服务 |
devops | 8 | 基础设施和CI/CD |
security | 7 | 以安全为重点的变化 |
ml | 8 | 机器学习和数据科学 |
条件段
部分可以根据上下文显示或隐藏:
has_tickets--只有在分行名称或提交中找到票证时,才会出现票证部分file_pattern--截图部分仅在UI文件更改时出现;仅当迁移文件发生更改时才使用数据库部分commit_count_gt--更改(提交列表)部分仅在提交次数超过1次时显示
回购模板检测
如果你的回购有 PULL_REQUEST_TEMPLATE.md,PR讲述人将自动查找并解析它。支持的位置:
.github/pull_request_template.md.github/PULL_REQUEST_TEMPLATE/(挑选default.md第一)pull_request_template.md(回购根)docs/pull_request_template.md
文件名匹配不区分大小写。两者 .md 和 .txt 支持扩展。
集 PR_DETECT_REPO_TEMPLATE=false 跳过仓库模板检测,改用预设或自动检测。
安全
此MCP服务器是 只读 和 仅限本地 (stdio传输)。它永远不会修改您的git存储库、发出网络请求或处理身份验证令牌。
需要注意的事项:
- 提交消息是不受信任的输入。 来自协作者的Git提交消息被传递给AI。理论上,对抗性提交消息可以尝试提示注入。此MCP的只读性质限制了影响。
- 正则表达式模式已得到验证。 这
TICKET_PATTERN在使用之前,会检查env-var的ReDoS安全性(灾难性回溯、长度限制)。
有关完整详细信息,请参阅 安全.md.
发展
git clone https://github.com/mhaviv/pr-narrator-mcp.git
cd pr-narrator-mcp
npm install
npm run build
npm test许可证
麻省理工学院
