mcpField
J
JetBrains Youtrack

JetBrains Youtrack

Local
github.com/tonyzorinDeveloper Tools99Updated 9w ago

About JetBrains Youtrack

YouTrack MCP is an open-source MCP server that runs locally and connects to YouTrack Cloud or Server through the REST API. It is for users who manage issues from clients such as Cursor or Claude Desktop, including self-hosted servers older than 2025.3.

Key features

  1. 01Search, create and update issues and comments
  2. 02Connects to YouTrack Cloud or self-hosted Server
  3. 03Stdio and streamable HTTP transports
  4. 04Allowlist and denylist for tool exposure
  5. 05Project, attachment, user and article tools

Use cases

  1. 01Querying and updating issues from Cursor or Claude Desktop
  2. 02Using MCP with self-hosted YouTrack before 2025.3
  3. 03Restricting an agent to read-only tools

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"youtrack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"YOUTRACK_URL",
"-e",
"YOUTRACK_API_TOKEN",
"youtrack-mcp"
],
"env": {
"YOUTRACK_URL": "<YOUTRACK_URL>",
"YOUTRACK_API_TOKEN": "<YOUTRACK_API_TOKEN>"
}
}
}
}
Run commanddocker run -i --rm -e YOUTRACK_URL -e YOUTRACK_API_TOKEN youtrack-mcp
Environment variables to set
YOUTRACK_URL
YOUTRACK_API_TOKENSecret

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
ociyoutrack-mcp

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

YouTrack MCP

CI npm License: MIT

Open-source Model Context Protocol server for JetBrains YouTrack. You run it locally (Docker, npx, or Python). It talks to YouTrack Cloud or Server over the REST API so Cursor, Claude Desktop, and other MCP clients can search, create, and update issues.

This server shipped in April 2025, about six months before JetBrains added a Remote MCP to YouTrack 2025.3 (October 2025). It is not a fork of the official server.

Why this still exists

JetBrains’ official MCP is built into YouTrack 2025.3+ (Cloud and Server) at https://<your-instance>/mcp. New MCP features from JetBrains (OAuth, time tracking, tags, drafts, custom YouTrack apps) live there. Use that if you are on 2025.3 or newer and want the vendor path.

This project is a process you run. It calls the YouTrack REST API — the same API that existed before /mcp. That is why it still works on self-hosted Server that has not upgraded to 2025.3. There is no published minimum YouTrack version; if your instance can issue a permanent token and serve /api/issues, this server can talk to it. Article tools need a YouTrack that has the knowledge base.

This MCPOfficial (2025.3+)
HistoryApril 2025, before official existedShipped in YouTrack 2025.3 (Oct 2025)
Where it runsYour machine (stdio / Docker)Inside YouTrack (/mcp)
YouTrack versionsREST API (including Server before 2025.3)2025.3 and newer
Cursor / Claude DesktopNative stdioRemote HTTP, or npx mcp-remote
Field updatesSimple strings: update_issue_state("DEMO-123", "In Progress")Fetch field schema, then update_issue
Stick with this forOlder Server, local stdio, attachments, project admin, tool allow/deny listsNew JetBrains MCP features, OAuth, n8n/Zapier /mcp URL

Quick start

You need a YouTrack URL and a permanent API token.

Cursor / Claude Desktop (Docker)
{
  "mcpServers": {
    "youtrack": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "YOUTRACK_URL=https://your-instance.youtrack.cloud",
        "-e", "YOUTRACK_API_TOKEN=perm-xxx.your-token",
        "tonyzorin/youtrack-mcp:latest"
      ]
    }
  }
}

Same image on GHCR: ghcr.io/tonyzorin/youtrack-mcp:latest.

-i is required for stdio (without it the container exits immediately). Docker does not see Cursor/Claude env — pass YouTrack vars with -e in args. To limit tools, add another -e line, for example ENABLED_TOOLS=get_issue,search_issues,create_issue,add_comment.

