Skip to main content
Glama

ado-search-mcp

MCP server that wraps the ado-search CLI for Azure DevOps work item search and management.

Tools

Tool

Description

ado_search

Full-text search of indexed work items and wiki pages

ado_grep

Regex pattern search across work item fields

ado_children

List children/descendants of a work item

ado_show

Show full content of a work item or wiki page

ado_list_links

List links on a work item (live from ADO)

ado_list_comments

List comments on a work item (live from ADO)

ado_fetch

Fetch specific work items by ID into local store

ado_create

Create a new work item

ado_update

Update an existing work item

ado_add_comment

Add a comment to a work item

ado_add_link

Add a link between two work items

ado_remove_link

Remove a link between two work items

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

  1. Clone and build:

git clone https://github.com/HurleySk/ado-search-mcp.git
cd ado-search-mcp
npm install
npm run build
  1. Create a config file (ado-search-mcp.json):

{
  "dataDir": "/path/to/your/ado-search/data-dir",
  "adoSearchPath": "ado-search"
}
  1. 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:

  1. ADO_SEARCH_CONFIG environment variable (path to JSON config file)

  2. ado-search-mcp.json sidecar file next to dist/server.js

  3. ADO_DATA_DIR environment variable (data directory path only)

License

MIT

Available Tools

12 tools
ado_add_commentB

Add a comment to a work item

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesComment text (HTML supported)
work_item_idYesWork item ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It only restates the action of adding a comment, without mentioning permissions, side effects, idempotency, or what happens on failure. This is a mutation tool with no additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no wasted words. It is front-loaded and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with full schema coverage, the description is minimally adequate. However, there is no output schema and no mention of what the tool returns or what conditions might cause failure, leaving some context gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents both parameters clearly, including HTML support for text. The description adds no parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add a comment to a work item' uses a specific verb and resource, making the core operation unmistakable. It does not explicitly distinguish itself from sibling tools, but the sibling names are sufficiently different that ambiguity is minimal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when you need to add a comment to a work item. However, there is no explicit guidance about when not to use it or how it relates to sibling tools like ado_list_comments or ado_add_link.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_childrenA

List children or descendants of a work item by parent ID

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idYesParent work item ID
recursiveNoShow all descendants, not just direct children
type_filterNoFilter by work item type (e.g. 'Bug', 'User Story')
state_filterNoFilter by state (e.g. 'Active', 'Closed')
include_closed_dateNoInclude closed date from state history

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. 'List' signals a read-only operation, but the description does not state defaults such as recursive=false returning only direct children, nor does it mention pagination or return format. It adds little beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It efficiently states the core action and resource without repeating schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, the description is minimally viable but incomplete. It does not mention default recursion behavior, when to apply filters, or what fields the returned list contains, so the agent must rely on schema defaults and tool naming.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only reiterates the parent_id concept and adds no new semantic meaning for recursive, type_filter, state_filter, or include_closed_date beyond the schema property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), resource ('children or descendants of a work item'), and the key required parameter ('by parent ID'). It clearly distinguishes from sibling tools like ado_list_comments and ado_list_links, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternative guidance. Usage is implied by the resource type, but there are no exclusions or comparisons to siblings, so the agent must infer when to choose this over ado_show or ado_list_links.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_createB

Create a new work item in Azure DevOps

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNoArea path
tagsNoSemicolon-separated tags
typeYesWork item type (Bug, User Story, Task, Epic, Feature)
stateNoInitial state
titleYesWork item title
fieldsNoAdditional ADO fields as key-value pairs
parentNoParent work item ID
reasonNoReason (e.g. for closing)
priorityNoPriority (1=highest)
iterationNoIteration path
assigned_toNoAssignee email or display name
descriptionNoDescription (HTML)
story_pointsNoStory points
acceptance_criteriaNoAcceptance criteria (HTML)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It identifies the operation as creating a work item, implying a mutation, but doesn't disclose side effects, required team/project context, validation rules, or what happens on creation. It gives basic transparency but lacks behavioral depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that is efficient. It could potentially add usage/behavior details, but as written it has no waste and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but combined with a 100%-covered schema it is adequate. Missing elements include explicit mutation warning given no annotations, and guidance about which ADO project/organization context applies, but the core creation purpose is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents every parameter. The description ('Create a new work item') adds no additional parameter semantics beyond what the schema already provides, but because coverage is complete the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Create') and resource ('work item in Azure DevOps'). It is distinct enough from siblings like ado_update or ado_fetch, though it doesn't name any sibling differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by describing the creation action, but provides no explicit guidance about when to choose this tool over alternatives such as ado_update or ado_add_link. With many siblings, some distinction would elevate it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_fetchA

Fetch specific work items by ID from Azure DevOps and add to local store

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesWork item IDs to fetch
include_commentsNoFetch comments
include_attachmentsNoDownload attachments

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It usefully discloses that fetched items are added to a local store, which is a meaningful side effect. However, it does not explain merge/overwrite behavior, failure semantics for invalid IDs, permissions needed, or whether the remote system remains untouched beyond being read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the action, the target resource, the source, and the side effect with no filler. The most important information is front-loaded and every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple fetch operation with well-documented parameters, but it lacks explicit guidance on when to choose this tool over closely related siblings and does not describe return values or local-store update behavior. Given no output schema and no annotations, a bit more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already well-documented in the schema. The description only reinforces that IDs are the focus and does not add new parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch'), a specific resource ('specific work items by ID'), and a clear side effect ('add to local store'). This distinguishes it from query-based siblings like ado_search and display-oriented tools like ado_show.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ID' implies this tool is for targeted retrieval when work item IDs are already known, contrasting with search/grep. However, it does not explicitly state when to prefer this over ado_show, ado_list_comments, or other siblings, leaving the selection partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_grepB

Regex pattern search across work item fields (title, description, comments, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
fieldsNoFields to search (default: title, description, comments)
patternYesRegex pattern to search for
tag_filterNoFilter by tag
area_filterNoFilter by area path (prefix match)
assigned_toNoFilter by assignee email
ignore_caseNoCase-insensitive matching
type_filterNoFilter by work item type (e.g. 'Bug', 'User Story')
state_filterNoFilter by state (e.g. 'Active', 'Closed')
context_charsNoCharacters of context around each match

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the search scope and does not disclose result shape, default limits, filtering behavior, case-insensitivity, or whether snippets/context are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. However, the trailing 'etc.' is vague and slightly weakens the otherwise concise phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 parameters, no output schema, and several sibling tools to disambiguate from, a one-sentence description is insufficient. It does not explain return format, default field behavior, filtering semantics, or how this tool relates to ado_search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the baseline is 3. The description adds little beyond echoing the 'fields' parameter and the regex concept; it does not compensate for or enhance the schema's parameter explanations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs regex pattern search across work item fields and names representative fields. It is specific enough to convey the core purpose, though it does not explicitly distinguish itself from sibling tools like ado_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used for regex-based searching within work item fields, but it gives no explicit guidance on when to prefer this over alternatives or when not to use it. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_list_commentsA

List comments on a work item (fetched live from Azure DevOps)

ParametersJSON Schema
NameRequiredDescriptionDefault
work_item_idYesWork item ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It reveals that the tool performs a live fetch, which is useful, and 'List' implies a non-destructive read. However, it does not mention permissions, error behavior, or any side effects, so transparency is only partially addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler. It front-loads the action and resource, and the parenthetical 'fetched live from Azure DevOps' adds meaningful context without bloating the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read-only tool, the description plus schema is sufficient for an agent to understand what it does and how to invoke it. The only missing elements are optional details like the shape of the returned comments or pagination behavior, which are not critical given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents work_item_id fully with type, bounds, and a 'Work item ID' description, giving 100% schema description coverage. The tool description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List'), a precise resource ('comments on a work item'), and a source ('Azure DevOps'), making the tool's purpose immediately clear. It also naturally distinguishes itself from write-focused siblings like ado_add_comment and ado_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: an agent would use this when it needs to retrieve comments for a particular work item. The phrase 'fetched live' hints that this tool should be chosen when fresh data is required, but there is no explicit when-to-use or when-not-to-use guidance or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_showA

Show full content of a work item (by numeric ID) or wiki page (by path). Returns formatted markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesWork item ID (number) or wiki page path

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It describes the output ('Returns formatted markdown') and the read-oriented action ('show'), which implies non-mutating behavior, but it does not explicitly disclose whether the operation is read-only, whether it requires special permissions, or any failure modes. This is a moderate but not exhaustive disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the first states the operation and targets, the second states the return format. Everything present is useful and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description adequately covers the input type, the two accepted forms, and the output format. It does not discuss error behavior or side effects, but for a 'show' operation this is a minor omission, so it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already has 100% coverage for the single parameter, describing item_id as 'Work item ID (number) or wiki page path'. The description repeats this information ('by numeric ID' / 'by path') without adding new semantic detail, so it meets the baseline but does not exceed what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show full content') and identifies the exact resources (work item by numeric ID, wiki page by path) and output format (formatted markdown). This clearly distinguishes it from siblings such as ado_search, ado_children, and ado_fetch by the scope of content returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—when you need the full content of a known work item or wiki page—but it does not explicitly state when to prefer this over sibling tools like ado_fetch or ado_search, nor does it list any exclusions. The 'by numeric ID or path' constraint provides some guidance, but no explicit alternative routing is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ado_updateC

Update an existing work item in Azure DevOps

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNoNew area path
tagsNoSemicolon-separated tags
stateNoNew state
titleNoNew title
fieldsNoAdditional ADO fields as key-value pairs
reasonNoReason (e.g. for closing)
priorityNoPriority (1=highest)
iterationNoNew iteration path
assigned_toNoNew assignee email or display name
descriptionNoNew description (HTML)
story_pointsNoStory points
work_item_idYesWork item ID to update
acceptance_criteriaNoNew acceptance criteria (HTML)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and 'Update an existing work item' only signals mutation. It does not explain whether the update merges only supplied fields or replaces the item, whether state transitions (e.g., closing) require a reason, whether permissions are needed, or what the tool returns. For a high-impact mutation tool this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 7-word sentence with no filler; the verb and object are front-loaded and every word earns its place. It reads as genuine conciseness rather than under-specification because the sentence conveys real meaning, though it is on the minimal side for a 13-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 13 parameters, no output schema, and no annotations, the description is too thin. It omits key context an agent needs: merge-vs-replace semantics, behavior on missing/empty fields, return value, and how it differs from ado_create, ado_fetch, and ado_show. The schema covers parameters, but behavioral context is entirely absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — all 13 parameters have descriptions in the schema — so the baseline is 3. The description adds no parameter-level detail, but it does not need to because the schema fully documents each field, including the nested 'fields' object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and resource ('an existing work item in Azure DevOps'). The qualifier 'existing' implicitly separates it from create/read siblings like ado_create, ado_fetch, and ado_show, but it never names a sibling or an explicit contrast, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus its 11 siblings. The phrase 'existing work item' implies a modification scenario, but there are no explicit conditions, exclusions, or pointers to alternatives such as ado_create for new items or ado_fetch/ado_show for reads. This mirrors the update_drive calibration case, which scored 2 for the same gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedado_add_comment
    • First observedado_add_link
    • First observedado_children
    • First observedado_create
    • First observedado_fetch
    • First observedado_grep
    • First observedado_list_comments
    • First observedado_list_links
    • First observedado_remove_link
    • First observedado_search
    • First observedado_show
    • First observedado_update

TDQS

B3.4/5.0

Scored across 12 tools

Disambiguation3/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Related MCP Connectors

Related MCP Servers