模块1:基本MCP服务器 - 起始代码
欢迎来到模块1!在本模块中,你将构建一个基本的MCP服务器,它通过分析代码更改并建议合适的模板,帮助开发者创建更优质的拉取请求。
你的任务
使用三个工具实现一个MCP服务器:
- 分析文件更改 - 获取git diff信息和已更改的文件
- 获取采购请求模板 - 列出可用的PR模板
- 建议模板 - 允许克劳德建议最合适的模板
设置
1. 安装 uv
请按照官方安装指南进行操作,指南地址为:https://docs.astral.sh/uv/getting-started/installation/
2. 安装依赖项
# Install all dependencies
uv sync
# Or install with dev dependencies for testing
uv sync --all-extras3. 开始实施!
开放 server.py 并按照TODO注释来实现每个工具。
注起始代码包含返回“未实现”错误的存根实现。这使您能够:
- 立即运行服务器
- 用Claude测试你的设置
- 将每个存根替换为您的实际实现
- 查看有关每个工具应执行任务的有用提示
设计理念
您的工具不应基于文件扩展名或模式使用僵化的规则,而应向Claude提供原始的git数据,让Claude的智能来决定:
- 正在做出什么样的改变
- 哪个模板最合适
- 如何根据特定更改自定义模板
测试您的实现
- 运行单元测试:
uv run pytest test_server.py -v- 在Claude代码中配置MCP服务器:
# Add the MCP server
claude mcp add pr-agent -- uv --directory /absolute/path/to/module1/starter run server.py
# Verify it's configured
claude mcp list- 在Git仓库中做一些更改,然后请Claude分析你的更改并建议一个PR(Pull Request)模板
需要帮助吗?
- 检查解决方案中的内容
../solution/如果你遇到难题 - 记住:目标是为Claude提供它所需的数据,而不是自己实现复杂的逻辑
模块2:GitHub Actions 集成
此模块为PR Agent增加了GitHub Actions webhook集成以及MCP提示功能,以实现标准化的CI/CD工作流。
模块2中新增的功能
- GitHub Actions 工具:
- get_recent_actions_events() - 查看最近的Webhook事件 - get_workflow_status() - 检查工作流程状态
- MCP 提供 CI/CD 提示/引导:
- analyze_ci_results - 全面的CI/CD分析 - create_deployment_summary - 便于团队部署的更新 - generate_pr_status_report - 组合代码和CI/CD报告 - troubleshoot_workflow_failure - 系统化的调试指南
- Webhook 服务器:
- 在端口8080上运行的独立脚本 - 接收 GitHub Actions 事件 - 存储事件于 github_events.json 以便MCP服务器读取
安装
# From the solution directory
uv sync设置 Cloudflare 隧道
要在本地接收GitHub的webhooks,您需要设置Cloudflare Tunnel(cloudflared):
步骤1:安装cloudflared
macOS:
brew install cloudflaredWindows: 从以下地址下载Windows安装程序: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi 的中文翻译可以是:“https://github.com/cloudflare/cloudflared 发布的最新版本下载地址:cloudflared-windows-amd64.msi”。不过,通常我们不会直接翻译网址,而是说明其含义或用途。所以,也可以简化为:“Cloudflare 的 cloudflared 工具的最新 Windows AMD64 位 MSI 安装包下载链接”
Linux:
# For Debian/Ubuntu (amd64)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
# For other Linux distros, download the appropriate binary:
# https://github.com/cloudflare/cloudflared/releases/latest步骤2:启动隧道
# This creates a public URL that forwards to your local webhook server
cloudflared tunnel --url http://localhost:8080你会看到类似这样的输出:
Your quick tunnel has been created! Visit it at:
https://random-name-here.trycloudflare.com步骤3:配置GitHub Webhook
- 前往你的GitHub仓库 → 设置 → 通知(或“网络钩子”)
- 点击“添加Webhook”
- 设定 有效载荷URL 收件人:
https://your-tunnel-url.trycloudflare.com/webhook/github - 设定;套装;一组 内容类型 收件人:
application/json - 选择事件:
- 工作流运行 - 检查运行情况 - 或者选择“发送给我全部内容”
- 点击“添加Webhook”
运行服务器
用于开发
# Terminal 1: Start the webhook server
python webhook_server.py
# Terminal 2: Start Cloudflare Tunnel (if testing with real GitHub)
cloudflared tunnel --url http://localhost:8080
# Terminal 3: Start the MCP server
uv run server.py与克劳德·科德一起
- 添加到Claude代码设置中:
{
"pr-agent-actions": {
"command": "uv",
"args": ["run", "server.py"],
"cwd": "/path/to/github-actions-integration/solution"
}
}- 重启Claude代码
- 在另一个终端中,启动 webhook 服务器:
python webhook_server.py - (可选)如果使用真实的GitHub webhooks进行测试,则启动Cloudflare Tunnel
测试Webhooks
手动测试
# Send a test webhook
curl -X POST http://localhost:8080/webhook/github \
-H "Content-Type: application/json" \
-H "X-GitHub-Event: workflow_run" \
-d '{
"action": "completed",
"workflow_run": {
"id": 123456789,
"name": "CI Tests",
"head_branch": "main",
"run_number": 42,
"status": "completed",
"conclusion": "success",
"html_url": "https://github.com/user/repo/actions/runs/123456789",
"updated_at": "2024-01-01T10:00:00Z"
},
"repository": {
"full_name": "user/repo"
},
"sender": {
"login": "test-user"
}
}'与克劳德·科德一起
设置好webhooks并推送提交后:
- 查看最近的事件:
- 问:“我们收到了哪些 GitHub Actions 事件?” - 克劳德将使用 get_recent_actions_events()
- 分析CI状态:
- 使用提示:“分析CI结果” - 克劳德将检查工作流程并提供见解
- 创建部署概要:
- 使用提示:“创建部署摘要” - 克劳德将进行一次团队友好的更新格式调整
模块结构
server.py- 主MCP服务器,配备工具和提示webhook_server.py- 用于存储事件的独立Webhook服务器github_events.json- 存储webhook事件的文件(自动创建)pyproject.toml- 两台服务器的依赖项README.md- 这个文件
下一步行动
- 完成模块中的练习
- 尝试不同的提示工作流程
- 继续进入模块3,了解Hugging Face Hub的集成
模块3:Slack通知 - 完整解决方案
这是模块3的完整实现,展示了如何通过Slack集成MCP工具和提示来促进团队沟通。
这实现了什么
此解决方案对模块1和模块2进行了扩展,增加了:
send_slack_notification工具 - 通过Webhook向Slack发送格式化消息,并进行适当的错误处理format_ci_failure_alert提示 - 使用Slack Markdown创建丰富的失败警报format_ci_success_summary提示 - 创建成功部署的庆祝信息
设置与使用
- 安装依赖项:
uv sync- 设置Slack Webhook:
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"- 启动服务:
# Terminal 1: Webhook server
python webhook_server.py
# Terminal 2: MCP server
uv run server.py
# Terminal 3: Cloudflare tunnel (optional)
cloudflared tunnel --url http://localhost:8080测试
看见 manual_test.md 用于使用curl命令全面测试GitHub webhook事件的模拟指南。
关键学习成果
此解决方案展示了所有MCP(机器控制协议)原语如何协同工作,以实现现实世界中的团队自动化。
