MCP server exposing Azure DevOps code search functionality through standard output
Four tools with complete schemas and descriptions. Tool names follow verb_noun pattern (ado_search_code, ado_get_file_content, ado_get_search_status, ado_detect_context). All have descriptions (avg 150 chars) and input schemas with Zod validation. However, output schemas are undocumented, responses return JSON text blobs without declared field structure. Error handling returns generic error messages without recovery guidance. Parameters lack constraints (e.g., 'top' accepts any number despite claiming max 1000). No pagination support despite search potentially returning large result sets.
Detect Azure DevOps organization, project, repository, and branch from the git repository at the given working directory. Parses the ADO remote URL and current branch so callers don't need to supply these values manually.
Retrieve the content of a file from an Azure DevOps Git repository. Use repository IDs and paths from search results.
Get the search-index status for a repository, showing which branches are indexed and when they were last processed.
Search for code across Azure DevOps repositories. Supports ADO search filters: ext:, file:, path:, repo:, proj:, class:, method:, def:, ref:, comment:, namespace:, type:, etc.
Output schemas undocumented. All tools return JSON text in a generic 'text' field without declaring the structure of returned objects (e.g., search results contain 'count', 'results' array with 'fileName', 'path', 'repository', etc., but this is not formally documented for LLM planning).
No pagination support. ado_search_code accepts 'top' parameter (default 25, max 1000) but does not return a next_cursor, total_count, or offset for continuation. Large result sets will be truncated silently, and agents cannot iterate through all results.
Error messages lack recovery guidance. All tools return generic 'Error: {message}' without actionable next steps. E.g., 'Error: Repository not found' should suggest 'Try ado_detect_context() to find valid repositories' or list available options.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter constraints not enforced. 'top' parameter claims max 1000 in description but Zod schema uses .number() without max() constraint. LLMs may pass invalid values (negative, >1000) without validation feedback.
Missing dependency hints. ado_get_file_content requires repositoryId (GUID), but LLMs may not know how to obtain it. Description should state 'Call ado_search_code first to get repositoryId from results.'