Azure DevOps MCP服务器

一个使用Spring Boot和领域驱动设计(DDD)架构重新实现的Azure DevOps MCP服务器,提供REST API和MCP通信处理程序。

  • by brusiar
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 brusiar/azure-devops-mcp-spring

使用说明

Azure DevOps MCP Spring(注:这里的“MCP”可能是一个特定上下文或品牌中的缩写,没有直接的中文对应,因此保留原样;若“MCP”有特定含义,需根据上下文翻译)

使用Spring Boot和领域驱动设计(DDD)架构,为Azure DevOps重新实现MCP(模型上下文协议)服务器。

概览

这个项目提供了一个REST API和一个MCP通信处理器,用于与Azure DevOps项目进行交互。它实现了DDD(领域驱动设计)架构,其中领域、应用和基础设施之间有着清晰的分离。

技术

  • Java 21
  • Spring Boot 3.2.0
  • Spring WebFlux - 对抗性沟通
  • Azure 身份 - 使用 Azure DevOps 进行身份验证
  • Maven - 依赖管理
  • 领域驱动设计(DDD)架构 - 领域驱动设计

项目结构(DDD)

src/main/java/com/example/azuredevopsmcp/
├── domain/                                 # Camada de Domínio
│   ├── project/
│   │   ├── Project.java                   # Entidade rica
│   │   ├── ProjectRepository.java         # Interface do repositório
│   │   ├── ProjectState.java              # Value Object
│   │   └── ProjectVisibility.java         # Value Object
│   └── shared/
│       └── ProjectId.java                 # Value Object compartilhado
├── application/                           # Camada de Aplicação
│   ├── ProjectApplicationService.java    # Casos de uso
│   └── dto/
│       └── ProjectDto.java               # DTO
├── infrastructure/                        # Camada de Infraestrutura
│   ├── persistence/
│   │   └── AzureDevOpsProjectRepository.java # Implementação do repositório
│   ├── web/
│   │   └── ProjectController.java        # Controller REST
│   ├── mcp/
│   │   └── McpHandler.java              # Handler MCP
│   └── config/
│       └── AzureDevOpsConfig.java       # Configurações
├── AzureDevOpsMcpSpringApplication.java  # Classe principal
└── resources/
    └── application.properties            # Configurações

配置

1. 配置 Azure DevOps

编辑文件 src/main/resources/application.properties:

azure.devops.organization.url=https://dev.azure.com/sua-organizacao
azure.devops.pat=SEU_PERSONAL_ACCESS_TOKEN

2. 运行应用程序

mvn spring-boot:run

API 端点

GET /api/azure-devops/projects 的中文翻译是:“获取 /api/azure-devops/projects(获取 Azure DevOps 项目列表)”

通过应用程序服务返回 Azure DevOps 项目列表。

回答:

[
  {
    "id": "project-id",
    "name": "Nome do Projeto",
    "description": "Descrição do projeto",
    "url": "https://dev.azure.com/org/project",
    "state": "wellFormed",
    "revision": 1,
    "visibility": "private"
  }
]

DDD流量(或:跨区域/跨省电话流量)

  1. 控制器接收请求
  2. 应用程序服务协调用例
  3. 仓库(领域接口)检索数据
  4. 领域实体被转换为数据传输对象(DTOs)
  5. 响应已返回

MCP协议

处理程序MCP(在基础设施层)通过stdin/stdout接受命令,并使用应用程序服务:

命令:core_list_projects(核心项目列表)

入口:

{
  "id": "request-id",
  "command": "core_list_projects"
}

输出:

{
  "id": "request-id",
  "result": [...]
}

长途电话流量:

  1. McpHandler(基础设施)接收命令
  2. “Chama ProjectApplicationService”翻译成中文可以是“查玛项目申请服务”。这里,“Chama”可能是一个特定项目或组织的名称,而“ProjectApplicationService”则指的是与该项目或组织相关的申请服务
  3. 应用程序服务使用领域仓库
  4. 通过MCP协议返回数据传输对象(DTOs)

发展

执行测试

mvn test

Gerar JAR

mvn clean package

领域驱动设计(DDD)架构

这个项目实现了领域驱动设计的原则:

  • “Entidades Ricas”可以翻译为“富实体”或根据上下文具体含义,可能翻译为“富裕机构”、“富有的实体组织”等。这里,“Entidades”意为“实体”或“机构”,“Ricas”意为“富有的”。具体翻译需结合语境来确定最准确的表述。: Project 具有商业行为(或“商业运作模式”)
  • 值对象: ProjectId, ProjectState, ProjectVisibility
  • **仓库模式(或称为存储库模式)**领域接口,基础设施实现
  • 应用服务用例编排
  • 职责分离独立的基础设施领域

文件化;文档

下一步行动

  • [ ] 在 Azure DevOps 中实施真实身份验证
  • [ ] 为工作项、构建等添加聚合
  • [ ] 实施领域事件
  • [ ] 添加单元测试和集成测试
  • [ ] 实施CQRS模式
  • [ ] 使用OpenAPI/Swagger文档化API