SVN版本说明生成器

一款基于MCP协议的服务器,利用LLM(如Claude或Gemini)自动从SVN提交日志生成版本说明。

  • by jdpask21
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jdpask21/create-releasenote-svn-mcp

使用说明

SVN发行说明生成器MCP服务器

英语| 日本语

一个MCP(模型上下文协议)服务器,使用LLM摘要(Claude或Gemini)从SVN提交日志中自动生成发布说明。

特性

此MCP服务器提供以下工具:

1. get_svn_logs

检索指定修订范围的SVN提交日志。

参数:

  • repository_path:SVN存储库的路径
  • revision_range:SVN修订范围(例如,“100:200”或“HEAD:100”)
  • output_format:输出格式,“文本”或“xml”(默认:“文本”)

2.MCP提示汇总SVN日志

🎯 推荐方法-直接使用Cline的LLM!

不同的模板格式有多个提示。选择一个符合您需求的:

summarize_svn_logs_japanese_2_prompt ⭐ 默认

日语格式2-推荐用于大多数日本项目

Template: templates/japanese_release_note_template_2.txt
Usage: Cline: summarize_svn_logs_japanese_2_promptを使ってSVNログを要約して

summarize_svn_logs_default_prompt

英文格式-适用于国际项目

Template: templates/default_release_note_template.txt
Usage: Cline: summarize_svn_logs_default_promptを使ってSVNログを要約して

summarize_svn_logs_japanese_prompt

日语格式1-替代日语格式

Template: templates/japanese_release_note_template.txt
Usage: Cline: summarize_svn_logs_japanese_promptを使ってSVNログを要約して

summarize_svn_logs_custom_prompt

自定义模板-用于您自己的模板文件

Parameters:
  - svn_logs: SVN log text
  - template_path: Path to your custom template
Usage: Cline: summarize_svn_logs_custom_promptで
       template_path="templates/my_template.txt"を使ってSVNログを要約して

为什么有多个提示? 每个提示都专用于一个特定的模板,允许您明确选择使用哪种格式。这可以防止MCP主机自动选择您不想要的模板。

另请参见:

3. summarize_logs_with_llm (工具)

用于汇总日志的替代工具。

默认情况下,提供了使用上述MCP提示的说明。 如果已配置,可以选择使用外部LLM API。

参数:

  • svn_logs:要汇总的SVN日志文本
  • llm_provider:要使用的LLM提供者(“claude”或“gemini”)。仅在use_host_llm为False时使用
  • use_host_llm:如果为True(默认),则返回提示指令。如果为False,则使用外部API

3. generate_release_note

完整的工作流程:获取SVN日志,用LLM对其进行汇总,并可选择保存到文件中。

参数:

  • repository_path:SVN存储库的路径
  • revision_range:SVN修订范围(例如“100:200”)
  • output_file:保存发行说明的可选文件路径
  • append_mode:如果为True,则追加到文件而不是覆盖

4. append_to_release_note

将内容附加到现有的发行说明文件中。

参数:

  • file_path:发布说明文件的路径
  • content:要附加的内容

先决条件

  • Python 3.10或更高版本
  • 已安装SVN(Subversion)命令行客户端
  • 不需要API密钥! 使用MCP主机的LLM(例如,VSCode中的Cline)
  • 可选:用于外部API使用的LLM API密钥:
    • Claude的Anthropic API密钥,或
    • Gemini的Google API密钥(提供免费层)

安装

  1. 克隆此存储库:
git clone https://github.com/jdpask21/create-releasenote-svn-mcp.git
cd create-releasenote-svn-mcp
  1. 使用uv安装依赖项(推荐):
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -r requirements.txt

或者使用pip:

pip install -r requirements.txt
  1. (可选)设置外部LLM API密钥:

默认情况下,服务器使用MCP主机的LLM(例如,VSCode中的Cline),因此不需要API密钥!

如果你想使用外部LLM API:

选项A:使用克劳德(拟人)

# Create a .env file
echo "ANTHROPIC_API_KEY=your-api-key-here" > .env

选项B:使用Gemini(谷歌)

# Create a .env file
echo "GOOGLE_API_KEY=your-google-api-key-here" > .env

选项C:两者都有(明确选择)

# Create a .env file with both keys
cat > .env << EOF
LLM_PROVIDER=claude
ANTHROPIC_API_KEY=your-api-key-here
GOOGLE_API_KEY=your-google-api-key-here
EOF

获取API密钥:

  • 克劳德:https://console.anthropic.com/
  • 双子座:https://aistudio.google.com/apikey(免费版可用)

用法

作为MCP服务器运行

此服务器旨在与兼容MCP的客户端(如Claude Desktop、Cline或其他MCP客户端)一起使用。

使用Claude桌面版

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "svn-releasenote": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/create-releasenote-svn-mcp",
        "run",
        "python",
        "-m",
        "src.main"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "your-api-key-here",
        "GOOGLE_API_KEY": "your-google-api-key-here"
      }
    }
  }
}

