MCP server for YouTrack issue tracking system integration
YouTrack MCP has 24 well-named tools with consistent verb_noun patterns (activity_list, issue_get, comment_create, etc.). All tools have descriptions (avg ~100 chars, within baseline 34-392 range). Input schemas are present and properly typed using mark3labs/mcp-go's fluent API. However, output schemas are NOT documented, the code returns JSON via toolJSON() but never specifies what fields clients should expect. Parameter descriptions are adequate but lack format constraints (e.g., 'timestamp (ms)' should specify ISO 8601 or epoch range). Error handling returns toolErr() but does not guide recovery or categorize errors as retryable/user-fixable. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Missing pagination guidance in list tool descriptions.
List YouTrack activities (global change log). Filter by categories, issue query, or time range.
List YouTrack agile boards.
Create a YouTrack knowledge base article.
Delete a YouTrack knowledge base article.
Get a YouTrack knowledge base article by ID.
List YouTrack knowledge base articles.
Update a YouTrack knowledge base article.
Output schemas not documented. Code returns JSON via toolJSON() but never specifies what fields, types, or structure clients should expect. LLMs cannot plan downstream tool calls or extract required IDs without knowing response structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared in metadata (READ_ONLY, WRITE, DESTRUCTIVE). Agents cannot distinguish safe-to-retry tools from destructive ones without explicit hints.
Error handling returns toolErr() with error message but does not categorize errors (retryable vs user-fixable vs fatal) or provide recovery guidance. LLMs receive raw errors with no actionable next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Add a comment to a YouTrack issue.
Delete a comment from a YouTrack issue.
List comments on a YouTrack issue.
Update a comment on a YouTrack issue.
List activities (change history) for a specific YouTrack issue.
Add a tag to a YouTrack issue.
Create a new YouTrack issue. Use issue_custom_fields on an existing issue in the same project to discover field names and $type values. Custom fields must include $type discriminator, e.g. [{"$type":"SingleEnumIssueCustomField","name":"Type","value":{"name":"Task"}}]. Common $types: SingleEnumIssueCustomField, StateIssueCustomField, MultiVersionIssueCustomField, SingleUserIssueCustomField, PeriodIssueCustomField, SimpleIssueCustomField, DateIssueCustomField, TextIssueCustomField.
Get custom field values for a YouTrack issue.
Delete a YouTrack issue.
Get a single YouTrack issue by readable ID (e.g. 'DEMO-123').
Get links for a YouTrack issue (related, blocks, duplicates, etc.).
Remove a tag from a YouTrack issue.
Search YouTrack issues using query syntax (e.g. 'project: DEMO State: Open').
Update an existing YouTrack issue.
Update a custom field value on a YouTrack issue. The value format depends on field type: for enum/state fields use {"name":"value"}, for simple fields use the direct value.
Get details of a specific sprint including its issues.
List sprints for a YouTrack agile board.
Pagination parameters (skip, top) present in list tools but descriptions lack guidance on limits, defaults, or total count. issue_create requires custom_fields with $type discriminators but does not document valid $type values or provide discovery tool.
Parameter descriptions lack format constraints. 'start' and 'end' timestamps say '(ms)' but do not specify if epoch milliseconds or ISO 8601. 'project_id' says 'e.g. 0-2' but no regex or length bounds. LLMs cannot validate inputs without explicit constraints.