Skip to main content
Glama

@om-surushe/efficient-ado

LLM-optimized Azure DevOps workflows for AI assistants

npm version License: MIT Build Status TypeScript Node

Efficient ADO is a Model Context Protocol (MCP) server that provides AI assistants with streamlined access to Azure DevOps. Built with agent-first design principles, it minimizes round trips, reduces token usage, and provides rich contextual responses.

Features

  • 🎯 Agent-First Design - Composite tools reduce round trips

  • âš¡ Token Efficient - Tiered responses (summary/standard/detailed)

  • 🤖 LLM-Optimized - Rich context + suggested actions in every response

  • 🚀 Fast - Built with TypeScript, optimized for performance

  • 📦 Complete - 34 tools covering PRs, work items, repos, branches

  • 🔄 Composite Workflows - Multi-step operations in single calls

  • 🧠 Error Guidance - Errors tell agents HOW to fix issues

Related MCP server: Azure DevOps MCP Server

Installation

npm install @om-surushe/efficient-ado

Quick Start

Configuration

Create a .env file:

AZDO_ORG_URL=https://dev.azure.com/your-org
AZDO_PAT=your-personal-access-token
AZDO_PROJECT=your-project  # optional
AZDO_REPO=your-repo        # optional

PAT Requirements:

  • Code (Read & Write)

  • Pull Request Threads (Read & Write)

  • Work Items (Read & Write)

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "efficient-ado": {
      "command": "npx",
      "args": ["@om-surushe/efficient-ado"],
      "env": {
        "AZDO_ORG_URL": "https://dev.azure.com/your-org",
        "AZDO_PAT": "your-pat-here",
        "AZDO_PROJECT": "your-project",
        "AZDO_REPO": "your-repo"
      }
    }
  }
}

Usage with OpenClaw / Cline / Other MCP Clients

Similar configuration - use stdio transport with environment variables.

Available Tools (34 Total)

Foundation

  • setup_workspace - Configure credentials and verify connection

Pull Request Workflows

Discovery:

  • list_prs - List PRs with filters (creator, reviewer, status)

  • get_pr - Get PR details with reviewers and status

  • start_review - COMPOSITE - Get PR + comments + reviewers in one call

Review & Approval:

  • vote_on_pr - Approve (10), approve with suggestions (5), wait (-5), reject (-10)

  • manage_reviewers - Add/remove reviewers

  • quick_approve - COMPOSITE - Approve + merge if ready

Merge:

  • check_merge_readiness - Verify all merge requirements

  • complete_pr - Merge PR with completion options

Comments & Threads:

  • list_comments - List all threads (general + inline)

  • add_comment - Add general or inline comment

  • reply_to_thread - Reply to existing thread

  • update_thread_status - Mark thread as fixed/active/wontFix/closed

  • address_comment - COMPOSITE - Reply + resolve in one call

Files & Diffs:

  • get_pr_changes - List changed files with stats

  • get_file_diff - Get file diff (side-by-side comparison)

  • get_file_content - Get file content at PR commit

PR Lifecycle:

  • create_pr - Create PR with work items, reviewers, auto-complete

  • update_pr - Update title, description, draft status

  • abandon_pr - Close PR without merging

  • reactivate_pr - Reopen abandoned PR

Work Items

  • get_work_item - Get work item by ID with relations

  • list_my_work_items - List work items assigned to you

  • create_work_item - Create new task/bug/story

  • update_work_item - Update work item fields

  • add_work_item_comment - Add discussion comment

  • link_work_item - Link work items (parent/child/related)

Repos & Branches

  • list_repositories - List repos in project

  • list_branches - List branches in repo

  • create_branch - Create new branch from source

  • list_commits - List commits with filters

  • get_commit - Get commit details

  • compare_branches - Compare two branches

Daily Workflow

  • get_my_work - COMPOSITE - Dashboard: my PRs + reviews + work items

Usage Examples

Daily Standup

> "What do I need to work on today?"

Agent uses: get_my_work()

Response includes:
- PRs you created (3 active, 1 draft)
- PRs needing your review (2 pending vote)
- Work items assigned to you (5 tasks, 2 bugs)

Code Review

> "Review PR #1805"

Agent uses: start_review(prId=1805)

Gets in one call:
- PR details (title, description, status, branches)
- All comment threads (23 general + 5 inline)
- Reviewers and their votes
- Changed files overview

Then:

> "Show me the changes to config.ts"

Agent uses: get_file_diff(prId=1805, path="config.ts")

Returns side-by-side diff with line numbers

Addressing Feedback

> "Reply 'Fixed indentation' and mark thread 12345 as resolved"

Agent uses: address_comment(
  prId=1805,
  threadId=12345,
  reply="Fixed indentation",
  status="fixed"
)

One call handles both reply and status update

Approving & Merging

> "Approve PR #1805 and merge if ready"

Agent uses: quick_approve(prId=1805)

One call:
1. Approves PR (vote=10)
2. Checks merge requirements
3. Merges if all policies pass
4. Or tells you what's blocking

Creating Work from Feedback

> "Create a bug for the memory leak in thread 12345"

Agent uses:
1. list_comments(prId=1805) to get thread details
2. create_work_item(
     type="Bug",
     title="Memory leak in cache handler",
     description="Details from PR review..."
   )
3. link_work_item(workItemId=123, prId=1805)

Three calls link bug to the PR discussion

Design Philosophy

Agent-First

Every tool response includes:

  • Current state - What's happening now

  • Statistics - Quick metrics

  • Blockers - What's preventing progress (if any)

  • Suggested actions - What to do next with exact tool names

Token Efficient

Responses have levels:

  • Summary (~200 tokens) - Quick status check

  • Standard (~800 tokens) - Most common use

  • Detailed (~3000 tokens) - When agent needs everything

Error Messages That Help

Errors tell agents HOW to fix issues:

{
  "error": {
    "code": "MERGE_BLOCKED",
    "blockers": [
      {
        "reason": "Insufficient approvals (1/2)",
        "howToFix": "Call vote_on_pr(vote=10) to approve",
        "relatedTools": ["vote_on_pr"]
      }
    ]
  }
}

Development

git clone https://github.com/om-surushe/efficient-ado.git
cd efficient-ado
npm install
npm run build

Status

  • Phase 1: Foundation + setup

  • Phase 2: Pull request workflows (15 tools)

  • Phase 3: Work items (6 tools)

  • Phase 4: Repos & branches (6 tools)

  • Phase 5: PR creation & update (4 tools)

  • Phase 6: Composite workflows (2 tools)

Total: 34 tools complete and ready for use! 🎉

Future Enhancements

  • Pipeline/build tools

  • Team/project management

  • Wiki/documentation tools

  • Artifact management

  • Test plan integration

License

MIT License - see LICENSE for details.

Author

Om Surushe


Part of the Efficient MCP series - LLM-optimized tools for AI assistants.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
1Releases (12mo)
Commit activity

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/om-surushe/efficient-ado'

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