YouTrack
STDIOMCP server for YouTrack integration providing issue tracking, agile management, and knowledge base features
MCP server for YouTrack integration providing issue tracking, agile management, and knowledge base features
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.
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
| Domain | Capabilities | 
|---|---|
| Dynamic Configuration | 🆕 Auto-loads custom field values (State, Priority, Type) from YOUR YouTrack instance on startup - no more hardcoded examples! | 
| Issues | CRUD, comments, transitions, dependency links, estimation, count queries | 
| Issue History | 🆕 Activity tracking, audit trail, change history with filtering | 
| Bulk Operations | 🆕 Apply commands to multiple issues, silent execution, auto-completion | 
| Search Enhancement | 🆕 Query auto-completion, context-aware suggestions | 
| Saved Queries | 🆕 Create, manage, and share saved searches | 
| 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 | 
| API Coverage | 🆕 ~80% of YouTrack REST API (12 of 15 domain areas) | 
The MCP server now automatically adapts to your YouTrack customization! On startup, it:
No more errors from AI assistants suggesting "state: Open" when your instance uses "state: In Progress"!
See Dynamic Configuration Documentation for details.
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 | — | 
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", } } } }
Github Coding Agent:
"mcpServers": { "youtrack": { "type": "sse", "url": "https://your-instance.youtrack.cloud/mcp/sse", "headers": { "Authorization": "Bearer <your-token>" }, "tools": [ "issues", "projects", "users" ] } }
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.
17 MCP Tools covering 12 domain areas:
| Category | Tools & Key Actions | 
|---|---|
| Issues | issues - create, update, comment, search, query, count, state transitions | 
| Issue History 🆕 | activities - global/issue activity tracking, audit trail, paginated history | 
| Bulk Operations 🆕 | commands - apply commands to multiple issues, get suggestions, silent execution | 
| Search 🆕 | search_assist - query auto-completion, context-aware suggestions | 
| Saved Searches 🆕 | saved_queries - create, list, update, delete saved queries | 
| Agile Boards | agile_boards - list boards/sprints, assign issues, track progress | 
| Knowledge Base | knowledge_base - create/update articles, search, manage hierarchy | 
| Projects | projects - list, get details, validate access, custom fields | 
| Users & Groups | users - list/search users, groups, team management | 
| Time Tracking | time_tracking - log work, get entries, reports | 
| Analytics | analytics - Gantt charts, critical path, resource allocation | 
| Custom Fields | custom_fields - manage fields, bundles, project fields | 
| Comments | comments - add, update, delete issue comments | 
| Subscriptions | subscriptions - manage notification preferences | 
| Auth | auth - OAuth2 status, login, token validation | 
See Tool Reference for complete documentation.
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.
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.
| 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.
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.
feature/x)npm run lint && npm run type-checkMIT © 2025
JetBrains YouTrack • MCP community • TypeScript ecosystem
Feedback / ideas? Open an issue or discussion.