itsalfredakku/youtrack-mcp
If you are the rightful owner of youtrack-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The YouTrack MCP Server provides seamless integration with AI agents for efficient project management and issue tracking through YouTrack's REST API.
Enterpriseβgrade MCP server for JetBrains YouTrack giving AI assistants (Claude, VSCode MCP extensions, Continue.dev, Cline, Zed, custom connectors) safe, tool-based access to issues, sprints, dependencies (Gantt + critical path), time tracking and knowledge base content.
Table of Contents
- Quick Start
- Highlights
- Environment & Configuration
- MCP Client Integration
- Usage Examples
- Analytics (Gantt & Critical Path)
- Tool Catalog Summary
- Architecture
- Development
- Troubleshooting
- Security & Permissions
- Roadmap
- Contributing
- License
Quick Start
git clone https://github.com/itsalfredakku/youtrack-mcp.git
cd youtrack-mcp
npm install
cp .env.example .env # set YOUTRACK_URL + YOUTRACK_TOKEN
npm run build
npm start # stdio MCP server
Remote (SSE) for hosted usage / ChatGPT custom connector:
npm run start:remote # http://localhost:3001/mcp/sse
Health check:
curl http://localhost:3001/health
Highlights
Domain | Capabilities |
---|---|
Issues | CRUD, comments, transitions, dependency links, estimation |
Agile | Sprint create/manage, issue assignment, progress metrics |
Knowledge Base | Article create/update/search, tagging, linkage |
Projects | Discovery, metadata, field summaries |
Analytics | Gantt generation, dependency routing, critical path |
Time Tracking | Log work, time summaries, reporting hooks |
Performance | TTL caching, structured logging, graceful fallbacks |
Reliability | Consistent response envelope & error normalization |
Environment & Configuration
Minimal .env
:
YOUTRACK_URL=https://your-instance.youtrack.cloud
YOUTRACK_TOKEN=your-permanent-token
PROJECT_ID=PROJECT-1
LOG_LEVEL=info
CACHE_ENABLED=true
CACHE_TTL=300000
ENABLE_WEBHOOKS=false
WEBHOOK_PORT=3000
WEBHOOK_SECRET=
Variable | Required | Description | Default |
---|---|---|---|
YOUTRACK_URL | β | Base URL (no trailing slash) | β |
YOUTRACK_TOKEN | β | Permanent token (Profile β Tokens) | β |
PROJECT_ID | β | Default project shortName | β |
LOG_LEVEL | β | error/warn/info/debug | info |
CACHE_ENABLED | β | Enable inβmemory cache | true |
CACHE_TTL | β | Cache TTL ms | 300000 |
ENABLE_WEBHOOKS | β | Start webhook listener | false |
WEBHOOK_PORT | β | Webhook port | 3000 |
WEBHOOK_SECRET | β | HMAC secret | β |
MCP Client Integration
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"youtrack": {
"command": "node",
"args": ["/abs/path/youtrack-mcp/dist/index.js"],
"env": {
"YOUTRACK_URL": "https://your-instance.youtrack.cloud",
"YOUTRACK_TOKEN": "token",
"PROJECT_ID": "PRJ" // Optional
}
}
}
}
VSCode (.vscode/settings.json
):
{
"servers": {
"youtrack": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"YOUTRACK_URL": "https://your-instance.youtrack.cloud",
"YOUTRACK_TOKEN": "token",
}
}
}
}
Continue.dev (continue.json
):
{
"mcp": {
"servers": [
{
"name": "youtrack",
"command": "node",
"args": ["/abs/youtrack-mcp/dist/index.js"],
"env": {
"YOUTRACK_URL": "https://your-instance.youtrack.cloud",
"YOUTRACK_TOKEN": "token"
}
}
]
}
}
Cline / Generic:
{
"mcpServers": {
"youtrack": {
"command": "node",
"args": ["/abs/youtrack-mcp/dist/index.js"],
"env": {
"YOUTRACK_URL": "https://your-instance.youtrack.cloud",
"YOUTRACK_TOKEN": "token"
}
}
}
}
Zed:
{
"context_servers": {
"youtrack": {
"command": "node",
"args": ["/abs/youtrack-mcp/dist/index.js"],
"env": {
"YOUTRACK_URL": "https://your-instance.youtrack.cloud",
"YOUTRACK_TOKEN": "token"
}
}
}
}
Local test:
YOUTRACK_URL=https://your-instance.youtrack.cloud \
YOUTRACK_TOKEN=token \
node dist/index.js
Pitfalls: absolute path, no trailing slash, full token copy, JSON env values are strings.
Tool Catalog Summary
Category | Examples |
---|---|
Issues | create_issue , update_issue , add_issue_comment , search_issues |
State | start_working_on_issue , change_issue_state , complete_issue |
Agile | create_sprint , list_sprints , assign_issue_to_sprint |
Knowledge | create_article , update_article , search_articles |
Projects | list_projects , get_project_details |
Analytics | generate_gantt_chart , get_critical_path , create_issue_dependency |
Time | log_work_item , get_time_report |
Architecture
Clients (Claude / VSCode / Continue / Zed)
β MCP (stdio or SSE)
ββββββββββΌβββββββββ
β Orchestrator β registry, routing, validation
ββββββββββ¬βββββββββ
β domain calls
ββββββββββΌβββββββββ
β Domain Clients β issues / projects / agile / kb / analytics / time
ββββββββββ¬βββββββββ
β REST
ββββββββββΌβββββββββ
β YouTrack API β
βββββββββββββββββββ
Traits: strong typing, graceful degradation, normalized errors, pluggable caching/logging.
Development
npm install
npm run dev # watch
npm run lint # eslint
npm run type-check # types
npm test # tests
npm run build # dist output
Structure: src/index.ts
(entry), src/api/domains
(domain clients), src/tools.ts
(tool registry), src/utils
, src/logger.ts
.
Troubleshooting
Symptom | Cause | Fix |
---|---|---|
401 Unauthorized | Missing scope / expired token | Regenerate token with required permissions |
Project not found | Hidden / archived / wrong ID | Use internal ID or verify access |
Empty analytics | No issues in project | Seed baseline issues |
SSE disconnects | Proxy idle timeout | Enable keep-alive / tune LB |
Checklist: absolute path, no trailing slash, full token, JSON env strings. Use LOG_LEVEL=debug
for deep inspection.
Security & Permissions
Recommended token capabilities: Issues (R/W), Projects (Read), Knowledge Base (R/W), Agile/Sprints (R/W), Time Tracking (if applicable). Store tokens as environment secrets; never commit.
Contributing
- Fork & branch (
feature/x
) - Implement + tests
npm run lint && npm run type-check
- Open PR with rationale
License
MIT Β© 2025
Acknowledgements
JetBrains YouTrack β’ MCP community β’ TypeScript ecosystem
Feedback / ideas? Open an issue or discussion.