ado-search-mcp
This MCP server exposes Azure DevOps work item search and management through MCP tools.
Full-text search indexed work items/wiki pages, with tag, area, assignee, type, state, and limit filters.
Regex search across selected work item fields with case and context controls.
List direct or recursive children/descendants of a work item.
Show full markdown content for a work item or wiki page.
List live links and comments for a work item.
Fetch specific work items by ID into the local store, optionally with comments/attachments.
Create and update work items with fields such as title, type, state, area, iteration, tags, assignee, priority, story points, description, and acceptance criteria.
Add comments to work items.
Add or remove links between work items.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ado-search-mcp search for bugs related to login page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ado-search-mcp
MCP server that wraps the ado-search CLI for Azure DevOps work item search and management.
Tools
Tool | Description |
| Full-text search of indexed work items and wiki pages |
| Regex pattern search across work item fields |
| List children/descendants of a work item |
| Show full content of a work item or wiki page |
| List links on a work item (live from ADO) |
| List comments on a work item, with their ids (live from ADO) |
| Read raw field values as JSON, HTML intact (live from ADO) |
| List comments that @mention you, newest first (live from ADO) |
| List test plans with owner, area, iteration, dates (live from ADO) |
| List a test plan's suite tree (live from ADO) |
| List a suite's test cases with steps and testers (live from ADO) |
| List a suite's test points with latest outcomes (live from ADO) |
| List test runs with outcome counts (live from ADO) |
| List a test run's results with linked bugs (live from ADO) |
| Read a wiki page or list page paths, any project (live from ADO) |
| Replace a wiki page, ETag-guarded, with a dry-run diff |
| Run a read-only Analytics OData query across all pages (live from ADO) |
| Fetch specific work items by ID into local store |
| Create a new work item |
| Update an existing work item |
| Add a comment to a work item |
| Replace the text of a comment |
| Add a link between two work items |
| Remove a link between two work items |
ado_search and ado_grep accept an optional project filter for data dirs that sync several projects (ado-search >= 1.14).
ado_add_comment turns @Display Name and @email tags into ADO mentions and refuses to post when a tag is unknown or names several people (ado-search >= 1.15). A tag may start the comment. Write @ for a literal @, or pass resolve_mentions: false to post the text as-is. ado_edit_comment takes a comment_id from ado_list_comments and handles text and mentions the same way (ado-search >= 1.16). HTML values (comment text, description, acceptance criteria) reach the CLI through a temp file, so text starting with @ or - is safe.
ado_get_fields returns {field: value} JSON for an optional fields list of reference names (default: type, title, state, assignee, tags, story points, description, acceptance criteria). Description and acceptance criteria keep their HTML, which ado_show strips, so read them here before editing with ado_update. Identity fields return the email; empty fields return null (ado-search >= 1.17).
ado_mentions lists the comments that @mention the authenticated user over the last 30 days (WIQL @RecentMentions), newest first: work item id, title, state, type and assignee, then comment id, author, created date (UTC) and plain text with mentions as @Name. since (ISO datetime, UTC) keeps comments created or modified after it, limit defaults to 50, and your own comments are dropped unless include_own is true (ado-search >= 1.18).
The ado_test_* tools read Azure Test Plans live and return JSON; each takes an optional project (ado-search >= 1.19). ado_test_suites lists suites depth-first with type, linked requirement and query; ado_test_cases returns steps as {action, expected} with shared steps as {shared_steps: id}, plus parameters and tester/configuration assignments; ado_test_results includes linked bug ids.
ado_wiki_show reads one page's markdown (or lists page paths) from any project's wiki. ado_wiki_update replaces a page with content: it reads the live page first and sends its ETag with If-Match, so a page changed in between is refused. dry_run returns the unified diff and writes nothing; create allows a new page; comment is stored with the revision (ado-search >= 1.19).
ado_analytics runs a read-only Analytics OData query (analytics.dev.azure.com/{org}[/{project}]/_odata/v4.0-preview/{entity}) and follows @odata.nextLink to the last page or max_rows. query is the raw OData query string, e.g. $select=WorkItemId,Title&$filter=WorkItemType eq 'Bug' or $apply=.../groupby(...); path literals take single backslashes. Without project the query is organization-level. Rows come back inline, capped at 200 with a truncated note; with out_file the CLI writes {"value": [...]} there and the tool returns the row count and the first 3 rows. An invalid query returns Analytics' HTTP status and message (ado-search >= 1.20).
Related MCP server: Azure DevOps MCP Server
Prerequisites
Node.js 18+
ado-search CLI installed and on PATH
An initialized ado-search data directory (
ado-search init && ado-search sync)
Setup
Clone and build:
git clone https://github.com/HurleySk/ado-search-mcp.git
cd ado-search-mcp
npm install
npm run buildCreate a config file (
ado-search-mcp.json):
{
"dataDir": "/path/to/your/ado-search/data-dir",
"adoSearchPath": "ado-search"
}Add to your project's
.mcp.json:
{
"mcpServers": {
"ado-search": {
"command": "node",
"args": ["/path/to/ado-search-mcp/dist/server.js"],
"env": {
"ADO_SEARCH_CONFIG": "/path/to/ado-search-mcp.json"
}
}
}
}Configuration
The server looks for config in this order:
ADO_SEARCH_CONFIGenvironment variable (path to JSON config file)ado-search-mcp.jsonsidecar file next todist/server.jsADO_DATA_DIRenvironment variable (data directory path only)
License
MIT
Available Tools
12 toolsado_add_commentB
Add a comment to a work item
Inputs: text (required), work_item_id (required).
ado_add_linkB
Add a link between two work items
Inputs: link_type (required), source_id (required), target_id (required), comment.
ado_childrenA
List children or descendants of a work item by parent ID
Inputs: parent_id (required), recursive, type_filter, state_filter, +1 more.
ado_createB
Create a new work item in Azure DevOps
Inputs: type (required), title (required), area, tags, +10 more.
ado_fetchA
Fetch specific work items by ID from Azure DevOps and add to local store
Inputs: ids (required), include_comments, include_attachments.
ado_grepB
Regex pattern search across work item fields (title, description, comments, etc.)
Inputs: pattern (required), limit, fields, tag_filter, +6 more.
ado_list_commentsA
List comments on a work item (fetched live from Azure DevOps)
Inputs: work_item_id (required).
ado_list_linksB
List links on a work item (fetched live from Azure DevOps)
Inputs: work_item_id (required).
ado_remove_linkB
Remove a link between two work items
Inputs: link_type (required), source_id (required), target_id (required).
ado_searchB
Full-text search of indexed Azure DevOps work items and wiki pages
Inputs: query (required), limit, tag_filter, area_filter, +3 more.
ado_showA
Show full content of a work item (by numeric ID) or wiki page (by path). Returns formatted markdown.
Inputs: item_id (required).
ado_updateC
Update an existing work item in Azure DevOps
Inputs: work_item_id (required), area, tags, state, +9 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools map clearly to distinct actions, but a few pairs overlap: ado_fetch and ado_show both retrieve work items by ID, and ado_search and ado_grep both search work items. The descriptions help differentiate local-store caching vs. formatted output and full-text vs. regex, but an agent could still misselect.
The consistent 'ado_' prefix helps, but the verb part is mixed: list_comments/list_links and add_link/remove_link use verb_noun, while fetch/create/update/search/show are bare verbs and children is a bare noun. This is readable but not a uniform convention.
Twelve tools is well within the ideal scope for an Azure DevOps work-item search and management server. Each tool covers a distinct operation such as searching, CRUD, comments, links, or hierarchy, so none feels like filler.
The set covers reading, creating, updating, searching, commenting, linking, and hierarchy traversal for work items. Minor gaps exist—there is no delete operation and no explicit general list/query tool—but the core workflows agents need are covered.
Maintenance
Related MCP Connectors
Search and manage your team's knowledge from MCP clients.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Azure DevOps services including work items, repositories, pipelines, wikis, and test plans through a local MCP server that provides direct access to Azure DevOps REST APIs from your code editor.132,683 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables integration with Azure DevOps services, allowing interaction with work items, pull requests, pipelines, wikis, boards, and projects through natural language in Cline and other MCP clients.2MIT
- FlicenseNot gradedqualityDmaintenanceProvides Azure DevOps integration through MCP, enabling management of projects, work items, teams, and policies via natural language. Supports bulk work item creation with hierarchical relationships and iteration assignments.32 npm2-
- FlicenseNot gradedqualityDmaintenanceConnects Azure DevOps work items to Claude Code via MCP, enabling fetching, listing, updating tickets and automating PR creation.-