MCP服务器和提示
此存储库提供 MCP(模型上下文协议)提示定义 用于编排三个MCP服务器生态系统:Azure DevOps、Playwright测试和MySQL查询。这些提示实现了常见开发工作流的自动化,包括工作项管理、端到端测试和数据库操作。
📋 目录
______________________________________________________________________
架构概述
此存储库使用 模型上下文协议(MCP) 通过三个MCP服务器将AI助手(如GitHub Copilot)与外部服务连接起来:
┌─────────────────────────────────────────────────────┐
│ AI Assistant (VS Code + MCP Client) │
└────────────┬────────────────────────────────────────┘
│
├──► Azure DevOps MCP Server
│ (Work items, sprints, assignments)
│
├──► Playwright MCP Server
│ (Browser automation, testing)
│
└──► MySQL MCP Server
(Database queries, CRUD operations)关键概念:
- MCP服务器:公开工具/功能的后端服务
- 提示:中的可重用自动化脚本
.github/prompts/ - 参数:配置行为的环境变量或提示参数
- 工具:MCP服务器暴露的单个操作
______________________________________________________________________
先决条件
1.启用MCP的客户端
您需要一个支持MCP的AI助手或IDE:
- VS Code 带有GitHub Copilot和MCP扩展
- 其他MCP兼容客户端(克劳德桌面等)
2.MCP服务器配置
这 .vscode/mcp.json 该文件配置了三个服务器(Azure DevOps、Playwright、MySQL)。
3.环境变量(Azure DevOps)
Azure DevOps提示所必需的:
AZDO_ORG_URL例如。,https://dev.azure.com/your-orgAZDO_PROJECT:项目名称AZDO_TEAM:团队名称AZDO_USER_EMAIL:您的电子邮件
可选:
AZDO_AREA_PATH,AZDO_WORK_ITEM_TYPES,AZDO_PRIORITY_MIN/MAX,CONFIRM_ASSIGN
4.应用程序结构(Playwright/MySQL)
对于Playwright和MySQL提示:
- 应用程序必须在
/project/文件夹 - 测试申请代码:
/project/src/ - 工件(截图、痕迹):
/project/traces/,/project/screenshots/
______________________________________________________________________
初始设置
步骤1:配置MCP服务器
- 打开VS代码 在此存储库中
- 安装MCP扩展 如果尚未安装
- 验证
.vscode/mcp.json存在并且配置正确 - 重新启动VS代码 加载MCP服务器
出现提示时,提供:
- Azure DevOps组织:您的组织名称(例如。,
contoso) - Azure DevOps域:空间分隔域以实现(例如。,
core work repositories)
步骤2:设置Azure DevOps环境变量(PowerShell)
使用提供的安装脚本:
# Navigate to repository root
cd "c:\VickyJD\CG\Project\SWE-Project Gen AI\repo\mcp-server-and-prompts"
# Run the setup script
. .\scripts\prompts\set-azure-devops-env.ps1或手动设置:
$env:AZDO_ORG_URL = "https://dev.azure.com/your-org"
$env:AZDO_PROJECT = "YourProject"
$env:AZDO_TEAM = "YourTeam"
$env:AZDO_USER_EMAIL = "you@example.com"
$env:CONFIRM_ASSIGN = "false" # Dry-run mode步骤3:验证应用程序结构(Playwright/MySQL)
确保您的测试应用程序存在:
/project/
├── src/ # Application source code (REQUIRED)
│ ├── app.py # Example: Flask application
│ ├── templates/ # HTML templates
│ └── README.md # Application documentation
├── traces/ # Playwright traces (auto-created)
├── screenshots/ # Test screenshots (auto-created)
└── requirements.txt # Dependencies______________________________________________________________________
可用提示
Azure DevOps提示
位于 .github/prompts/,这些提示将自动化Azure DevOps工作项管理:
| 提示文件 | 目的 | 用例 |
|---|---|---|
azure-devops-assign-current-sprint-task.prompt.md | 查找并分配未分配的冲刺工作项 | 自动为自己分配下一个任务 |
azure-devops-get-task-details.prompt.md | 获取工作项的详细信息 | 开始工作前查看任务详细信息 |
azure-devops-update-work-item.prompt.md | 更新工作项字段(状态、优先级等) | 更改任务状态,添加注释 |
implement-work-azure-devops-assign-by-id.prompt.md | 按ID分配特定工作项 | 直接分配已知任务 |
剧作家测试提示
| 提示文件 | 目的 | 用例 |
|---|---|---|
playwright-run-flow.prompt.md | 执行临时测试流而不保存测试文件 | 快速验证用户流 |
playwright-diagnose-fix-retest.prompt.md | 分析测试失败,提出修复方案,然后重新运行 | 调试并修复失败的测试 |
MySQL数据库提示
| 提示文件 | 目的 | 用例 |
|---|---|---|
mysql-run-query.prompt.md | 执行SQL查询(SELECT、INSERT、UPDATE、DELETE、DDL) | 查询数据库,修改数据 |
______________________________________________________________________
如何使用提示-一步一步
🎯 场景1:分配下一个Sprint任务(Azure DevOps)
目标:从当前冲刺中查找并分配优先级最高的未分配任务。
步骤1:设置环境变量
# Run the setup script
. .\scripts\prompts\set-azure-devops-env.ps1
# Or set manually
$env:AZDO_ORG_URL = "https://dev.azure.com/your-org"
$env:AZDO_PROJECT = "MyProject"
$env:AZDO_TEAM = "MyTeam"
$env:AZDO_USER_EMAIL = "you@example.com"
$env:CONFIRM_ASSIGN = "false" # Start with dry-run第二步:打开提示
- 在VS Code中,打开
.github/prompts/azure-devops-assign-current-sprint-task.prompt.md - 或者通过GitHub Copilot调用:键入
@workspace并参考提示
步骤3:执行提示
- 在VS代码聊天:询问“使用azure devops分配当前sprint任务提示符来查找我的下一个任务”
- AI将:
1. 查询当前冲刺迭代 1. 查找未分配的工作项 1. 按优先级、最近更新和剩余工作排序 1. 返回最佳候选人
第4步:查看模拟运行结果
输出将显示:
{
"workItem": {
"id": 12345,
"title": "Implement login feature",
"type": "Task",
"priority": 1,
"remainingWork": 4,
"url": "https://dev.azure.com/..."
},
"action": "DRY_RUN - Would assign to you@example.com"
}步骤5:确认分配
如果任务看起来不错:
$env:CONFIRM_ASSIGN = "true"然后重新运行提示以实际分配任务。
步骤6:验证
查看Azure DevOps以确认:
- 任务已分配给您
- 添加了一条评论:“通过MCP提示自动分配”
______________________________________________________________________
🎭 场景2:测试应用程序流(剧作家)
目标:验证仪表板应用程序中的订单创建流程。
步骤1:确保应用程序正在运行
# Navigate to project folder
cd project
# Start the application
python src/app.py
# Application runs at http://localhost:5000步骤2:验证文件夹结构
确认 /project/src/ 与您的应用程序代码一起存在:
/project/src/
├── app.py
├── templates/
│ └── index.html
└── database.py步骤3:打开提示
打开 .github/prompts/playwright-run-flow.prompt.md
步骤4:定义测试步骤
在VS Code Chat中,提供参数:
Use playwright-run-flow prompt with these parameters:
BASE_URL: http://localhost:5000
HEADLESS: false
TRACE: true
STEPS:
[
{ "action": "goto", "waitUntil": "networkidle" },
{ "action": "fill", "selector": "#customer_name", "value": "John Doe" },
{ "action": "fill", "selector": "#product", "value": "Laptop" },
{ "action": "fill", "selector": "#quantity", "value": "2" },
{ "action": "click", "selector": "button[type=submit]" },
{ "action": "assert", "assert": { "type": "textContains", "selector": "body", "value": "Order created successfully" } }
]步骤5:执行测试
AI将:
- 分析
/project/src/了解应用程序结构 - 根据实际的HTML模板验证选择器
- 启动浏览器并执行每个步骤
- 如果出现以下情况,请截图
TRACE: true - 返回详细结果
第6步:查看结果
{
"summary": { "totalSteps": 6, "passed": 6, "failed": 0, "elapsedMs": 3245 },
"results": [
{ "index": 0, "action": "goto", "status": "passed", "durationMs": 1200 },
{ "index": 1, "action": "fill", "status": "passed", "durationMs": 150 }
],
"artifacts": {
"screenshots": ["/project/screenshots/step-0.png"]
},
"finalUrl": "http://localhost:5000/"
}步骤7:检查工件
如果 TRACE: true,屏幕截图保存到 /project/screenshots/
______________________________________________________________________
🎭 场景3:诊断并修复失败的测试(剧作家)
目标:测试失败,找到根本原因并修复它。
步骤1:运行初始测试
首先使用以下命令运行测试流程 playwright-run-flow.prompt.md (见场景2)
步骤2:捕获故障详细信息
注意故障:
{
"index": 4,
"action": "click",
"selector": "button[type=submit]",
"status": "failed",
"message": "Element not found: button[type=submit]"
}步骤3:打开诊断提示
打开 .github/prompts/playwright-diagnose-fix-retest.prompt.md
步骤4:提供故障上下文
在VS代码聊天中:
Use playwright-diagnose-fix-retest prompt to analyze this failure:
FAILED_STEP: { "action": "click", "selector": "button[type=submit]" }
ERROR: "Element not found: button[type=submit]"
BASE_URL: http://localhost:5000第五步:人工智能分析
AI将:
- 分析
/project/src/templates/用于表单结构 - 识别正确的选择器
- 建议修复:“使用
button.btn-primary相反,“ - 使用正确的选择器自动重新运行测试
步骤6:应用修复
如果使用正确的选择器通过测试:
- 更新测试定义
- 或者更新应用程序HTML以保持一致性
______________________________________________________________________
🗄️ 场景4:查询数据库(MySQL)
目标:使用分页从数据库中检索订单。
步骤1:验证MySQL MCP服务器
确认 .vscode/mcp.json 具有MySQL配置和正确的凭据。
第二步:打开提示
打开 .github/prompts/mysql-run-query.prompt.md
步骤3:定义查询
在VS代码聊天中:
Use mysql-run-query prompt to execute:
SQL: SELECT id, customer_name, product, quantity, status, order_date FROM orders WHERE status = 'pending' ORDER BY order_date DESC
LIMIT: 20
OFFSET: 0
READ_ONLY: true步骤4:执行查询
AI将:
- 验证查询是否为只读(SELECT)
- 通过MySQL MCP服务器执行
- 应用分页
- 返回结构化结果
步骤5:查看结果
{
"meta": {
"columns": ["id", "customer_name", "product", "quantity", "status", "order_date"],
"rowCount": 15,
"limit": 20,
"offset": 0,
"elapsedMs": 45
},
"rows": [
[1, "John Doe", "Laptop", 2, "pending", "2025-12-02T10:30:00Z"],
[2, "Jane Smith", "Mouse", 5, "pending", "2025-12-02T09:15:00Z"]
]
}步骤6:执行写入操作(可选)
对于插入/更新/删除:
Use mysql-run-query prompt:
SQL: UPDATE orders SET status = 'processing' WHERE id = 1
READ_ONLY: false______________________________________________________________________
🔧 场景5:更新工作项状态(Azure DevOps)
目标:将任务标记为“进行中”并添加注释。
步骤1:获取工作项ID
首先,使用以下命令查找工作项 azure-devops-assign-current-sprint-task.prompt.md 或者从Azure DevOps手动获取。
步骤2:打开更新提示
打开 .github/prompts/azure-devops-update-work-item.prompt.md
步骤3:定义更新
在VS代码聊天中:
Use azure-devops-update-work-item prompt:
WORK_ITEM_ID: 12345
FIELDS: {
"System.State": "Active",
"Microsoft.VSTS.Scheduling.RemainingWork": "6"
}
COMMENT: "Started implementation. Estimating 6 hours remaining."步骤4:执行更新
AI将:
- 验证字段名称和值
- 通过Azure DevOps MCP服务器更新工作项
- 添加评论
- 返回更新的工作项详细信息
步骤5:验证
查看Azure DevOps:
- 状态更改为“活动”
- 剩余工作更新为6
- 添加了带有时间戳的评论
______________________________________________________________________
故障排除
Azure DevOps问题
问题:“当前sprint中找不到工作项”
- 解决方案:
- 验证 AZDO_TEAM 与您的Azure DevOps团队名称完全匹配 - 检查冲刺日期(是否有活动的冲刺?) - 确认迭代路径:运行 set-azure-devops-env.ps1 并验证设置
问题:“身份验证失败”
- 解决方案:
- 重新运行 .vscode/mcp.json 设置 - 在提示时提供正确的组织名称 - 确保您拥有Azure DevOps访问权限
问题:“分配失败-工作项已分配”
- 解决方案:该项目已分配给其他人。使用
azure-devops-update-work-item如果需要,可以重新分配。
剧作家问题
问题:“应用程序代码必须位于/project/src/文件夹中”
- 解决方案:
- 将您的应用程序移动到 /project/src/ - 确保 /project/src/app.py 或存在等效物 - 检查文件夹结构是否符合要求
问题:“找不到元素”错误
- 解决方案:
- 使用 playwright-diagnose-fix-retest 提示自动修复 - 验证选择器是否与HTML结构匹配 - 检查应用程序是否在正确的URL上运行
问题:“屏幕截图未保存”
- 解决方案:
- 确保 /project/screenshots/ 目录存在(必要时创建) - 检查 TRACE: true 在参数中设置 - 验证写入权限
MySQL问题
问题:“连接被拒绝”
- 解决方案:
- 检查 .vscode/mcp.json MySQL凭据 - 验证数据库服务器是否可访问 - 测试连接: mysql -h HOST -u USER -p
问题:“查询被拒绝-不允许突变”
- 解决方案:
- 集 READ_ONLY: false 用于插入/更新/删除 - 验证MySQL MCP服务器是否允许写操作 - 检查 ALLOW_INSERT_OPERATION, ALLOW_UPDATE_OPERATION 旗帜在 mcp.json
MCP一般问题
问题:“MCP服务器没有响应”
- 解决方案:
- 重新启动VS代码 - 检查终端输出是否有MCP服务器错误 - 验证 npx 已安装Node.js
问题:“未找到提示”
- 解决方案:
- 确保提示文件存在于 .github/prompts/ - 引用时使用完整提示名称 - 重新加载VS代码窗口
______________________________________________________________________
额外资源
- MCP文件: https://modelcontextprotocol.io
- Azure DevOps MCP服务器: https://github.com/microsoft/azure-devops-mcp
- 剧作家MCP服务器: https://github.com/microsoft/playwright-mcp
- MySQL MCP服务器: https://github.com/benborla29/mcp-server-mysql
______________________________________________________________________
贡献
要添加新提示,请执行以下操作:
- 创建
.github/prompts/-.prompt.md - 遵循现有的提示结构(标题、目标、先决条件、说明等)
- 记录所有参数和预期输出
- 使用MCP客户端进行彻底测试
- 用使用说明更新此README
______________________________________________________________________
许可证
有关详细信息,请参阅LICENSE文件。