npx (no Docker)
{
  "mcpServers": {
    "youtrack": {
      "command": "npx",
      "args": ["-y", "youtrack-mcp-tonyzorin"],
      "env": {
        "YOUTRACK_URL": "https://your-instance.youtrack.cloud",
        "YOUTRACK_API_TOKEN": "perm-xxx.your-token"
      }
    }
  }
}

Requires Node.js 18+ and Python 3.14+. Also published as @tonyzorin/youtrack-mcp on GitHub Packages.

Docker from a terminal
docker run --rm -i \
  -e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
  -e YOUTRACK_API_TOKEN="perm-xxx.your-token" \
  tonyzorin/youtrack-mcp:latest

Tag latest is the current stable release (2.0.0). Pin tonyzorin/youtrack-mcp:2.0.0 if you want a frozen image. WIP and PR tags exist for testing; do not use them in production.

Docker Compose (HTTP)

Compose does not attach a client to stdin, so stdio exits after startup. Use streamable HTTP and publish the port:

services:
  youtrack-mcp:
    image: tonyzorin/youtrack-mcp:latest
    ports:
      - "8000:8000"
    environment:
      YOUTRACK_URL: https://your-instance.youtrack.cloud
      YOUTRACK_API_TOKEN: perm-xxx.your-token
      TRANSPORT: streamable-http
      ENABLED_TOOLS: get_issue,search_issues,get_projects

Point Cursor / Claude Code at http://localhost:8000/mcp.

Remote HTTP from a terminal:

docker run --rm -p 8000:8000 \
  -e YOUTRACK_URL="https://your-instance.youtrack.cloud" \
  -e YOUTRACK_API_TOKEN="perm-xxx.your-token" \
  tonyzorin/youtrack-mcp:latest \
  --transport streamable-http --host 0.0.0.0 --port 8000

What you can do

Pass simple strings for state, priority, assignee, type, and estimation. Nested { "name": "In Progress" } objects fail.

search_issues("project: DEMO #Unresolved")
get_issue("DEMO-123")
create_issue(project="DEMO", summary="Login fails on special characters", custom_fields={"Assignee": "admin", "Type": "Bug"})

update_issue_state("DEMO-123", "In Progress")
update_issue_priority("DEMO-123", "Critical")
update_issue_assignee("DEMO-123", "admin")
update_issue_type("DEMO-123", "Bug")
update_issue_estimation("DEMO-123", "4h")

add_comment("DEMO-123", "Reproduced on staging")
add_dependency("DEMO-123", "DEMO-124")

Issues: search, get, create, update, comments, links (relates / depends / duplicates).

Custom fields: dedicated helpers above, plus update_custom_fields, batch updates, schema and allowed-value lookup.

Attachments: list via get_issue_raw, download as base64 (get_attachment_content), delete.

Projects: list/get, create/update, custom-field schemas, subsystems, versions, builds.

Users: current user, lookup, permissions.

Articles: get, search, create, update, comments.

Diagnostics: diagnose_workflow_restrictions, get_help.

Configuration

VariableRequiredDescription
YOUTRACK_URLyesYouTrack base URL (Cloud or Server)
YOUTRACK_API_TOKENyesPermanent token
YOUTRACK_VERIFY_SSLnoSSL verification, default true
DISABLED_TOOLSnoComma-separated tools to hide (denylist)
ENABLED_TOOLSnoComma-separated tools to keep; hides all others (allowlist)

Allowlist wins if both are set. Names are case-insensitive; hyphens and underscores are equivalent.

# Hide write tools
export DISABLED_TOOLS="create_issue,update_issue,delete_attachment"

# Read-only subset
export ENABLED_TOOLS="get_issue,search_issues,get_projects"

Self-signed Server: YOUTRACK_VERIFY_SSL=false.

Development

Support

MIT. See LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.