Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace

create_pipeline_from_description

Automatically create CI/CD pipelines by parsing user descriptions and detecting project configurations from the current development environment.

Instructions

[Pipeline Management] Create a pipeline using structured parameters extracted from user descriptions and environment context.

🔧 Built-in Capabilities:

  • ✅ Automatically retrieves default service connection IDs when not specified

  • ✅ Handles repository and service connection logic internally

  • ✅ Auto-extracts project name from repository URL (git@host:org/repo.git → repo)

  • ✅ Supports both IDE detection and explicit parameter specification

📖 Recommended Workflow:

  1. 🎯 PARSE user description for explicit parameters

  2. 🔍 DETECT missing info from IDE environment FIRST:

    • Run git config --get remote.origin.url → repoUrl

    • Run git branch --show-current → branch

    • Auto-extract serviceName from repoUrl

    • Check project files for tech stack:

      • pom.xml → buildLanguage='java', buildTool='maven'

      • build.gradle → buildLanguage='java', buildTool='gradle'

      • package.json + package-lock.json → buildLanguage='nodejs', buildTool='npm'

      • package.json + yarn.lock → buildLanguage='nodejs', buildTool='yarn'

      • requirements.txt → buildLanguage='python', buildTool='pip'

      • go.mod → buildLanguage='go', buildTool='go'

      • *.csproj → buildLanguage='dotnet', buildTool='dotnet'

  3. 🚀 CALL this tool with collected parameters

⚠️ Important Guidelines:

  • DO NOT call list_repositories unless user explicitly asks to choose from available repositories

  • DO NOT call list_service_connections unless user explicitly asks to choose from available connections

  • ALWAYS try IDE detection first before making any API calls

  • If IDE detection fails, THEN consider API calls as fallback

🎯 Parameter Priority:

  1. 👤 USER EXPLICIT (highest) - buildLanguage, buildTool, versions, deployTarget

  2. 🔍 IDE DETECTION (preferred) - repoUrl, branch, serviceName, tech stack

  3. 🤖 TOOL DEFAULTS (automatic) - serviceConnectionId, organizationId

🔍 IDE Detection Rules (MUST TRY FIRST):

  • 📂 Repository: git config --get remote.origin.url → repoUrl

  • 🌿 Branch: git branch --show-current → branch

  • 🏷️ Service Name: Auto-extracted from repoUrl (git@host:org/repo.git → repo)

  • ☕ Java Maven: pom.xml exists → buildLanguage='java', buildTool='maven'

  • 🏗️ Java Gradle: build.gradle exists → buildLanguage='java', buildTool='gradle'

  • 🟢 Node npm: package.json + package-lock.json → buildLanguage='nodejs', buildTool='npm'

  • 🧶 Node yarn: package.json + yarn.lock → buildLanguage='nodejs', buildTool='yarn'

  • 🐍 Python: requirements.txt → buildLanguage='python', buildTool='pip'

  • 🐹 Go: go.mod → buildLanguage='go', buildTool='go'

  • 💙 .NET: *.csproj → buildLanguage='dotnet', buildTool='dotnet'

📝 Version Detection (from project files):

  • ☕ JDK: Read pom.xml <maven.compiler.source> → jdkVersion

  • 🟢 Node: Read package.json engines.node → nodeVersion

  • 🐍 Python: Read .python-version, pyproject.toml → pythonVersion

  • 🐹 Go: Read go.mod go directive → goVersion

🎯 Deployment Parsing:

  • '部署到主机/VM/虚拟机' → deployTarget='vm'

  • '部署到Kubernetes/K8s' → deployTarget='k8s'

  • '只构建/构建制品' → deployTarget='none'

🔗 Service Connection Strategy (3 scenarios):

  1. User specifies ID explicitly (e.g., '使用服务连接ID abc123') → ✅ Pass serviceConnectionId=abc123 directly, NO list_service_connections call needed

  2. User doesn't specify any ID (most common case) → ✅ Pass serviceConnectionId=null, tool will auto-retrieve default ID internally

  3. User wants to choose from available options (e.g., '显示可用的服务连接让我选择') → 🔍 Call list_service_connections first, then let user choose, then create pipeline

