by tonyzorin
Provides access to YouTrack functionality via Model Context Protocol, enabling issue creation, updates, searches, custom field handling, and attachment processing.
YouTrack MCP offers a server that bridges client applications (e.g., Claude Desktop) with YouTrack through a simple API. It supports the full YouTrack REST API, exposing operations such as creating issues, updating state, priority, assignee, type, estimation, managing custom fields, linking issues, and handling comments and attachments.
YOUTRACK_URL
, YOUTRACK_API_TOKEN
, optional YOUTRACK_VERIFY_SSL
).npx
for a quick local server launch.Q: Which environment variables are required?
A: YOUTRACK_URL
(instance URL) and YOUTRACK_API_TOKEN
(API token). YOUTRACK_VERIFY_SSL
is optional and defaults to true
.
Q: How do I update an issue’s state?
A: Call update_issue_state("PROJECT-123", "In Progress")
– use plain strings for the state name.
Q: Can I set custom fields with complex objects?
A: No. Use simple string values (e.g., {"Priority": "Critical"}
) as demonstrated in the README.
Q: What Docker tags should I use?
A: latest
for the stable release, 1.1.2
for a specific version, 1.1.2_wip
for the latest development build, or pr-<number>
for PR previews.
Q: How do I run the server without installing globally?
A: Use npx youtrack-mcp-tonyzorin
which fetches and executes the package on‑the‑fly.
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/
directoryPlease log in to share your review and rating for this MCP.
{ "mcpServers": { "youtrack-mcp": { "command": "npx", "args": [ "-y", "youtrack-mcp-tonyzorin" ], "env": { "YOUTRACK_URL": "<YOUR_YOUTRACK_URL>", "YOUTRACK_API_TOKEN": "<YOUR_API_TOKEN>", "YOUTRACK_VERIFY_SSL": "true" } } } }
Explore related MCPs that share similar capabilities and solve comparable challenges
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.