Azure DevOps MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AZURE_CLIENT_ID | No | Application (client) ID from your Azure AD app registration | |
| AZURE_TENANT_ID | No | Azure AD tenant ID | |
| AZURE_DEVOPS_PAT | No | Your Personal Access Token | |
| AZURE_CLIENT_SECRET | No | Client secret for the app | |
| AZURE_DEVOPS_ORG_URL | No | Your Azure DevOps org URL (e.g., https://dev.azure.com/your-organization) | |
| AZURE_DEVOPS_PROJECT | No | Default project (can be overridden per tool call) | |
| AZURE_USE_MANAGED_IDENTITY | No | Set to 'true' to enable managed identity |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_pipelinesA | List all pipelines in an Azure DevOps project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_pipeline_runsA | Get recent runs for a specific pipeline. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline. top: Maximum number of runs to return (default: 10). |
| get_pipeline_run_logsC | Get logs for a specific pipeline run. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline. run_id: The ID of the pipeline run. |
| trigger_pipelineA | Trigger a new pipeline run. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline to trigger. parameters: Optional template parameters to pass to the pipeline as key-value pairs. |
| list_build_artifactsC | List artifacts produced by a build. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID. |
| get_artifact_download_urlB | Get the download URL for a specific build artifact. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID. artifact_name: The name of the artifact. |
| list_release_definitionsA | List all classic release definitions (release pipelines) in a project. Args: project: Azure DevOps project name. Uses default if not specified. top: Maximum number of definitions to return (default: 50). |
| list_releasesA | List releases, optionally filtered by a release definition. Args: project: Azure DevOps project name. Uses default if not specified. definition_id: Optional release definition ID to filter by. 0 means all. top: Maximum number of releases to return (default: 25). |
| get_releaseA | Get detailed information about a specific release, including environment/stage status. Args: project: Azure DevOps project name. Uses default if not specified. release_id: The ID of the release. |
| create_releaseA | Create (trigger) a new release from a classic release definition. Args: project: Azure DevOps project name. Uses default if not specified. definition_id: The release definition ID to create a release from. description: Optional description for the release. artifacts: Optional list of artifact version overrides. Each dict should have: - alias (str): artifact source alias - version_id (str): specific version/build ID - version_name (str): display name for the version |
| list_release_approvalsA | List release approvals, optionally filtered by status. Args: project: Azure DevOps project name. Uses default if not specified. status: Filter by status: "pending", "approved", "rejected", "reassigned", "canceled", "skipped", "undefined". Default is "pending". top: Maximum number of approvals to return (default: 25). assigned_to: Optional filter by approver display name or unique name. |
| update_release_approvalB | Approve or reject a release approval. Args: project: Azure DevOps project name. Uses default if not specified. approval_id: The approval ID. status: "approved" or "rejected". comments: Optional comments for the approval decision. |
| list_boardsA | List all boards for a project/team. Args: project: Azure DevOps project name. Uses default if not specified. team: Team name. If not specified, uses the project's default team. |
| get_board_work_itemsC | Get work items on a specific board along with board columns. Args: project: Azure DevOps project name. Uses default if not specified. board: Name of the board (e.g., "Stories", "Bugs"). team: Team name. If not specified, uses the project's default team. |
| get_work_itemB | Get detailed information about a specific work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. |
| create_work_itemA | Create a new work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_type: Type of work item (e.g., "Bug", "User Story", "Task", "Epic", "Feature"). title: Title of the work item. description: HTML description of the work item. assigned_to: Display name or email of the person to assign to. area_path: Area path (e.g., "MyProject\Team A"). iteration_path: Iteration path (e.g., "MyProject\Sprint 1"). priority: Priority (1=Critical, 2=High, 3=Medium, 4=Low). tags: Semicolon-separated tags (e.g., "frontend; urgent"). additional_fields: Dict of additional field paths and values. parent_id: Optional ID of a parent work item to link to. |
| update_work_itemB | Update an existing work item's fields and/or add relation links. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item to update. fields: Dict mapping field names to new values. Example: {"System.Title": "New Title", "System.State": "Active", "System.AssignedTo": "user@example.com"} add_links: List of relation links to add. Each dict must have: - target_id (int): ID of the work item to link to. - link_type (str): "parent", "child", "related", "predecessor", "successor", or a fully-qualified relation type. - comment (str, optional): Comment for the link. Example: [{"target_id": 100, "link_type": "parent"}] |
| query_work_itemsA | Execute a WIQL (Work Item Query Language) query. Args: project: Azure DevOps project name. Uses default if not specified. query: WIQL query string. Example: "SELECT [System.Id], [System.Title], [System.State] FROM workitems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' ORDER BY [System.CreatedDate] DESC" |
| get_work_item_commentsA | Get comments on a work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. top: Maximum number of comments to return (default: 50). |
| add_work_item_commentA | Add a comment to a work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. text: The comment text (supports HTML). |
| delete_work_itemA | Delete a work item (move to recycle bin, or permanently destroy). Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item to delete. destroy: If True, permanently delete. If False (default), move to recycle bin. |
| list_saved_queriesA | List saved work item queries (folders and queries). Args: project: Azure DevOps project name. Uses default if not specified. depth: How deep to recurse into query folders (default: 2). |
| run_saved_queryB | Execute a saved query by its ID and return work item details. Args: project: Azure DevOps project name. Uses default if not specified. query_id: The saved query GUID. |
| list_repositoriesA | List all Git repositories in a project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_repositoryA | Get detailed information about a specific Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. |
| list_branchesB | List branches in a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. filter_prefix: Optional prefix to filter branch names (e.g., "feature/"). |
| get_commitsA | Get recent commits for a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. branch: Optional branch name to filter commits. top: Maximum number of commits to return (default: 20). author: Optional author name to filter commits. |
| get_file_contentA | Get the content of a file from a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. path: File path in the repository (e.g., "/src/main.py"). branch: Optional branch name (defaults to the repository's default branch). |
| compare_branchesB | Compare two branches and show the diff summary. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. base_branch: The base branch name. target_branch: The target branch name. |
| list_pull_requestsA | List pull requests in a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. status: Filter by status: "active", "completed", "abandoned", "all" (default: "active"). top: Maximum number of pull requests to return (default: 25). creator: Optional filter by creator ID. reviewer: Optional filter by reviewer ID. |
| get_pull_requestB | Get detailed information about a specific pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. |
| create_pull_requestA | Create a new pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. source_branch: Source branch name (e.g., "feature/my-feature"). target_branch: Target branch name (e.g., "main"). title: Title of the pull request. description: Optional description/body of the pull request. reviewers: Optional list of reviewer IDs. is_draft: Whether to create as a draft PR (default: False). |
| update_pull_requestB | Update a pull request (change status, title, description, set auto-complete). Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. status: "active", "abandoned", or "completed" (to merge). title: New title for the pull request. description: New description for the pull request. auto_complete_set_by: User ID to set auto-complete by. merge_strategy: "noFastForward", "squash", "rebase", "rebaseMerge". |
| get_pull_request_threadsB | Get comment threads on a pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. |
| create_pull_request_commentA | Add a comment thread to a pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. content: The comment text (supports markdown). file_path: Optional file path for inline comments. line_number: Optional line number for inline comments (requires file_path). status: Thread status: "active", "fixed", "wontFix", "closed", "byDesign", "pending". |
| list_test_runsB | List test runs in a project. Args: project: Azure DevOps project name. Uses default if not specified. top: Maximum number of runs to return (default: 25). state: Optional filter by state (e.g., "Completed", "InProgress", "Aborted"). |
| get_test_run_resultsA | Get test results for a specific test run. Args: project: Azure DevOps project name. Uses default if not specified. run_id: The test run ID. top: Maximum number of results to return (default: 200). outcome: Optional filter by outcome (e.g., "Passed", "Failed", "NotExecuted"). |
| get_code_coverageB | Get code coverage summary for a build. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID to get coverage for. |
| list_wikisA | List all wikis in a project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_wiki_pageA | Get a wiki page by path. Args: project: Azure DevOps project name. Uses default if not specified. wiki_id: The wiki identifier (name or ID). path: Page path (e.g., "/Home", "/Release Notes/v2"). Defaults to root. include_content: Whether to include the page markdown content (default: True). |
| create_or_update_wiki_pageA | Create or update a wiki page. Args: project: Azure DevOps project name. Uses default if not specified. wiki_id: The wiki identifier (name or ID). path: Page path (e.g., "/Release Notes/v3"). content: Markdown content for the page. comment: Optional commit comment. if_match: ETag for optimistic concurrency (required for updates, empty for creates). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/iimsaurav/azure-devops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server