Skip to main content
Glama

search_work_items

Search for work items in Azure DevOps projects using WIQL queries to filter and retrieve specific tasks, bugs, or issues.

Instructions

Searches for work items using a WIQL (Work Item Query Language) query.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectYesThe name or ID of the project.
wiql_queryYesThe Work Item Query Language (WIQL) query.

Implementation Reference

  • Core implementation of the search_work_items tool: executes WIQL query on Azure DevOps work item tracking client, filters by project if needed, retrieves matching work items, and formats results with id, title, state, and url.
    def search_work_items(self, project, wiql_query):
        # Add project filter to the WIQL query if not already present
        if "[System.TeamProject]" not in wiql_query and "WHERE" in wiql_query.upper():
            # Insert project filter into existing WHERE clause
            wiql_query = wiql_query.replace(" WHERE ", f" WHERE [System.TeamProject] = '{project}' AND ")
        elif "[System.TeamProject]" not in wiql_query:
            # Add WHERE clause with project filter
            wiql_query += f" WHERE [System.TeamProject] = '{project}'"
        
        wiql = Wiql(query=wiql_query)
        # Call query_by_wiql without the project parameter
        query_result = self.work_item_tracking_client.query_by_wiql(wiql)
        
        if query_result.work_items:
            work_item_ids = [item.id for item in query_result.work_items]
            work_items = self.work_item_tracking_client.get_work_items(ids=work_item_ids)
            return [
                {
                    "id": wi.id,
                    "title": wi.fields.get("System.Title"),
                    "state": wi.fields.get("System.State"),
                    "url": wi.url,
                }
                for wi in work_items
            ]
        else:
            return []
  • Registers the search_work_items tool with the MCP server by defining it in the tools list returned by list_tools(), including name, description, and input schema.
    types.Tool(
        name="search_work_items",
        description="Searches for work items using a WIQL (Work Item Query Language) query.",
        inputSchema={
            "type": "object",
            "properties": {
                "project": {
                    "type": "string", 
                    "description": "The name or ID of the project."
                },
                "wiql_query": {
                    "type": "string", 
                    "description": "The Work Item Query Language (WIQL) query."
                },
            },
            "required": ["project", "wiql_query"],
            "additionalProperties": False
        }
    ),
  • Dispatches the search_work_items tool call to the AzureDevOpsClient instance by passing arguments to client.search_work_items() within the _execute_tool method.
    elif name == "search_work_items":
        return self.client.search_work_items(**arguments)
  • Input schema definition for search_work_items tool, specifying required project and wiql_query parameters with types and descriptions.
    "properties": {
        "project": {
            "type": "string", 
            "description": "The name or ID of the project."
        },
        "wiql_query": {
            "type": "string", 
            "description": "The Work Item Query Language (WIQL) query."
        },
    },
    "required": ["project", "wiql_query"],
    "additionalProperties": False

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xrmghost/mcp-azure-devops'

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