A Model Context Protocol (MCP) server implementation for JetBrains YouTrack, allowing AI assistants to interact with YouTrack issue tracking system.
A Model Context Protocol (MCP) server that provides access to YouTrack functionality.
# ✅ PROVEN WORKING FORMAT - Use simple strings
update_issue_state("DEMO-123", "In Progress")
update_issue_state("PROJECT-456", "Fixed")
update_issue_state("TASK-789", "Closed")
# ❌ DON'T USE - Complex objects fail
# update_custom_fields(issue_id, {"State": {"name": "In Progress"}}) # FAILS
# update_custom_fields(issue_id, {"State": {"id": "154-2"}}) # FAILS
# ✅ PROVEN WORKING FORMAT - Use simple strings
update_issue_priority("DEMO-123", "Critical")
update_issue_priority("PROJECT-456", "Major")
update_issue_priority("TASK-789", "Normal")
# ❌ DON'T USE - Complex objects fail
# update_custom_fields(issue_id, {"Priority": {"name": "Critical"}}) # FAILS
# update_custom_fields(issue_id, {"Priority": {"id": "152-1"}}) # FAILS
# ✅ PROVEN WORKING FORMAT - Use login names
update_issue_assignee("DEMO-123", "admin")
update_issue_assignee("PROJECT-456", "john.doe")
update_issue_assignee("TASK-789", "jane.smith")
# ❌ DON'T USE - Complex objects fail
# update_custom_fields(issue_id, {"Assignee": {"login": "admin"}}) # FAILS
# ✅ PROVEN WORKING FORMAT - Use simple strings
update_issue_type("DEMO-123", "Bug")
update_issue_type("PROJECT-456", "Feature")
update_issue_type("TASK-789", "Task")
# ❌ DON'T USE - Complex objects fail
# update_custom_fields(issue_id, {"Type": {"name": "Bug"}}) # FAILS
# ✅ PROVEN WORKING FORMAT - Use simple time strings
update_issue_estimation("DEMO-123", "4h") # 4 hours
update_issue_estimation("PROJECT-456", "2d") # 2 days
update_issue_estimation("TASK-789", "30m") # 30 minutes
update_issue_estimation("TASK-790", "1w") # 1 week
update_issue_estimation("TASK-791", "3d 5h") # 3 days 5 hours
# ❌ DON'T USE - ISO duration or complex formats fail
# update_custom_fields(issue_id, {"Estimation": "PT4H"}) # FAILS
# 🎯 Complete Triage Workflow
update_issue_type("DEMO-123", "Bug") # Classify as bug
update_issue_priority("DEMO-123", "Critical") # Set priority
update_issue_assignee("DEMO-123", "admin") # Assign to admin
update_issue_estimation("DEMO-123", "4h") # Estimate 4 hours
update_issue_state("DEMO-123", "In Progress") # Start work
add_comment("DEMO-123", "Critical bug triaged and assigned")
# 🚀 Feature Development Workflow
update_issue_type("PROJ-456", "Feature") # Classify as feature
update_issue_priority("PROJ-456", "Normal") # Standard priority
update_issue_assignee("PROJ-456", "jane.doe") # Assign to developer
update_issue_estimation("PROJ-456", "2d") # Estimate 2 days
add_comment("PROJ-456", "Feature ready for development")
# ✅ Task Completion Workflow
update_issue_state("TASK-789", "Fixed") # Mark as fixed
add_comment("TASK-789", "Implementation completed and tested")
# 📊 Quick Updates (Most Common)
update_issue_state("DEMO-123", "In Progress") # Start work
update_issue_priority("DEMO-123", "Critical") # Escalate
update_issue_assignee("DEMO-123", "admin") # Reassign
update_issue_type("DEMO-123", "Bug") # Reclassify
update_issue_estimation("DEMO-123", "6h") # Re-estimate
# ✅ Working formats for different field types:
# Priority (enum field)
update_custom_fields("DEMO-123", {"Priority": "Critical"})
# Assignee (user field)
update_custom_fields("DEMO-123", {"Assignee": "admin"})
# Estimation (period field)
update_custom_fields("DEMO-123", {"Estimation": "4h"})
# Type (enum field)
update_custom_fields("DEMO-123", {"Type": "Bug"})
# Multiple fields at once
update_custom_fields("DEMO-123", {
"Priority": "Critical",
"Assignee": "admin",
"Type": "Bug"
})
# Search by text
search_issues("bug in login")
# Search by project
get_project_issues("DEMO")
# Get specific issue
get_issue("DEMO-123")
create_issue(
project_id="DEMO",
summary="Bug in login system",
description="Users cannot log in with special characters"
)
# Create dependency
add_dependency("DEMO-123", "DEMO-124")
# Create relates link
add_relates_link("DEMO-123", "DEMO-125")
add_comment("DEMO-123", "Fixed the login bug")
get_issue_comments("DEMO-123")
This project provides a Model Context Protocol (MCP) server for YouTrack, enabling seamless integration with Claude Desktop and other MCP clients.
Choose from multiple registries:
# Use the latest stable release
docker run --rm \
-e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
-e YOUTRACK_API_TOKEN="your-token" \
tonyzorin/youtrack-mcp:latest
# Or use the latest development build
docker run --rm \
-e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
-e YOUTRACK_API_TOKEN="your-token" \
tonyzorin/youtrack-mcp:1.1.2_wip
# Use the latest stable release
docker run --rm \
-e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
-e YOUTRACK_API_TOKEN="your-token" \
ghcr.io/tonyzorin/youtrack-mcp:latest
# Or use the latest development build
docker run --rm \
-e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
-e YOUTRACK_API_TOKEN="your-token" \
ghcr.io/tonyzorin/youtrack-mcp:1.1.2_wip
Both registries provide identical tags:
latest
- Latest stable release (currently 1.1.2)1.1.2
- Specific version tags1.1.2_wip
- Work-in-progress builds from main branchpr-<number>
- Pull request builds for testingNote: Images are now published to both Docker Hub and GitHub Container Registry simultaneously.
Choose from multiple registries:
# Install globally
npm install -g youtrack-mcp-tonyzorin
# Or use with npx (no installation required)
npx youtrack-mcp-tonyzorin
# Configure GitHub registry
npm config set @tonyzorin:registry https://npm.pkg.github.com
# Install globally
npm install -g @tonyzorin/youtrack-mcp
# Or use with npx
npx @tonyzorin/youtrack-mcp
This project maintains high code quality with comprehensive testing:
For development instructions, see the Automation Scripts Guide and Release Process.
YOUTRACK_URL
: Your YouTrack instance URLYOUTRACK_API_TOKEN
: Your YouTrack API tokenYOUTRACK_VERIFY_SSL
: SSL verification (default: true)export YOUTRACK_URL="https://prodcamp.youtrack.cloud/"
export YOUTRACK_API_TOKEN="perm-YWRtaW4=.NDMtMg==.JgbpvnDbEu7RSWwAJT6Ab3iXgQyPwu"
export YOUTRACK_VERIFY_SSL="true"
For issues and questions:
Latest update: Comprehensive custom fields management with 567 test coverage and clean project organization.
🎉 MAJOR FEATURE - Custom Fields Management Support
automations/
directory