Naftiko · Capability

Azure Devops Pipeline To Backstage Entity

A capability that mirrors Azure DevOps build pipelines into Backstage as TechDocs entities, so platform engineers can browse pipelines without leaving the developer portal.

Run with Naftiko NaftikoAzure DevOpsBackstage

What You Can Do

POST
Sync pipelines — Pull all Azure DevOps pipelines and upsert as Backstage entities.
/sync

MCP Tools

list-azdo-pipelines

read-only
sync-pipelines

Capability Spec

azure-devops-pipeline-to-backstage-entity.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  title: Azure Devops Pipeline To Backstage Entity
  description: A capability that mirrors Azure DevOps build pipelines into Backstage as TechDocs entities, so platform engineers can browse pipelines without leaving the developer portal.
  tags: [Naftiko, Azure DevOps, Backstage]
  created: '2026-05-01'
  modified: '2026-05-04'
binds:
- namespace: azuredevops-env
  keys: {AZDO_ORG: AZDO_ORG, AZDO_PROJECT: AZDO_PROJECT, AZDO_TOKEN: AZDO_TOKEN}
- namespace: backstage-env
  keys: {BACKSTAGE_HOST: BACKSTAGE_HOST, BACKSTAGE_TOKEN: BACKSTAGE_TOKEN}
capability:
  consumes:
  - namespace: azuredevops
    type: http
    baseUri: https://dev.azure.com
    authentication: {type: bearer, token: '{{AZDO_TOKEN}}'}
    resources:
    - name: pipelines
      path: /{{AZDO_ORG}}/{{AZDO_PROJECT}}/_apis/pipelines
      operations: [{name: list-pipelines, method: GET}]
    - name: pipeline
      path: /{{AZDO_ORG}}/{{AZDO_PROJECT}}/_apis/pipelines/{{pipeline_id}}
      operations:
      - {name: get-pipeline, method: GET, inputParameters: [{name: pipeline_id, in: path}]}
  - namespace: backstage
    type: http
    baseUri: https://{{BACKSTAGE_HOST}}
    authentication: {type: bearer, token: '{{BACKSTAGE_TOKEN}}'}
    resources:
    - {name: catalog-entities, path: /api/catalog/entities, operations: [{name: upsert-entity, method: POST}]}
  exposes:
  - type: rest
    address: 0.0.0.0
    port: 8080
    namespace: azure-devops-pipeline-to-backstage-entity-rest
    description: REST surface mirroring Azure DevOps pipelines into Backstage.
    resources:
    - {name: sync, path: /sync, operations: [{method: POST, name: sync-pipelines, description: Pull all Azure DevOps pipelines and upsert as Backstage entities., call: azuredevops.list-pipelines}]}
  - type: mcp
    address: 0.0.0.0
    port: 3010
    namespace: azure-devops-pipeline-to-backstage-entity-mcp
    description: MCP for pipeline-to-Backstage sync.
    tools:
    - {name: list-azdo-pipelines, hints: {readOnly: true}, call: azuredevops.list-pipelines}
    - {name: sync-pipelines, call: azuredevops.list-pipelines}
  - type: skill
    address: 0.0.0.0
    port: 3011
    namespace: azure-devops-pipeline-to-backstage-entity-skills
    description: Skill bundle for AzDO→Backstage sync.
    skills:
    - name: azure-devops-pipeline-to-backstage-entity
      description: Mirror Azure DevOps pipelines as Backstage entities.
      location: file:///opt/naftiko/skills/azure-devops-pipeline-to-backstage-entity
      allowed-tools: list-azdo-pipelines,sync-pipelines
      tools:
      - {name: list-azdo-pipelines, from: {sourceNamespace: azure-devops-pipeline-to-backstage-entity-mcp, action: list-azdo-pipelines}}
      - {name: sync-pipelines, from: {sourceNamespace: azure-devops-pipeline-to-backstage-entity-mcp, action: sync-pipelines}}