🤔 When to Use Other Tools:

  • User asks to "select from available repositories" → use list_repositories first

  • User wants to "choose from service connections" → use list_service_connections first

  • User wants to see options before deciding → gather info first, then create

  • For quick creation with current repo → directly use IDE detection

✅ Required: organizationId, name, buildLanguage, buildTool

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
organizationIdYesOrganization ID, can be found in the basic information page of the organization admin console
nameYesPipeline name (required). LLM should generate a meaningful name based on user's request
buildLanguageYesProgramming language (REQUIRED). LLM should detect from project files: pom.xml→java, package.json→nodejs, requirements.txt→python, go.mod→go, *.csproj→dotnet
buildToolYesBuild tool (REQUIRED). LLM should infer from buildLanguage and project files: java+pom.xml→maven, java+build.gradle→gradle, nodejs+package-lock.json→npm, nodejs+yarn.lock→yarn, python→pip, go→go, dotnet→dotnet
deployTargetNoDeployment target from user description. vm: Virtual Machine/Host deployment, k8s: Kubernetes deployment, none: Build only without deployment. Default: none
repoUrlNoRepository URL (LLM should get from 'git config --get remote.origin.url')
branchNoGit branch (LLM should get from 'git branch --show-current')
serviceNameNoService name (LLM can derive from repository name or project directory name)
serviceConnectionIdNoService connection UUID for repository access
jdkVersionNoJDK version for Java projects (LLM should read from pom.xml or gradle.properties). Options: 1.6, 1.7, 1.8, 11, 17, 21. Default: 1.8
mavenVersionNoMaven version for Java projects. Options: 3.6.1, 3.6.3, 3.8.4, 3.9.3. Default: 3.6.3
nodeVersionNoNode.js version for Node projects (LLM should read from package.json engines.node or .nvmrc). Options: 16.8, 18.12, 20. Default: 18.12
pythonVersionNoPython version for Python projects (LLM should read from .python-version or pyproject.toml). Options: 3.9, 3.12. Default: 3.12
goVersionNoGo version for Go projects (LLM should read from go.mod). Options: 1.19.x, 1.20.x, 1.21.x. Default: 1.21.x
kubectlVersionNoKubectl version for Kubernetes apply. Options: 1.25.16, 1.26.12, 1.27.9. Default: 1.27.9
buildCommandNoCustom build command to override default
testCommandNoCustom test command to override default
uploadTypeNoArtifact upload type. flowPublic: Yunxiao public storage space, packages: Organization private generic package repository. Default: packages
artifactNameNoCustom artifact name. Default: 'Artifacts_${PIPELINE_ID}'
artifactVersionNoArtifact version number, required when uploadType is packages. Default: '1.0'
packagesServiceConnectionNoPackages service connection UUID, required when uploadType is packages
packagesRepoIdNoPackages generic repository ID, required when uploadType is packages. Default: 'flow_generic_repo'
includePathInArtifactNoWhether to include full path in artifact. Default: false
machineGroupIdNoMachine group UUID for VM deployment (required when deployTarget=vm)
executeUserNoUser for executing deployment scripts (root, admin). Default: root
artifactDownloadPathNoPath to download artifacts on target machine for VM deployment. Default: /home/admin/app/package.tgz
deployCommandNoCustom deploy command for VM deployment
pauseStrategyNoPause strategy for VM deployment. firstBatchPause: The first batch is paused. noPause: No pause. eachBatchPause: Pause each batch. Default: firstBatchPause
batchNumberNoNumber of batches for VM deployment. Default: 2
kubernetesClusterIdNoKubernetes cluster ID for K8s deployment (required when deployTarget=k8s)
namespaceNoKubernetes namespace for K8s deployment
dockerImageNoDocker image name for container deployment
yamlPathNoPath to Kubernetes YAML file for K8s deployment

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yjiace/alibabacloud-devops-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server