MCP DevOps Plan Server
Click on "Install 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., "@MCP DevOps Plan Servershow me all work items in the 'Mobile App' project"
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.
MCP DevOps Plan Server
A Model Context Protocol (MCP) server implementation for DevOps Plan, enabling work item management through standardized MCP clients.
Features
Retrieve applications and projects from Plan
Get available components and work item types
Create, retrieve, and delete work items
Filter work items by type and owner
Related MCP server: Azure MCP FastMCP Server
Warranties
This MCP server is provided "as is" without any warranties. It is designed to work with the DevOps Plan system and may require specific configurations to function correctly. Users are responsible for ensuring compatibility with their Plan instance. This server provides data destructive functionality, the author is not liable for any data loss due to use of this MCP capability.
Example Use Cases
1. Setting Up a New Project Sprint
Scenario: You're a project manager starting a new sprint and need to create multiple work items for your team.
Steps:
"Get me all available applications in Plan"
"Show me the projects in the 'WebApp Development' application"
"What work item types are available in the 'Customer Portal' project?"
"Create a new Epic titled 'User Authentication System' in the Customer Portal project"
"Create three tasks: 'Design login UI', 'Implement OAuth integration', and 'Add password reset functionality'"
Benefits: Quickly set up organized work items for sprint planning and team assignment.
2. Sprint Review and Cleanup
Scenario: At the end of a sprint, you need to review completed work and clean up obsolete items.
Steps:
"Show me all work items in the 'Mobile App' project"
"Filter work items by type 'Bug' to see what issues were resolved"
"Show me work items assigned to 'john.doe' to review his contributions"
"Delete the work item with ID '12345' as it's no longer relevant"
"Create a summary report of completed vs remaining work items"
Benefits: Maintain clean project state and generate insights for retrospectives.
3. Cross-Team Dependency Management
Scenario: You're coordinating between frontend and backend teams and need to track dependencies.
Steps:
"Get all work items in the 'E-commerce Platform' project"
"Filter by work item type 'Story' to see feature requirements"
"Create a new task 'API endpoint for user profiles' in the 'Backend Services' component"
"Create a dependent task 'Integrate user profile API' in the 'Frontend' component"
"Check work items assigned to backend team members to see their current workload"
Benefits: Coordinate cross-functional work and ensure proper dependency tracking.
Configuration
The server requires configuration for authentication and connection to your Plan instance. You can provide configuration in several ways:
Quick Setup (Recommended)
Run the interactive setup script:
npm run setupThis will prompt you for your configuration values and create a .env file automatically.
Option 1: Environment Variables
Set the following environment variables:
export PLAN_ACCESS_TOKEN="your_base64_encoded_token_here"
export PLAN_SERVER_URL="https://your-plan-server.com/plan"
export PLAN_TEAMSPACE_ID="your-teamspace-id-here"Option 2: Command Line Arguments
Pass configuration as command line arguments:
node src/lib/server.js --token "your_token" --server-url "https://your-server.com/plan" --teamspace-id "your-teamspace-id"Option 3: Environment File
Copy .env.example to .env and fill in your values:
cp .env.example .env
# Edit .env with your actual configuration valuesInstallation
Option 1: Direct NPX Usage (Recommended)
You can run the MCP server directly without installation:
npx @securedevops/mcp-devops-plan --token "your_token" --server-url "https://your-server.com/plan" --teamspace-id "your-teamspace-id"Option 2: Global Installation
npm install -g @securedevops/mcp-devops-plan
mcp-devops-plan --token "your_token" --server-url "https://your-server.com/plan" --teamspace-id "your-teamspace-id"Option 3: Local Development
git clone https://github.com/securedevops/mcp-devops-plan.git
cd mcp-devops-plan
npm install
npm run setup # Interactive configuration setup
npm start # Start the MCP serverUse with Claude Desktop
Option 1: NPX (Recommended)
Add the following to your Claude Desktop MCP configuration:
{
"mcpServers": {
"devops-plan": {
"command": "npx",
"args": [
"@securedevops/mcp-devops-plan",
"--token", "your_token_here",
"--server-url", "https://your-server.com/plan",
"--teamspace-id", "your_teamspace_id"
]
}
}
}Option 2: Environment Variables with NPX
{
"mcpServers": {
"devops-plan": {
"command": "npx",
"args": ["@securedevops/mcp-devops-plan"],
"env": {
"PLAN_ACCESS_TOKEN": "your_token_here",
"PLAN_SERVER_URL": "https://your-server.com/plan",
"PLAN_TEAMSPACE_ID": "your_teamspace_id"
}
}
}
}Option 3: Local Installation
Add the following to your Claude Desktop MCP configuration:
{
"mcpServers": {
"devops-plan": {
"command": "node",
"args": ["/path/to/mcp-devops-plan/src/lib/server.js"],
"env": {
"PLAN_ACCESS_TOKEN": "your_token_here",
"PLAN_SERVER_URL": "https://your-server.com/plan",
"PLAN_TEAMSPACE_ID": "your_teamspace_id"
}
}
}
}Or with command line arguments:
{
"mcpServers": {
"devops-plan": {
"command": "node",
"args": [
"/path/to/mcp-devops-plan/src/lib/server.js",
"--token", "your_token_here",
"--server-url", "https://your-server.com/plan",
"--teamspace-id", "your_teamspace_id"
]
}
}
}Usage
The MCP DevOps Plan server provides the following tools for interacting with DevOps Plan:
Available Tools
1. get_applications
Purpose: Retrieves all applications from the Plan system Parameters: None Usage: Use this to get a list of all available applications in your Plan instance. This is typically the first step to understand what applications you can work with.
2. get_available_projects
Purpose: Get the list of projects in Plan for a given application Parameters:
application(string): Name of the plan application Usage: Once you have an application name, use this to see all projects within that application.
3. get_available_components
Purpose: Get the list of components for a project in Plan for a given application Parameters:
application(string): Name of the applicationprojectId(string): ID of the project Usage: Retrieve available components within a specific project. Components are optional organizational units for work items.
4. get_available_workitem_types
Purpose: Get the available work item types for a project in Plan for a given application Parameters:
application(string): Name of the applicationprojectId(string): ID of the project Usage: Get the list of work item types (e.g., Task, Bug, Story) available in a specific project. This is needed before creating work items.
5. create_work_item
Purpose: Creates a new work item in Plan Parameters:
component(string, optional): An optional component name if any are available in the projecttitle(string): Title of the work itemdescription(string): Description of the work itemworkItemType(string): Type of the work item from the list of available work item typesapplication(string): Name of the applicationprojectId(string): ID of the project Usage: Create new work items like tasks, bugs, or stories in a specific project.
6. get_work_items
Purpose: Retrieves all work items for a given application, can filter by work item type and specific owner Parameters:
applicationName(string): Name of the applicationprojectId(string): ID of the projectworkitemType(string, optional): Type of the work item to filter by, if anyowner(string, optional): Filter the work items by owner, if any Usage: List existing work items with optional filtering. Use this to see current work items, track progress, or find specific items.
7. delete_work_item
Purpose: Deletes a work item in Plan Parameters:
dbid(string): The dbid field from the work item to identify it (this is the first field returned for each work item in the get_work_items tool)application(string): Name of the application Usage: Remove work items that are no longer needed. The dbid can be obtained from the get_work_items tool output.
Available Tools
14 toolschange_work_item_stateB
Changes the state of a work item in Plan using a two-step process (movement request + commit)
| Name | Required | Description | Default |
|---|---|---|---|
| dbid | Yes | The dbid field from the workitem to identify it, this is the first field returned for each workitem in the get_work_items tool, or from the create_work_item tool as the dbId field. | |
| application | Yes | Name of the application | |
| targetState | Yes | The target state to transition the work item to (e.g., 'Resolve', 'Close', 'Reopen', etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the important behavioral trait that this uses a 'two-step process (movement request + commit)', hinting at workflow complexity. However, it lacks other critical behavioral details such as whether the operation is idempotent, what happens on invalid state transitions, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the primary action ('Changes the state') and appends the critical behavioral context (two-step process). Every clause earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (3 primitive parameters) and lack of output schema, the description adequately covers the core function. However, for a state transition tool with no annotations, it should ideally clarify whether the tool handles both steps of the mentioned process automatically or if additional user/agent action is required, and reference valid state discovery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, documenting all three parameters (dbid, application, targetState) including cross-references to other tools for the dbid field. The description adds no specific parameter semantics beyond what the schema provides, meeting the baseline expectation for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Changes the state'), the resource ('work item in Plan'), and the specific mechanism ('two-step process'). However, it does not explicitly differentiate from the sibling 'update_work_item' tool, which could also potentially modify work item properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it mentions the internal two-step process, the description provides no guidance on when to use this tool versus 'update_work_item', nor does it mention prerequisite steps like calling 'get_available_states' to validate the targetState parameter (which accepts free-text strings with no enum constraints).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_releaseA
Creates a new release or updates an existing release in Plan. If releaseDbid is provided, updates the release; otherwise creates a new one. If projectID is provided, automatically adds the release to the project (atomic operation).
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application | |
| projectID | Yes | The ID of the project to automatically add this release to | |
| releaseDbid | No | The dbid of the release to update (optional - omit to create new release) | |
| fields | Yes | Array of fields to set/update. For creation, 'Name' is required. When setting Sprints, always use type='REFERENCE_LIST' and provide sprint names, not dbids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses the 'atomic operation' nature of project association and the upsert behavior, but fails to clarify safety aspects (destructive potential of updates) or resolve the confusion around projectID's required status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with zero waste. Information is front-loaded with the primary purpose, followed immediately by conditional logic for the two main parameters (releaseDbid and projectID).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description adequately covers the dual operation modes, the discrepancy regarding projectID's requirement status (description implies optional, schema requires) creates a significant gap. Without an output schema, the description also omits what the tool returns on success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3. The description adds valuable semantics for releaseDbid (explaining it acts as a mode toggle between create/update) but subtracts clarity for projectID by implying it is optional when the schema requires it, resulting in a neutral net score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the dual purpose with specific verbs ('Creates... or updates') and resource ('release in Plan'), distinguishing it from siblings like create_or_update_sprint by explicitly naming the 'release' resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the conditional logic for create vs update modes based on releaseDbid presence. However, it misleadingly implies projectID is optional ('If projectID is provided') when the schema marks it as required, and does not mention when to use this tool versus alternatives like get_releases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_sprintA
Creates a new sprint or updates an existing sprint in Plan. If sprintDbid is provided, updates the sprint; otherwise creates a new one. If projectID is provided, automatically adds the sprint to the project (atomic operation).
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application | |
| sprintDbid | No | The dbid of the sprint to update (optional - omit to create new sprint) | |
| projectID | No | The dbid of the project to automatically add this sprint to (optional but recommended) | |
| name | No | Name of the sprint (required for creation, optional for update) | |
| startDate | No | Start date in YYYY-MM-DD format (optional) | |
| endDate | No | End date in YYYY-MM-DD format (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Adds valuable context about 'atomic operation' for project assignment and the conditional create/update logic. However, missing safety profile (destructive potential), error handling, and whether updates are partial or full replacement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. Front-loaded with primary purpose, followed by conditional logic, then secondary atomic behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter upsert tool with no output schema, the description adequately covers the core functional contract and upsert semantics. Could be improved by describing the return value or success confirmation since no output schema exists, but the behavioral explanation is sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). Description adds crucial semantic context: name is 'required for creation, optional for update', projectID is 'optional but recommended', and sprintDbid presence determines the operation mode. These conditional requirements are not evident from schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (create/update) and resource (sprint in Plan). Clearly distinguishes from read-only sibling get_sprints and from work_item related tools. The upsert pattern is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear conditional logic for when to use update mode (sprintDbid provided) vs create mode (omitted). Explains atomic project association behavior. Lacks explicit comparison to sibling create_or_update_release or warning against using for work items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_itemC
Creates a new work item in Plan
| Name | Required | Description | Default |
|---|---|---|---|
| component | No | An optional component name if any are available in the project, this is not required. | |
| title | Yes | Title of the work item | |
| description | Yes | Description of the work item | |
| workItemType | Yes | Type of the work item from the list of available work item types | |
| application | Yes | Name of the application | |
| projectName | Yes | Name of the project |
TDQS
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 but only states that it 'Creates' a work item. It fails to mention idempotency concerns, what constitutes success, whether the created item ID is returned (critical given no output schema exists), or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of a single efficient sentence with no redundant or wasteful language. However, it is overly terse given the tool's complexity, sacrificing necessary behavioral and usage context for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters and no output schema or annotations, the description is insufficient. It omits critical context such as error handling (e.g., duplicate titles), the relationship between 'application' and 'projectName' parameters, and whether the operation is atomic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, adequately documenting all 6 parameters including optional vs. required status. The description adds no parameter-specific guidance (e.g., valid formats for 'workItemType'), but with complete schema coverage, it meets the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Creates') and resource ('work item') and identifies the target system ('in Plan'). However, it does not explicitly differentiate from similar mutation siblings like 'update_work_item' or distinguish when to create vs. modify existing items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as using 'get_available_workitem_types' or 'get_available_projects' to populate required parameters correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_itemC
Deletes a work item in Plan
| Name | Required | Description | Default |
|---|---|---|---|
| dbid | Yes | The dbid field from the workitem to identify it, this is the first field returned for each workitem in the get_work_items tool. | |
| application | Yes | Name of the application |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. While 'Deletes' implies destruction, it fails to disclose whether deletion is permanent/irreversible, if it cascades to child items, or required permissions. Lacks critical safety context for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (4 words) and front-loaded with the action. Efficient but arguably too terse given the destructive nature and absence of annotations; could accommodate one safety clause without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for a destructive 2-parameter tool with no output schema. Description omits destructive confirmation, success/failure behavior, and whether the operation is recoverable. Schema covers inputs but description fails to cover behavioral outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, documenting both dbid and application thoroughly. Description adds no parameter-specific context, but baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Deletes') and resource ('work item'), though 'in Plan' is slightly ambiguous (product name vs. generic planning). Distinguishes from siblings by action type but doesn't clarify delete vs. update/change-state scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use deletion versus alternatives like update_work_item or change_work_item_state. No mention of prerequisites (e.g., required work item states) or cascading effects on related entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_applicationsB
Retrieves all applications from the Plan system
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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. While 'Retrieves' implies a read-only operation, the description lacks critical details: pagination behavior for large result sets, return format (array vs object), authentication requirements, or rate limiting concerns. It does not compensate for the missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant words. The core action and resource are front-loaded, making it immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters) and lack of output schema, the description provides minimal viable context. However, it omits what the tool returns (e.g., 'returns a list of applications') and whether the result set might be large. For a retrieval tool with no schema coverage burdens, this is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains zero parameters. Per evaluation rules, zero-parameter tools receive a baseline score of 4. The description implicitly confirms no filtering is possible by stating 'all applications', which aligns with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Retrieves), scope (all), and resource (applications) within the Plan system domain. It distinguishes from siblings like get_work_items and get_releases by targeting 'applications' specifically, though it assumes familiarity with what constitutes an 'application' in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus siblings like get_available_projects or get_available_components. Given the similar 'get_available_*' naming patterns in siblings, the description fails to clarify whether applications are user-specific, workspace-scoped, or how they relate to projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_componentsC
Get the list of components for a project in Plan for a given application
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application | |
| projectId | Yes | ID of the project |
TDQS
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. While 'Get' implies a read-only operation, the description does not confirm safety, idempotency, error conditions (e.g., invalid projectId), or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, and efficiently structured without redundant words. However, extreme brevity comes at the cost of omitting necessary behavioral and domain context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is insufficient. It fails to define what 'components' represent in this domain (feature areas? modules?) or how they relate to work items, despite the presence of sibling work-item tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is met. The description implies a hierarchical relationship ('project in Plan for given application') but does not add critical details like ID format, case sensitivity, or whether application names are human-readable or system identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('list of components'), but 'components' lacks domain definition and the description fails to distinguish this from sibling tools like get_available_projects or get_available_states. The phrase 'in Plan' assumes product knowledge without clarification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_work_items), no prerequisites mentioned, and no exclusions provided. The agent must infer usage solely from the parameter requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_projectsB
Get the list of projects in Plan for a given application
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the plan application |
TDQS
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 fails to indicate that this is a read-only operation, does not describe the return format (e.g., array of project names/IDs), and omits error handling behavior (e.g., what happens if the application doesn't exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of 11 words. It is front-loaded with the verb and contains no redundant or wasted text. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (single string parameter, no nested objects) and complete schema coverage, the description is minimally adequate. However, without an output schema, the omission of return value description (e.g., whether it returns IDs, names, or objects) leaves a noticeable gap for an integration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents the 'application' parameter. The description mentions 'for a given application' which aligns with but does not significantly extend the schema definition. This meets the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Get'), resource ('list of projects in Plan'), and scope ('for a given application'). It effectively distinguishes from sibling get_applications by specifying projects are retrieved within a specific application context, though the verb 'Get' is slightly generic compared to 'Retrieve' or 'List'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus siblings like get_applications or get_available_components. While the required 'application' parameter implies a prerequisite workflow step, there is no text describing the sequencing or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_statesA
Gets the state transition matrix for work items in Plan for a given application, showing available transitions/actions
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application |
TDQS
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. It explains what content is returned (transitions/actions matrix) but does not confirm this is read-only, safe, or idempotent, nor does it mention performance characteristics or caching. Adequate but missing safety confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste. Information is front-loaded with the action ('Gets') and key resource ('state transition matrix') immediately stated. Every clause earns its place by clarifying scope or output content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and lack of output schema, the description adequately explains the conceptual return value (matrix of transitions). However, given the absence of annotations, it should ideally confirm the read-only nature of the operation to be complete. Sufficient for a simple lookup tool but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3. The description adds domain context ('Plan', 'work items') that helps situate the 'application' parameter, but does not add syntax details, examples, or constraints beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (state transition matrix for work items) and scope (in Plan for a given application). It distinguishes from sibling 'change_work_item_state' by specifying this retrieves/ shows available transitions rather than performing them. The verb 'Gets' is slightly weak but functional.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for discovering valid state transitions, suggesting use before changing states, but does not explicitly state when to use it relative to 'change_work_item_state' or provide explicit prerequisites. Usage guidance is present but implied rather than prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_workitem_typesC
Get the available workitem types for a project in Plan for a given application
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application | |
| projectId | Yes | ID of the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. While 'Get' implies read-only safety, description doesn't confirm idempotency, error behavior (invalid projectId), caching, or return format. Silent on whether results vary by user permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action verb. No redundant text. Minor grammatical awkwardness ('in Plan' vs 'in the Plan' or 'Plan product') slightly impacts clarity, but generally efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a 2-parameter lookup tool, but gaps remain: no output schema exists yet description doesn't characterize return values (e.g., list of type names/IDs), and without annotations, safety properties are implied rather than stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. Description maps parameters to their functional role ('for a given application', 'for a project') but adds no syntax details, format examples, or validation rules beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Get) and resource (available workitem types) with clear scope (project in Plan for given application). Distinguishes from siblings like get_work_items (instances vs types) and get_available_states/components. Minor ambiguity around 'Plan' (product name vs generic noun) prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this versus alternatives (e.g., when to query types before creating work items with create_work_item). No prerequisites mentioned beyond implicit required parameters. No workflow context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_releasesB
Get the list of releases in Plan for a given application
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose whether this is read-only, what the return format looks like, pagination behavior, or error conditions. The word 'Get' implies read access but provides no concrete behavioral guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero redundancy. Every word earns its place: action (Get), object (list of releases), context (in Plan), and filter (for a given application).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter retrieval tool with complete schema coverage, the description is minimally adequate. However, given the lack of output schema and annotations, it should disclose basic behavioral traits (read-only nature, return structure) to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing a baseline of 3. The description mentions 'for a given application', acknowledging the parameter's purpose, but adds no additional semantic context such as expected format, case sensitivity, or where to obtain valid application names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Get' with clear resource 'releases' and scope 'in Plan for a given application'. It distinguishes the resource from siblings like get_sprints and get_work_items by specifying 'releases', though it doesn't explicitly contrast with create_or_update_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit when-to-use guidance, prerequisites, or alternative selections. It does not mention that get_applications might be needed first to obtain valid application names, nor does it clarify when to query releases versus sprints or work items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sprintsB
Get the list of sprints in Plan for a given application
| Name | Required | Description | Default |
|---|---|---|---|
| application | Yes | Name of the application |
TDQS
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. While 'Get' implies a read-only operation, the description fails to specify error handling (what happens if the application is invalid), whether the results are paginated, or the structure/format of the returned sprint data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of 10 words with the action verb front-loaded. There is no redundant or wasted language; every word contributes to defining the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one required string parameter) and complete schema coverage, the description is minimally adequate. However, since no output schema exists, the description should ideally describe the return format (e.g., 'returns a list of sprint objects') or what constitutes a sprint in this context, which it omits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single 'application' parameter, the schema already documents the input sufficiently. The description adds minimal semantic context by framing it as 'for a given application,' but does not provide examples, validation constraints, or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get the list'), resource ('sprints in Plan'), and scope ('for a given application'). The verb 'Get' implicitly distinguishes this from the sibling 'create_or_update_sprint', though it does not explicitly mention the sibling or clarify whether this retrieves active, closed, or all sprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'get_work_items' or 'get_releases', nor are there prerequisites mentioned (e.g., whether the application must exist or be accessible). The description assumes the user knows what 'Plan' refers to without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_itemsC
Retrieves all work items for a given application, can filter by work item type and specific owner
| Name | Required | Description | Default |
|---|---|---|---|
| applicationName | Yes | Name of the application | |
| projectName | Yes | Name of the project | |
| workitemType | No | Type of the work item to filter by, if any | |
| owner | No | Filter the workitems by owner, if any |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. While 'Retrieves' implies a read-only operation, there is no information about return format, pagination behavior, authentication requirements, or what happens when no items match the filters. The agent gets no behavioral context beyond the basic operation type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and appropriately concise, but the omission of the required 'projectName' parameter suggests it may be too compressed. The information is front-loaded but incomplete regarding the full input requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context. It fails to mention that both application and project are required identifiers (only mentions application), provides no return value documentation, and lacks error condition handling. For a 4-parameter retrieval tool with required scoping parameters, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately met. The description mentions filtering by 'work item type' and 'specific owner' which maps to the schema parameters. However, it completely omits mention of 'projectName' despite it being a required parameter alongside 'applicationName', which is a notable gap even with complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves work items with specific filtering capabilities (by type and owner). It uses a specific verb ('Retrieves') and identifies the resource ('work items'). However, it doesn't explicitly distinguish this from sibling getters like 'get_available_workitem_types' or mention that both application AND project are required scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'get_available_workitem_types' (for metadata) versus actual work items. No mention of prerequisites such as needing valid application/project names from sibling tools first, or when to use filtering versus retrieving all items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_itemA
Updates fields of an existing work item. Provide the fields you want to update with their new values. IMPORTANT: When assigning a Sprint to a work item, the work item MUST first have the corresponding Release assigned to its PlannedRelease field. You cannot assign a sprint to a work item unless that work item is already part of the release that owns the sprint. Always update PlannedRelease before updating Sprint field.
| Name | Required | Description | Default |
|---|---|---|---|
| dbid | Yes | The dbid field from the workitem to identify it | |
| application | Yes | Name of the application | |
| fields | Yes | Array of fields to update. CRITICAL: To assign a Sprint, first ensure PlannedRelease is set to the release that contains that sprint, otherwise the Sprint assignment will fail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Reveals critical business rule about Sprint/PlannedRelease ordering constraint not visible in schema structure. However, missing safety profile (idempotency, reversibility, validation behavior) and error scenarios (what happens if dbid invalid?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Second sentence 'Provide the fields you want to update with their new values' is redundant given schema's 'Array of fields to update' description. The Sprint/PlannedRelease constraint requires four sentences where two would suffice. Well front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Addresses the most critical domain constraint (Sprint/Release ordering) preventing common usage errors. However, for a mutation tool with no annotations and no output schema, omits operational context such as success indicators, partial update behavior, or permission requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage (baseline 3). Description adds crucial semantic context that Sprint values must correspond to the PlannedRelease value, and provides concrete value format examples ('Sprint 1 - Planning & Foundation', 'Release 2') beyond schema's generic 'The new value' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with specific verb 'Updates' and resource 'fields of an existing work item', clearly distinguishing from sibling tools like create_work_item (creates new) and delete_work_item (removes). The scope is precisely defined as field-level updates rather than state transitions (change_work_item_state).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite guidance: 'Always update PlannedRelease before updating Sprint field' and explains the dependency constraint ('you cannot assign a sprint... unless that work item is already part of the release'). Lacks explicit comparison to alternatives (e.g., 'use create_work_item for new items').
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. Dates show when Glama detected each change.
14 tool updates
v0.2.10- First observed
change_work_item_state - First observed
create_or_update_release - First observed
create_or_update_sprint - First observed
create_work_item - First observed
delete_work_item - First observed
get_applications - First observed
get_available_components - First observed
get_available_projects - First observed
get_available_states - First observed
get_available_workitem_types - First observed
get_releases - First observed
get_sprints - First observed
get_work_items - First observed
update_work_item
TDQS
Each tool has a clearly distinct purpose targeting specific resources and actions in the Plan system. For example, create_work_item, update_work_item, and delete_work_item handle different lifecycle stages, while get_available_components, get_available_projects, and get_available_states retrieve distinct metadata types. There is no overlap or ambiguity in functionality.
All tool names follow a consistent verb_noun pattern with snake_case, such as create_work_item, get_applications, and update_work_item. The naming is predictable and uniform across all 14 tools, making it easy for agents to understand and select the correct tool.
With 14 tools, the server is well-scoped for a DevOps Plan domain, covering work items, releases, sprints, applications, and metadata. Each tool serves a specific, necessary function without redundancy, aligning with typical tool counts for such systems (e.g., 3-15 tools).
The tool set provides complete CRUD and lifecycle coverage for work items (create, get, update, delete, state changes), releases and sprints (create/update, get), and essential metadata (applications, projects, components, states, types). There are no obvious gaps; agents can perform all core DevOps planning operations without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Crie épicos, features, histórias e tasks no Azure DevOps a partir de uma conversa.
Create and manage MeisterTask projects, tasks, and notes from your AI assistant.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables LLMs and AI applications to interact with Azure DevOps Work Items, supporting queries, filtering, status updates, date management, effort tracking, descriptions, and comments through natural language.-
- FlicenseNot gradedqualityCmaintenanceProvides 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.172-
- AlicenseBqualityDmaintenanceEnables management of Azure DevOps work items including Epics, Features, User Stories, Tasks, and Bugs through natural language. Supports CRUD operations, WIQL queries, work item relationships, and retrieval of project metadata such as iterations and area paths.451,028MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Azure DevOps APIs for managing projects, work items, repositories, pull requests, and pipelines through natural language.19MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mrchris2000/mcp-devops-plan'
If you have feedback or need assistance with the MCP directory API, please join our Discord server