使用说明
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密钥(提供免费层)
安装
- 克隆此存储库:
git clone https://github.com/jdpask21/create-releasenote-svn-mcp.git
cd create-releasenote-svn-mcp
- 使用uv安装依赖项(推荐):
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
或者使用pip:
pip install -r requirements.txt
- (可选)设置外部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客户端:
-
生成发布说明:
- 使用
generate_release_note带有SVN存储库路径和修订范围的工具 - 该工具将获取日志,用Claude对其进行汇总,并可选择保存到文件中
- 使用
-
手动工作流程:
- 使用
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客户端配置中的绝对路径
- 检查是否安装了所有依赖项
- 查看客户端的日志文件以了解错误消息
文档
有关详细指南和参考: