Skip to main content
Glama
getsomesh

MCP Azure DevOps Server

by getsomesh

MCP Azure DevOps Server

MCP server for Azure DevOps Git operations integration with AWS Q.

Setup

  1. Install dependencies:

npm install
  1. Configure environment variables:

cp .env.example .env
# Edit .env with your Azure DevOps details

đŸ“‹ For detailed configuration steps, see CONFIGURATION.md

  1. Build and run:

npm run build
npm start

Related MCP server: Ares DevOps MCP Server

Configuration for AWS Q

Option 1: Use the provided config file

Copy mcp_config.json to your AWS Q MCP configuration directory.

Option 2: Manual configuration

Add to your AWS Q MCP client configuration:

{
  "mcpServers": {
    "azure-devops": {
      "command": "node",
      "args": ["c:/Users/somesh.rajasekar/Apps/mcp-azure-devops/dist/index.js"],
      "env": {
        "AZURE_DEVOPS_ORG_URL": "your-org-url",
        "AZURE_DEVOPS_PAT": "your-pat-token"
      }
    }
  }
}

Usage in AWS Q

Once configured, use these commands in AWS Q chat:

  • Search repositories: "Search for any repository"

  • Get repository info: "Get repository info for any repo"

  • Get pipeline variables: "Get pipeline variables for MyProject"

  • Get variable groups: "Get variable groups for MyProject"

Available Tools

Repository Operations

  • search_repositories - Search for repositories across all projects with branch info and latest PROD/QA deployments

  • get_repository_info - Get repository URL, branches with latest check-in dates, and latest PROD/QA deployment information

Pipeline Variables

  • get_pipeline_variables - Get variables from build/release pipelines (supports filtering by pipeline name and type)

  • get_variable_groups - Get variable groups from a project (supports filtering by group name)

Available Tools

4 tools
get_pipeline_variablesB

Get pipeline variables from build/release pipelines

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name
pipelineNameNoPipeline name (optional - will list all if not provided)
pipelineTypeNoPipeline type: build or release

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 behavioral disclosure. It states the action and resource but does not disclose what happens when pipelineName is omitted, whether the tool returns all variables, or any permission/read-only guarantees. The description adds minimal behavioral context beyond the basic operation.

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 short sentence with no filler. The verb and object are front-loaded, and the source scope is expressed efficiently. Every word contributes meaning, making it appropriately concise.

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 read-only getter with fully described parameters, the description is adequate but thin. It does not explicitly mention that omitting pipelineName lists all pipelines, nor does it describe the return value shape. Since there is no output schema, some important contextual details rely on the input schema or inference.

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 does not add meaning beyond the schema—it only paraphrases the pipelineType enum by saying 'build/release pipelines'. No additional insight into project or pipelineName semantics is provided.

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 ('Get') and resource ('pipeline variables') and scopes it to 'build/release pipelines'. This clearly distinguishes it from siblings like get_variable_groups or repository tools. The purpose is immediately recognizable and unambiguous.

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?

There is no guidance on when to use this tool versus alternatives such as get_variable_groups. The description does not state any decision rules, exclusions, or context for choosing this tool. The 'build/release pipelines' scope is implied rather than explicitly positioned against sibling tools.

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

get_repository_infoA

Get repository URL, branches with latest check-in dates, and latest PROD/QA deployment information

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name (optional - will search if not provided)
repositoryYesRepository name

TDQS

