DevOps代理系统(MCP-A2A)
概述
此存储库实现了 AI对AI(A2A)编排系统 这可以:
- 列出现有的GitHub操作工作流。
- 动态创建具有唯一名称的新CI管道。
- 使用由GitHub模型(或Azure AI推理)支持的管理器代理,根据用户目标决定调用哪个工具。
核心组件包括:
- 经理代理人 构建一个提示,调用LLM,解析JSON响应并分派任务。
- DevOpsAgent 的 –提供实际的GitHub API调用(
list_workflows,create_basic_pipeline). - devops_server.py –一个FastMCP服务器,将DevOps工具作为可调用函数公开。
- a2a_system.py –运行管理器代理的入口点脚本。
架构概述
MCP(多代理协调平台)
- 轻量级框架(
FastMCP)这使您可以将函数公开为 *工具* 可由LLM调用。 - 注册每个DevOps操作(
list_workflows,create_basic_pipeline)与@mcp.tool(). - 处理JSON-RPC风格的请求/响应循环,以便LLM可以通过名称和参数调用工具。
- 保持系统模块化——可以在不触及核心编排逻辑的情况下添加新的代理或工具。
A2A(代理对代理)协议
- 启用一个LLM驱动的代理(经理代理人)协调其他专业代理(DevOpsAgent 的).
- 管理员构建一个提示,描述用户目标、可用代理和规则,然后将其发送到GitHub模型。
- 该模型返回一个JSON计划:
{ "agent_name": "...", "tool": "...", "args": {...} }. ManagerAgent解析计划并通过MCP将请求分派给适当的代理。- 所选工具运行,返回结果,经理将结果报告给用户。
为什么这很重要
- *关注点分离*:经理决定 *什么* 做,而DevOps代理知道 *如何* 与GitHub对话。
- *可扩展性*:添加新代理(例如
K8sAgent)并简单地将其工具注册到MCP;管理员可以通过更新其提示来开始使用它们。 - *动态编排*LLM可以推理当前状态(例如,“如果不存在管道,则创建一个”),并在没有硬编码条件的情况下选择正确的工具。
先决条件
- Python 3.11+(在Windows 10上测试)。
- 紫外线 用于依赖性管理。
- A. GitHub个人访问令牌 随着
repo范围(或至少contents:write和actions:read). - 一
.env项目根目录下的文件包含:
GITHUB_TOKEN=your_token_here
OPENAI_API_KEY=your_openai_key_if_using_openai_models设置
# Clone the repo
git clone https://github.com/yourusername/MCP-A2A-GA.git
cd MCP-A2A-GA/devops-agent-system
# Install dependencies using uv
uv sync
# Load environment variables (optional, uv will respect .env automatically)
uv run python -c "import dotenv; dotenv.load_dotenv()"用法
# Run the A2A system – it will list existing pipelines and then create a new one.
uv run a2a_system.py您还可以通过FastMCP服务器调用各个工具:
uv run devops_server.py项目结构
devops-agent-system/
├─ src/ # Core source code
│ ├─ __init__.py
│ ├─ a2a_system.py # Manager agent entry point
│ └─ devops_server.py # FastMCP server exposing DevOps tools
├─ tests/ # Test scripts
│ ├─ test_models.py
│ └─ test_user_model.py
├─ .github/
│ └─ workflows/ # Example CI workflow files (generated dynamically)
├─ .env # Environment variables (not committed)
├─ README.md # This file
└─ pyproject.toml # Project metadata (generated by uv)添加新代理或工具
- 在中创建新类
src/遵循与以下相同的模式ManagerAgent. - 向注册工具
@mcp.tool()在devops_server.py. - 更新中的提示
ManagerAgent.run_mission以展示新功能。
贡献
请随时打开问题或提交pull请求。请确保任何新工具都尊重令牌权限,并且使用唯一的文件名创建新的工作流(系统已经处理了这一点)。
许可证
MIT许可证——见 LICENSE 文件。