直接运行

您也可以直接运行服务器:

python -m src.main

示例工作流程

一旦连接到MCP客户端:

  1. 生成发布说明:

    • 使用 generate_release_note 带有SVN存储库路径和修订范围的工具
    • 该工具将获取日志,用Claude对其进行汇总,并可选择保存到文件中
  2. 手动工作流程:

    • 使用 get_svn_logs 获取原始日志
    • 使用 summarize_logs_with_llm 生成摘要
    • 使用 append_to_release_note 添加其他部分

配置

LLM选择

默认值:使用主机LLM(无需配置)

默认情况下,服务器使用MCP主机的LLM(例如,VSCode中的Cline)。这意味着:

  • ✅ 不需要API密钥
  • ✅ 无额外费用
  • ✅ 安装后立即工作
  • ✅ 使用您已经在IDE中使用的LLM

环境变量(可选)

仅当您想使用外部LLM API时才需要:

  • ANTHROPIC_API_KEY:您的Anthropic API密钥(用于直接访问Claude API)
  • GOOGLE_API_KEY:您的Google API密钥(用于直接访问Gemini API)
  • LLM_PROVIDER:(可选)指定要使用的外部LLM:“claude”或“gemini”

要使用外部API而不是主机LLM,请执行以下操作: 集 use_host_llm=False 通话时 summarize_logs_with_llm

SVN存储库访问

确保您有权访问要分析的SVN存储库。服务器将使用您的本地SVN凭据。

项目结构

create-releasenote-svn-mcp/
├── src/                      # Source code
│   └── main.py              # MCP server implementation
├── templates/               # Release note templates
│   ├── default_release_note_template.txt
│   ├── japanese_release_note_template.txt
│   └── japanese_release_note_template_2.txt
├── tests/                   # Test scripts
│   ├── test_main.py        # Unit tests (pytest)
│   ├── test_quick.py       # Quick SVN log test
│   ├── test_host_llm.py    # Host LLM functionality test
│   ├── test_multiple_prompts.py  # Multiple prompts test
│   ├── test_template.py    # Template loading test
│   └── test_svn/           # SVN test repository
├── examples/               # Example scripts
│   └── generate_release.py # Standalone script example
├── docs/                   # Documentation
│   ├── TEMPLATE_GUIDE.md
│   ├── PROMPTS_SELECTION_GUIDE.md
│   ├── PROMPTS_USAGE.md
│   └── HOST_LLM_FEATURE.md
└── README.md

发展

运行测试

使用pytest进行单元测试:

pytest tests/

手动测试脚本:

从项目根目录运行:

# Quick SVN log retrieval test
python tests/test_quick.py

# Host LLM functionality test
python tests/test_host_llm.py

# Multiple prompts test
python tests/test_multiple_prompts.py

# Template loading test
python tests/test_template.py

示例用法:

# Standalone release note generator
python examples/generate_release.py

使用SVN存储库进行测试

对于手动测试,您可以使用示例提交创建一个测试SVN存储库:

Windows(PowerShell):

cd tests\test_svn
.\setup_test_repo.ps1

此脚本将:

  • 创建一个包含10个示例提交的测试SVN存储库
  • 包括各种类型的更改(错误修复、功能、文档等)
  • 显示测试的存储库路径和修订范围

看 tests/test_svn/README.md 了解详细的使用说明。

代码质量

本项目使用ruff进行植绒:

ruff check src/

安全考虑

  • API密钥应存储在 .env 文件,从未提交到版本控制
  • 这 .env 文件已包含在 .gitignore
  • 仅提供您有权读取的SVN存储库的访问权限
  • 发布前审查生成的发行说明

许可证

MIT许可证-有关详细信息,请参阅许可证文件

贡献

欢迎投稿!请随时提交拉取请求。

故障排除

“svn:找不到命令”

为您的操作系统安装Subversion(SVN)客户端:

  • macOS: brew install svn
  • Ubuntu/Debian: sudo apt-get install subversion
  • Windows:从下载https://tortoisesvn.net/

“未配置LLM提供程序”

确保您已创建 .env 具有至少一个API密钥的文件:

对于克劳德:

echo "ANTHROPIC_API_KEY=your-api-key-here" > .env

对于双子座(提供免费套餐):

echo "GOOGLE_API_KEY=your-google-api-key-here" > .env

LLM提供商选择

默认情况下,系统将根据可用的API密钥自动检测要使用的LLM(Claude优先)。要明确选择提供者,请设置 LLM_PROVIDER 环境变量:

echo "LLM_PROVIDER=gemini" >> .env

与MCP客户端的连接问题

  • 验证MCP客户端配置中的绝对路径
  • 检查是否安装了所有依赖项
  • 查看客户端的日志文件以了解错误消息

文档

有关详细指南和参考:

相关项目