Ado Workflows Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ado Workflows Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP server exposing ado-workflows as tool calls for AI agents. Enables Copilot and other MCP clients to discover Azure DevOps repositories, manage pull requests, and interact with PR comments and reviews.
<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code"> <img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">
Click a badge above to install with one click, or follow manual installation below.
| Tool | Description |
|---|---|
repository_discovery | Scan a directory for git repos with Azure DevOps remotes, select the best match |
set_repository_context | Cache repository context for the session (avoids redundant git CLI lookups) |
get_repository_context_status | Inspect current cached context state for debugging |
clear_repository_context | Reset cached context, forcing fresh discovery |
| Tool | Description |
|---|---|
establish_pr_context | Parse a PR URL or resolve a numeric PR ID into reusable context |
create_pull_request | Create a new PR from branch names with optional title, description, and draft mode |
| Tool | Description |
|---|---|
get_pr_review_status | Fetch reviewer votes, commit history, and detect stale approvals |
analyze_pending_reviews | Discover PRs needing review attention across a repository |
| Tool | Description |
|---|---|
analyze_pr_comments | Categorize comment threads by status with author statistics |
post_pr_comment | Post a new comment thread to a PR |
reply_to_pr_comment | Reply to an existing comment thread |
resolve_pr_comments | Batch-resolve comment threads (partial-success semantics) |
Click one of the badges at the top to automatically install in VS Code!
cd ado-workflows-mcp
uv sync --all-extrasAdd to your VS Code settings or .vscode/mcp.json:
{
"mcp.servers": {
"ado-workflows": {
"command": "uvx",
"args": ["--from", "git+https://github.com/grimlor/ado-workflows-mcp", "ado-workflows-mcp"],
"description": "Azure DevOps workflow automation tools"
}
}
}The server communicates over stdio using the Model Context Protocol.
Uses Azure DefaultAzureCredential via the ado-workflows library. Authenticate with any method that DefaultAzureCredential supports:
az login # Azure CLI (local dev)
az login --use-device-code # Headless / SSHManaged identity, environment variables, and other credential providers work automatically in hosted environments.
All errors are returned as structured ActionableError objects with:
action_required, checks, steps, command, discovery_tool)Errors are returned as data, never raised — the MCP transport stays clean.
1. repository_discovery → find the ADO repo
2. set_repository_context → cache it for the session
3. establish_pr_context → resolve a PR URL or ID
4. get_pr_review_status → check approval state
5. analyze_pr_comments → see active threads
6. post_pr_comment / reply → leave feedback
7. resolve_pr_comments → mark threads as fixeduv run task check # lint + type + test (all-in-one)
uv run task test # Run tests (37 BDD specs)
uv run task cov # Run tests with coverage
uv run task lint # Lint (with auto-fix)
uv run task format # Format code
uv run task type # Type checkNote: uv run is optional when the venv is activated via direnv.src/ado_workflows_mcp/
├── server.py # FastMCP server entry point
├── mcp_instance.py # MCP singleton
├── tools/
│ ├── repositories.py # Repository discovery tools
│ ├── repository_context.py # Session context management
│ ├── pull_requests.py # PR lifecycle tools
│ ├── pr_review.py # Review status tools
│ ├── pr_comments.py # Comment workflow tools
│ └── _helpers.py # Shared error-handling utilities
└── py.typed # PEP 561 marker37 BDD specs across 10 requirement classes — organized by consumer requirement, not code structure.
| Requirement Class | Specs | Coverage |
|---|---|---|
| TestRepositoryDiscovery | 3 | Success, working-dir failure, SDK failure |
| TestSetRepositoryContext | 3 | Valid context, missing fields, SDK failure |
| TestGetRepositoryContextStatus | 3 | Populated, empty, error |
| TestClearRepositoryContext | 2 | Reset + clear state |
| TestEstablishPRContext | 3 | URL parse, ID resolve, SDK failure |
| TestCreatePullRequest | 3 | Success, missing branch, SDK failure |
| TestGetPRReviewStatus | 3 | Success, invalid PR, SDK failure |
| TestAnalyzePendingReviews | 3 | Results, empty, SDK failure |
| TestAnalyzePRComments | 3 | Categorized, no threads, SDK failure |
| TestPostPRComment | 3 | Valid post, empty content, SDK failure |
| TestReplyToPRComment | 3 | Valid reply, missing thread, SDK failure |
| TestResolvePRComments | 3 | Batch resolve, empty list, SDK failure |
This project is licensed under the MIT License.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.