缺陷分析服务器

一个连接CA Rally(Agile Central)的MCP风格服务器,用于获取缺陷数据并提供潜在根本原因和趋势的分析。

  • by Jon-k-1232
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jon-k-1232/mcp_practice

使用说明

MCP拉力赛服务器

一个最小化的模型上下文协议风格服务器,用于连接到CA Rally(Agile Central),并获取数据 缺陷数据,以及围绕潜在根本原因和趋势的表面分析。

特点/功能

  • 暴露FastAPI服务 /defects 并且 /defects/analysis 需要(某种条件或设置)的端点 workspace 查询参数加上便捷的状态过滤器和ISO8601日期范围过滤器。
  • 新 /artifacts/transcript 一个端点,接收站立会议记录,并识别其中引用的内容 按格式化的ID整理工作项,自动更新其状态/阻塞标志,并记录 将转录片段作为拉力(Rally)对话帖子发布。
  • 用于发布临时评论(和可选的状态/阻塞项变更)的手动工件更新端点 通过格式化ID关联到任何Rally工作项。
  • 通过从(指定位置)加载的环境变量进行配置 .env.
  • 模块化代码结构,拆分认证、客户端和分析逻辑。
  • 启发式分析以突出主要贡献因素和疑似原因。

入门指南/开始使用

  1. 创建一个虚拟环境

    python3 -m venv .venv
    source .venv/bin/activate
    
  2. 安装依赖项

    pip install -e .
    
  3. 配置Rally凭据

    更新 .env 附上您的拉力赛详情文件:

    • RALLY_API_KEY - Rally个人API密钥。
    • RALLY_BASE_URL – Rally 实例的基础 URL(默认为 https://rally1.rallydev.com)。
    • RALLY_PAGE_SIZE – Rally 查询的页面大小(默认值为 2000)。
  4. 运行服务器

    python scripts/run_server.py
    

    该API将在以下地址提供: http://localhost:8000 翻译为中文是:“本地主机:8000 端口”。不过,在实际使用中,这个网址通常不直接翻译,而是保持原样使用,因为它是一个指向本地运行的Web服务器的URL 配备有OpenAPI用户界面,位于 /docs。

分支策略

  • master – 用于发布和长期存档的生产拷贝。
  • production – 跟踪当前已部署的代码。
  • develop – 用于活跃开发的集成分支。
  • 个人工作应分叉进行(或:个人工作应分支展开) develop 使用你的名字后跟一个简短的标题,例如:。 git checkout -b jane-update-transcript 来自 develop.

环境配置

  • .env 位于项目根目录(mcp_practice/.env)并且会由应用程序自动加载。

  • 最低设置为:

    RALLY_API_KEY=your_api_key_here
    RALLY_BASE_URL=https://rally1.rallydev.com
    RALLY_PAGE_SIZE=2000
    
  • 在处理多个环境时,请保持分开 .env 文件(例如。 .env.dev, .env.prod) 和指出 load_config 通过……到达所需的文件 env_file 论点(见 src/mcp_rally/config.py)。

项目布局

  • src/mcp_rally/config.py – 加载环境配置。
  • src/mcp_rally/auth/ – 认证辅助工具(例如,Rally API 头部)。
  • src/mcp_rally/api/ – 用于缺陷处理和转录本处理的FastAPI路由器。
  • src/mcp_rally/deps.py – 共享依赖项提供程序(Rally 客户端/配置实例)。
  • src/mcp_rally/rally_client.py – 处理对Rally的REST调用。
  • src/mcp_rally/analysis/defects.py – 汇总并分析缺陷数据。
  • src/mcp_rally/server.py – 应用工厂,用于将路由器集成到FastAPI中。
  • scripts/run_server.py – 服务器便捷启动器。
  • terraform/ – 为开发和生产AWS环境提供基础设施即代码(Infrastructure-as-Code)解决方案。

Terraform 部署

  • 更新 terraform/dev/terraform.tfvars (以及等效的prod环境)与您的VPC(虚拟私有云)、子网一起, 在申请前,请准备好证书和容器镜像详情。
  • 在所需的环境目录中运行:
cd terraform/dev
terraform init
terraform plan
terraform apply
  • 使用输出的值将您的Docker镜像推送到已配置的ECR仓库中 ecr_repository_url。

终端使用情况

缺陷洞察(Defect Insights)GET /defects, GET /defects/analysis)

目的:调查缺陷数据,追踪趋势,找出根本原因。

  1. 通过提供(相关信息/设置)来配置您的Rally范围 workspace (例如。, /workspace/123456789)。

  2. 可选择添加过滤器,如 state, project, limit, created_after, updated_after或者一个 WSAPI(Windows Sockets API) query。

  3. 呼叫:

    curl "http://localhost:8000/defects?workspace=/workspace/123456789&state=In-Progress&limit=50"
    
  4. 对于汇总分析,请使用 /defects/analysis 具有相同参数的变体:

    curl "http://localhost:8000/defects/analysis?workspace=/workspace/123456789&state=Closed"
    

    该回复总结了总数、各州/严重程度分布、主要负责人/标签以及每周趋势 桶(或“容器”),以及启发式根本原因提示。

站立会议记录自动化POST /artifacts/transcript)

目的:提供会议记录,让服务器自动更新Rally项目。

步骤:

  1. 确保你的成绩单中通过格式化ID引用Rally工作项(例如。, US12345, DE54321)。
  2. 包含以下内容的POST JSON:
    • workspace (/workspace/{oid}) 和可选的 project。
    • transcript 附上全文/摘要。
  3. 该服务解析文本,将状态关键词映射到有效的状态/阻塞更新,并应用这些更新 在允许的情况下,将代码片段作为评论发布。
  4. 响应列表列出了哪些工件已更新,哪些被跳过以及跳过的理由。

示例:

curl -X POST "http://localhost:8000/artifacts/transcript" \
  -H "Content-Type: application/json" \
  -d '{
        "workspace": "/workspace/123456789",
        "project": "/project/987654321",
        "transcript": "US12345 is in progress and should wrap tomorrow. DE54321 is blocked by the database migration."
      }'

手动工件更新(POST /artifacts/manual)

目的:向任何Rally工件发布一条临时评论(可选择调整状态/设置为阻塞)。

步骤:

  1. 收集目标 formatted_id 以及作用域标识符。

  2. 编写你希望存储在工件讨论线程中的评论文本。

  3. 可选择地包含 state, blocked,以及 blocked_reason 更改结构化字段。

  4. 发送请求:

    curl -X POST "http://localhost:8000/artifacts/manual" \
      -H "Content-Type: application/json" \
      -d '{
            "workspace": "/workspace/123456789",
            "formatted_id": "US12345",
            "state": "In-Progress",
            "comment": "Jon is the best and is wrapping this up today."
          }'
    
  5. 服务器应用字段更新(当工件类型支持时)并发布评论 作为一场集会对话帖子。

AI助手集成

这个项目通过HTTP使用模型上下文协议(MCP)来暴露Rally的数据和操作 FastAPI。以下步骤概述了如何将服务器注册到支持MCP(多云平台/中间件通信协议等,具体含义根据上下文确定)的流行助手。

Claude Desktop(可译为“Claude桌面版”或根据上下文简化为“Claude桌面”)

  1. 安装支持MCP的最新Claude桌面应用程序(适用于macOS/Windows)。

  2. 创建或编辑 ~/.claude/config.yaml (macOS) 或 %APPDATA%\Claude\config.yaml (Windows)。

  3. 在下面添加一项 mcpServers:

    mcpServers:
      mcp-rally:
        command: python
        args:
          - -m
          - mcp_rally.server
        env:
          RALLY_API_KEY: "<your_api_key>"
    
  4. 重启Claude并打开MCP面板以启用新的“mcp-rally”工具。

  5. 请Claude运行一个命令,比如 call mcp-rally /defects ... 验证连接性。

GitHub Copilot(适用于VS Code / JetBrains)

  1. 确保您已安装带有MCP的最新Copilot Chat扩展(适用于VS Code)或插件(适用于JetBrains) 支持已启用(copilot.experimental.mcp 在VS Code设置中设置标志。

  2. 创建 ~/.config/github-copilot/mcp.json (Linux/macOS) 或 %APPDATA%\GitHub Copilot\mcp.json (Windows)。

  3. 注册服务器:

    {
      "servers": {
        "mcp-rally": {
          "command": "python",
          "args": ["-m", "mcp_rally.server"],
          "env": {
            "RALLY_API_KEY": "<your_api_key>"
          }
        }
      }
    }
    
  4. 重新加载IDE。在Copilot聊天中,使用 /tools (VS Code)或MCP工具选择器来调用 集会服务器。

  5. 运行一个示例提示(例如,“使用mcp-rally分析工作区中的缺陷……”)以确认 整合。

带有MCP的ChatGPT桌面版/网页版

  1. 在ChatGPT设置中选择加入MCP测试版(如果您的账户中有此选项)。

  2. 创造 ~/.openai/devtools/mcp.json 与;带有;和……一起

    {
      "mcpServers": {
        "mcp-rally": {
          "command": "python",
          "args": ["-m", "mcp_rally.server"],
          "env": {
            "RALLY_API_KEY": "<your_api_key>"
          }
        }
      }
    }
    
  3. 重启ChatGPT客户端。在可用集成下应该会出现一个新的“mcp-rally”工具。

  4. 通过(某种方式)触发该工具 /mcp-rally (桌面版)或工具下拉菜单(网页版),然后执行一个终端点(或:执行一个端点操作) 确保它有响应。

注: 随着MCP支持的不断发展,路径/配置格式可能会发生变化。请查阅最新文档 如果这些位置不同,则对每个助手分别处理。

测试工作流程

本地环境

  1. 激活你的虚拟环境并运行服务器:

    python scripts/run_server.py
    
  2. 命中 http://localhost:8000/docs 以交互方式执行终端操作。

  3. 使用 curl使用HTTPie或您的助手集成指向localhost来验证新逻辑。

  4. 安装开发依赖项并执行自动化测试套件(FastAPI集成检查和 转录本解析覆盖率):

    pip install -e .[dev]
    pytest
    

生产/预发布环境

  1. 构建并发布一个包含您更改的 Docker 镜像。
  2. 更新 Terraform 变量 terraform/dev 或者 terraform/prod 带有新的图像标签和 通过……部署 terraform apply。
  3. 配置助手环境,使其指向已部署的URL(而非localhost),方法是 调整 command/args (例如,通过轻量级代理运行)或通过暴露HTTP 通过您的基础设施到达终端节点。
  4. 在正式使用之前,使用相同的curl命令对生产环境的负载均衡器进行端点冒烟测试 使它们为终端用户所用。

下一步

  • 为频繁分析添加持久化或缓存功能。
  • 利用组织特定的见解扩展分析启发式方法。
  • 编写针对模拟Rally响应的自动化测试。