YouTrack MCP Server
Read and analyze JetBrains YouTrack issues, activity history, and projects from workflows
The YouTrack MCP server integrates with JetBrains YouTrack for issue tracking. It is read-only: workflows can fetch issues, drill into a single issue's details, walk change history (great for cycle-time analysis), and list projects. It does not create or modify issues.
Setup
- Get a permanent API token from your YouTrack instance:
- Go to your YouTrack profile > Account Security > Tokens > New token.
- Copy the token. Permanent tokens start with
perm:(older YouTrack) orperm-(2024+). A UI session token will not work.
- Go to Settings > MCP Servers > Add Server.
- Select YouTrack.
- Enter the configuration:
| Field | Required | Description |
|---|---|---|
baseUrl | Yes | Your YouTrack instance URL (e.g., https://mycompany.youtrack.cloud) |
apiKey | Yes | Permanent token from step 1 |
- Click Save.
Token and URL gotchas
- Same instance: a token is keyed to the instance that issued it.
A token created on cloud (
*.youtrack.cloud) does not work against a self-hosted server, and vice versa - issue the token on the same instance thebaseUrlpoints to. - Self-hosted path prefix: self-hosted YouTrack often runs under a
path, e.g.
https://your-server/youtrack. Include that path inbaseUrl- omitting it sends requests to the server root and you'll get login-page HTML instead of API responses. - Use HTTPS directly: an HTTP → HTTPS redirect drops the authorization header. Configure the final HTTPS URL.
Tools
get_issues
Fetch issues with an optional search query.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | No | YouTrack search query (e.g., State: Open, project: MYPROJ) |
fields | string | No | Comma-separated fields to return (default: id,idReadable,summary,description,created,resolved,updated) |
limit | number | No | Maximum issues to return (default: 100) |
skip | number | No | Number of issues to skip, for pagination (default: 0) |
Returns an array of issue records. created / resolved / updated
are Unix millisecond timestamps; resolved is null while the issue is
open.
get_issue
Get a single issue by ID with full details, including custom fields (State, Priority, Assignee).
| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Issue ID (e.g., PROJ-123) |
fields | string | No | Comma-separated fields to return (default includes customFields(name,value(name,text))) |
get_issue_activities
Get the activity / change history for one issue - status transitions, field updates - as records sorted oldest to newest.
| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Issue ID (e.g., PROJ-123) |
categories | string | No | Activity categories to filter (e.g., IssueStateCategory,IssueCreatedCategory) |
fields | string | No | Fields to return for activities |
Each record carries timestamp, author, the changed field, and
added / removed values - enough to reconstruct when an issue
entered and left each state.
get_all_activities
Get activities across all issues in one call - useful for bulk cycle-time analysis over a time window.
| Parameter | Type | Required | Description |
|---|---|---|---|
categories | string | No | Activity categories to filter (default: state changes) |
start | number | No | Start timestamp (Unix ms) |
end | number | No | End timestamp (Unix ms) |
limit | number | No | Maximum activities to return (default: 1000) |
Same record shape as get_issue_activities, plus a target object
(id, idReadable, summary) identifying which issue each activity
belongs to.
get_projects
List all accessible projects.
| Parameter | Type | Required | Description |
|---|---|---|---|
fields | string | No | Fields to return (default: id,name,shortName,description) |
Use each project's shortName in query strings (e.g. project: PROJ).
Example Workflow
A weekly engineering digest:
- Trigger - Cron schedule (Monday 9am)
- Action -
youtrack:get_issueswith queryState: Opento pull the open backlog - Action -
youtrack:get_all_activitiesover the past week for state changes - Agent - Compute cycle times, flag issues stuck in one state, summarize what shipped
- Agent - Send the digest to Slack, tools:
slack:send_formatted_report