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_TOKEN2. 运行应用程序
mvn spring-boot:runAPI 端点
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流量(或:跨区域/跨省电话流量)
- 控制器接收请求
- 应用程序服务协调用例
- 仓库(领域接口)检索数据
- 领域实体被转换为数据传输对象(DTOs)
- 响应已返回
MCP协议
处理程序MCP(在基础设施层)通过stdin/stdout接受命令,并使用应用程序服务:
命令:core_list_projects(核心项目列表)
入口:
{
"id": "request-id",
"command": "core_list_projects"
}输出:
{
"id": "request-id",
"result": [...]
}长途电话流量:
- McpHandler(基础设施)接收命令
- “Chama ProjectApplicationService”翻译成中文可以是“查玛项目申请服务”。这里,“Chama”可能是一个特定项目或组织的名称,而“ProjectApplicationService”则指的是与该项目或组织相关的申请服务
- 应用程序服务使用领域仓库
- 通过MCP协议返回数据传输对象(DTOs)
发展
执行测试
mvn testGerar JAR
mvn clean package领域驱动设计(DDD)架构
这个项目实现了领域驱动设计的原则:
- “Entidades Ricas”可以翻译为“富实体”或根据上下文具体含义,可能翻译为“富裕机构”、“富有的实体组织”等。这里,“Entidades”意为“实体”或“机构”,“Ricas”意为“富有的”。具体翻译需结合语境来确定最准确的表述。:
Project具有商业行为(或“商业运作模式”) - 值对象:
ProjectId,ProjectState,ProjectVisibility - 仓库模式(或称为存储库模式)领域接口,基础设施实现
- 应用服务用例编排
- 职责分离独立的基础设施领域
文件化;文档
- DDD架构(领域驱动设计架构) - 实施的架构详情
- API REST - 端点文档
- MCP协议 - MCP处理程序的文档
- 比较 - 与微软项目进行比较
下一步行动
- \[ \] 在 Azure DevOps 中实施真实身份验证
- \[ \] 为工作项、构建等添加聚合
- \[ \] 实施领域事件
- \[ \] 添加单元测试和集成测试
- \[ \] 实施CQRS模式
- \[ \] 使用OpenAPI/Swagger文档化API
