youtrack-mcp

itsalfredakku/youtrack-mcp

3.5

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.

Tools
5
Resources
0
Prompts
0

YouTrack MCP Server

CI License: MIT TypeScript MCP

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

  1. Quick Start
  2. Highlights
  3. Environment & Configuration
  4. MCP Client Integration
  5. Usage Examples
  6. Analytics (Gantt & Critical Path)
  7. Tool Catalog Summary
  8. Architecture
  9. Development
  10. Troubleshooting
  11. Security & Permissions
  12. Roadmap
  13. Contributing
  14. 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

DomainCapabilities
IssuesCRUD, comments, transitions, dependency links, estimation
AgileSprint create/manage, issue assignment, progress metrics
Knowledge BaseArticle create/update/search, tagging, linkage
ProjectsDiscovery, metadata, field summaries
AnalyticsGantt generation, dependency routing, critical path
Time TrackingLog work, time summaries, reporting hooks
PerformanceTTL caching, structured logging, graceful fallbacks
ReliabilityConsistent 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=
VariableRequiredDescriptionDefault
YOUTRACK_URLβœ…Base URL (no trailing slash)β€”
YOUTRACK_TOKENβœ…Permanent token (Profile β†’ Tokens)β€”
PROJECT_IDβ€”Default project shortNameβ€”
LOG_LEVELβ€”error/warn/info/debuginfo
CACHE_ENABLEDβ€”Enable in‑memory cachetrue
CACHE_TTLβ€”Cache TTL ms300000
ENABLE_WEBHOOKSβ€”Start webhook listenerfalse
WEBHOOK_PORTβ€”Webhook port3000
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

CategoryExamples
Issuescreate_issue, update_issue, add_issue_comment, search_issues
Statestart_working_on_issue, change_issue_state, complete_issue
Agilecreate_sprint, list_sprints, assign_issue_to_sprint
Knowledgecreate_article, update_article, search_articles
Projectslist_projects, get_project_details
Analyticsgenerate_gantt_chart, get_critical_path, create_issue_dependency
Timelog_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

SymptomCauseFix
401 UnauthorizedMissing scope / expired tokenRegenerate token with required permissions
Project not foundHidden / archived / wrong IDUse internal ID or verify access
Empty analyticsNo issues in projectSeed baseline issues
SSE disconnectsProxy idle timeoutEnable 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

  1. Fork & branch (feature/x)
  2. Implement + tests
  3. npm run lint && npm run type-check
  4. Open PR with rationale

License

MIT Β© 2025

Acknowledgements

JetBrains YouTrack β€’ MCP community β€’ TypeScript ecosystem

Feedback / ideas? Open an issue or discussion.