A3.6/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 full burden of behavioral disclosure. It does reveal what data the tool returns, which is useful, but it does not explicitly confirm the operation is read-only, mention permission requirements, or describe error/failure behavior. This is partial but not misleading.

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, front-loaded sentence with no filler or redundancy. It lists the main outputs in a compact, scannable way, making it easy for an agent to parse quickly.

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 two-parameter read tool with no output schema, the description adequately covers the key return items (URL, branches, deployment info). The schema handles the parameter semantics, including the optional 'project' search behavior. Missing error-handling or edge-case details are not critical for basic invocation.

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%: both 'project' and 'repository' are already described in the input schema. The tool description adds no extra meaning beyond what the schema provides, so the baseline score of 3 applies.

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 clearly states the verb 'Get' and names specific resources: repository URL, branches with latest check-in dates, and latest PROD/QA deployment information. This makes the tool's function concrete and distinct from sibling tools like search_repositories and get_pipeline_variables / get_variable_groups.

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 explicit guidance is given about when to use this tool versus its siblings, nor are there any exclusions or prerequisites mentioned. The description implies use when repository details are needed, but leaves the decision entirely to inference.

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

get_variable_groupsC

Get variable groups from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name
groupNameNoVariable group name (optional - will list all if not provided)

TDQS

C2.9/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. It only says 'Get variable groups' and does not disclose whether it returns one or many, whether permissions are needed, whether groupName filters results, or what the response shape is.

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 concise sentence with no filler. It front-loads the core action and resource, though it could have added a brief note about the optional groupName behavior without bloating it.

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 read tool with full schema coverage, the description is minimally adequate. However, with no output schema and no annotations, it lacks return-format details and any context about how this relates to similar sibling tools.

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 parameters are already documented in the schema. The description adds no additional parameter-level meaning, but it does not need to since the schema covers both project and groupName.

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?

Description states a clear verb ('Get') and resource ('variable groups'), scoped to 'a project'. It is distinct enough from siblings like get_pipeline_variables by naming the specific resource, though it does not explicitly call out the difference.

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?

There is no guidance on when to use this tool versus alternatives such as get_pipeline_variables or search_repositories. The description implies use when variable groups are needed, but it does not state exclusions or conditions.

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

search_repositoriesA

Search for repositories across all projects

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesRepository name or partial name to search for

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. 'Search' and 'across all projects' convey a read-only, project-spanning behavior, but the description does not say what is returned, whether results are limited/paginated, or if any access considerations apply.

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 that front-loads the action and scope with zero filler. Every word earns its place.

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 one-parameter search tool, the description plus schema is nearly complete: the agent knows what to search for, that it spans all projects, and how to supply the query. A note on the expected result shape would make it fully complete, but the absence is a minor gap 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 fully documents the single query parameter with a clear description ('Repository name or partial name to search for'), so the tool description adds no parameter-level meaning beyond the schema. The baseline of 3 applies.

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 ('Search'), names the resource ('repositories'), and explicitly scopes the action to 'across all projects'. This distinguishes it from the sibling get_repository_info, which suggests fetching details for a known repository rather than searching broadly.

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?

There is no guidance on when to choose this tool over the siblings. No mention of using get_repository_info for a known repository or of project-specific alternatives, so an agent must infer the decision context from the tool name alone.

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. 4 tool updatesv1.0.0
    • First observedget_pipeline_variables
    • First observedget_repository_info
    • First observedget_variable_groups
    • First observedsearch_repositories

TDQS

B3.4/5.0

Scored across 4 tools

Disambiguation4/5

Repository-related tools and variable-related tools are clearly separated, and the descriptions clarify their scope. The only mild ambiguity is between get_pipeline_variables and get_variable_groups, but their descriptions differentiate pipeline-scoped variables from project-level variable groups.

Naming Consistency5/5

All tool names follow a consistent get_/search_ + noun pattern, making the naming predictable and easy to navigate. There is no mixing of conventions or vague verbs.

Tool Count4/5

Four tools is slightly thin for a server claiming Azure DevOps coverage, but each tool covers a distinct read-only concern. The count is acceptable for a focused utility server, though not richly scoped.

Completeness2/5

The server only covers limited read operations for repositories, pipeline variables, and variable groups. Major Azure DevOps areas like work items, build/release execution, pull requests, and commits are entirely absent, leaving significant gaps for common agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers