YouTrack MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@YouTrack MCP Serverfind issues assigned to me in project PROJ"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
YouTrack MCP Server
Also available in Russian: README-ru.md
MCP server for comprehensive YouTrack integration with the following capabilities:
Issue management - create, update, comment, assign, change state, batch operations
Issue starring - mark important issues with stars, batch starring (up to 50), list starred issues
Attachment management - upload files (up to 10), download with signed URLs, delete
Work items tracking - create entries with idempotent operations, batch creation for periods
Detailed time reports - summary reports, deviation analysis, multi-user statistics
Advanced search - find issues by user activity with fast/precise filtering modes
Change history - complete issue activity log with filtering and pagination
Knowledge base - create, update, search articles with hierarchical structure
User and project access - retrieve information about users and projects
Batch operations - efficient processing of up to 50 issues simultaneously
File storage - save large tool results to JSON files instead of returning directly
Additional features - Markdown support, folded sections, holiday configuration, user aliases
Table of Contents
Related MCP server: Jira MCP Server
Requirements
Node.js ≥ 22
Environment variables:
YOUTRACK_URL— base URL of YouTrack instanceYOUTRACK_TOKEN— permanent token with read permissions for issues and work itemsYOUTRACK_TIMEZONE— optional timezone for date operations (default:Europe/Moscow), must be a valid IANA timezone identifier (e.g.,Europe/London,America/New_York,Asia/Tokyo)YOUTRACK_HOLIDAYS— optional comma-separated list of holiday dates (formatYYYY-MM-DD), excluded from reports and batch operations
YOUTRACK_PRE_HOLIDAYS— optional comma-separated list of pre-holiday dates with reduced working hoursYOUTRACK_USER_ALIASES— optional comma-separated list ofalias:loginmappings (e.g.,me:vyt,petya:p.petrov), used for automatic assignee selectionYOUTRACK_DEFAULT_PROJECT— optional project code used for manual verification tasks and default parent issues in docs/examples (usePROJin documentation examples)YOUTRACK_OUTPUT_DIR— optional root directory for files produced bysaveToFileanddownloadToFile. Defaults to the current working directory. Absolute paths and parent-traversal segments (..) are rejected for safetyYOUTRACK_UPLOAD_DIR— optional whitelist root for source files used byissue_attachment_upload. Defaults toYOUTRACK_OUTPUT_DIR. Paths whose realpath escapes this directory (including via symlinks) are rejected to prevent reading arbitrary files (/etc/passwd,~/.ssh/id_rsa, etc.)
Installation
Using npx (Recommended)
You can run the server directly with npx without installation:
YOUTRACK_URL="https://youtrack.example.com" \
YOUTRACK_TOKEN="perm:your-token-here" \
YOUTRACK_DEFAULT_PROJECT="PROJ" \
npx -y @vitalyostanin/youtrack-mcp@latestUsing Claude MCP CLI
Install using Claude MCP CLI:
claude mcp add --scope user \
--env YOUTRACK_URL='https://youtrack.example.com' \
--env YOUTRACK_TOKEN='perm:my-token' \
youtrack-mcp -- npx -y @vitalyostanin/youtrack-mcp@latestScope Options:
--scope user: Install for current user (all projects)--scope project: Install for current project only
Removal:
claude mcp remove youtrack-mcp --scope userManual Installation (Development)
npm install
npm run buildDevelopment & Release
GitHub Actions Workflows
This project uses GitHub Actions for continuous integration and automated releases:
CI Workflow (.github/workflows/ci.yml)
Runs automatically on every push and pull request:
Triggers: All branches, all pull requests
Node.js versions: 22.x, 24.x (matrix testing)
Steps:
Install dependencies (
npm ci)Run linter (
npm run lint)Build project (
npm run build)Verify build artifacts (executable check)
Publish Workflow (.github/workflows/publish.yml)
Runs automatically when you create a new version tag:
Trigger: Git tags matching
v*pattern (e.g.,v0.1.0,v1.2.3)Node.js version: 24.x
Steps:
Install dependencies
Build project
Publish to npm registry
Create GitHub Release
Setting up NPM_TOKEN
To enable automatic publishing to npm, you need to configure the NPM_TOKEN secret:
Generate npm Access Token:
Go to npmjs.com and log in
Navigate to Access Tokens in your account settings
Click Generate New Token → Classic Token
Select Automation type (for CI/CD)
Copy the generated token
Add Secret to GitHub:
Go to your GitHub repository
Navigate to Settings → Secrets and variables → Actions
Click New repository secret
Name:
NPM_TOKENValue: Paste your npm token
Click Add secret
Release Process
To create a new release:
# 1. Update version in package.json and create git tag
npm version patch # for 0.1.0 → 0.1.1
# or
npm version minor # for 0.1.0 → 0.2.0
# or
npm version major # for 0.1.0 → 1.0.0
# 2. Push the tag to GitHub
git push --follow-tags
# 3. GitHub Actions will automatically:
# - Run tests and build
# - Publish to npm
# - Create GitHub ReleaseNote: The npm version command automatically:
Updates
package.jsonandpackage-lock.jsonCreates a git commit with message like "0.1.1"
Creates a git tag like "v0.1.1"
Manual Build & Test
# Install dependencies
npm install
# Build the project
npm run build
# Run linter
npm run lint
# Watch mode for development
npm run dev:watchProject Structure
src/
index.ts MCP server entry point (stdio transport)
server.ts MCP server bootstrap, tool registration
config.ts YOUTRACK_* environment variable parsing
constants.ts HTTP timeouts, body limits, PRE_HOLIDAY_RATIO
types.ts Shared TypeScript interfaces and YouTrack entity discriminators
youtrack-client.ts YouTrack REST client with caching and pagination helpers
tools/ MCP tool registrations (one file per domain: issues, articles, ...)
utils/ Reusable helpers (date, file-storage, mappers, validators, tool-args, ...)
__tests__/ Vitest tests against a nock-mocked HTTP layer
docs/
reviews/ Project-check review reports
.github/
workflows/ CI and publish workflows
dependabot.yml Weekly npm + github-actions update PRs
dist/ Build output (generated by `npm run build`, gitignored)The authoritative agent-oriented project layout lives in AGENTS.md.
Running the server (stdio)
YOUTRACK_URL="https://youtrack.example.com" \
YOUTRACK_TOKEN="perm:example-token" \
node dist/index.jsConfiguration for Code (Recommended)
Add to ~/.code/config.toml:
[mcp_servers.youtrack-mcp]
command = "npx"
args = ["-y", "@vitalyostanin/youtrack-mcp@latest"]
[mcp_servers.youtrack-mcp.env]
YOUTRACK_URL = "https://youtrack.example.com"
YOUTRACK_TOKEN = "perm:your-token-here"Configuration for Claude Code CLI
To use this MCP server with Claude Code CLI, you can:
Use Claude MCP CLI - see Installation section above
Manual configuration - add to your
~/.claude.jsonfile:
{
"mcpServers": {
"youtrack-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@vitalyostanin/youtrack-mcp@latest"],
"env": {
"YOUTRACK_URL": "https://youtrack.example.com",
"YOUTRACK_TOKEN": "perm:your-token-here"
}
}
}
}Note: This configuration uses npx to run the published package. For local development, use "command": "node" with "args": ["/absolute/path/to/youtrack-mcp/dist/index.js"]. The YOUTRACK_TIMEZONE, YOUTRACK_HOLIDAYS, YOUTRACK_PRE_HOLIDAYS, and YOUTRACK_USER_ALIASES environment variables are optional.
Configuration for VS Code Cline
To use this MCP server with Cline extension in VS Code:
Open VS Code with Cline extension installed
Click the MCP Servers icon in Cline's top navigation
Select the "Configure" tab and click "Configure MCP Servers"
Add the following configuration to
cline_mcp_settings.json:
{
"mcpServers": {
"youtrack-mcp": {
"command": "npx",
"args": ["-y", "@vitalyostanin/youtrack-mcp@latest"],
"env": {
"YOUTRACK_URL": "https://youtrack.example.com",
"YOUTRACK_TOKEN": "perm:your-token-here"
}
}
}
}Note: This configuration uses npx to run the published package. For local development, use "command": "node" with "args": ["/absolute/path/to/youtrack-mcp/dist/index.js"]. The YOUTRACK_TIMEZONE, YOUTRACK_HOLIDAYS, YOUTRACK_PRE_HOLIDAYS, and YOUTRACK_USER_ALIASES environment variables are optional.
MCP Tools
File Storage Parameters
Many tools support optional file storage parameters for handling large datasets:
saveToFile— boolean, saves results to a JSON file instead of returning directly (useful for large datasets)filePath— string, custom file path relative toYOUTRACK_OUTPUT_DIR(optional, auto-generated if not provided, directory created if needed)format— string, output format when saving to file:jsonl(JSON Lines) orjson(JSON array format). Default isjsonloverwrite— boolean, allow overwriting existing files when using explicit filePath. Default isfalse
When saveToFile is true, tools return metadata about the saved file instead of the full data. All paths are resolved against YOUTRACK_OUTPUT_DIR; absolute paths and .. traversal segments are rejected.
Pagination
Most read tools accept limit (default 100, max 200) and skip (default 0); both are forwarded to YouTrack as $top/$skip. Tools that return aggregated counts use returned (count of items in the current page) rather than total. Use successive skip values to walk through large result sets.
Destructive Operation Confirmation
Tools that delete data require an explicit confirmation: true literal in their input:
issue_attachment_deleteissue_link_deleteworkitem_delete
Service
Tool | Description | Main Parameters |
| Check YouTrack availability and current user | — |
Issues
Tool | Description | Main Parameters |
| Get information about YouTrack issue. Note: Returns predefined fields including timestamps (created, updated) and basic info - id, idReadable, summary, description, wikifiedDescription, usesMarkdown, created, updated, project (id, shortName, name), parent (id, idReadable), assignee (id, login, name), reporter (id, login, name), updater (id, login, name). By default, custom fields are not included. Use briefOutput=false to get all customFields including State. |
|
| Get information about multiple YouTrack issues (batch mode, max 50). Note: Returns predefined fields including timestamps (created, updated) and basic info - id, idReadable, summary, description, wikifiedDescription, usesMarkdown, created, updated, project (id, shortName, name), parent (id, idReadable), assignee (id, login, name), reporter (id, login, name), updater (id, login, name). By default, custom fields are not included. Use briefOutput=false to get all customFields including State. |
|
| Issue details with brief/full modes |
|
| Detailed information about multiple issues (batch mode, max 50). Brief (default): predefined fields only. Full ( |
|
| Issue comments with server-side pagination |
|
| Comments for multiple issues (batch mode, max 50) |
|
| Create issue |
|
| Update existing issue |
|
| Assign issue to user |
|
| Add comment to issue |
|
| Update existing comment |
|
| Get issue change history |
|
| Change issue state/status through workflow transitions |
|
| Get list of attachments |
|
| Get attachment info |
|
| Get download URL for attachment or download file directly to local filesystem |
|
| Upload files to issue |
|
| Delete attachment (requires |
|
Issue Links
Tool | Description | Main Parameters |
| List links for an issue with server-side pagination. Returns link id, direction, linkType, and counterpart issue brief |
|
| List available link types (cached single-flight) | — |
| Create a link between two issues |
|
| Delete a link by id for a specific issue (requires |
|
Issues Status
Tool | Description | Main Parameters |
| Get status of a YouTrack issue. Returns the State of the issue. |
|
| Get status of multiple YouTrack issues (batch mode, max 50). Returns the State of each issue. |
|
Issue Stars
Tool | Description | Main Parameters |
| Add star to issue for current user |
|
| Remove star from issue for current user |
|
| Add stars to multiple issues (batch mode, max 50) |
|
| Remove stars from multiple issues (batch mode, max 50) |
|
| Get all starred issues for current user | Optionally |
Work Items
Tool | Description | Main Parameters |
| Get work items for current or specified user with server-side pagination | Optionally |
| Get work items for all users with server-side pagination | Optionally |
| Get work items for selected users with per-user pagination |
|
| Get recent work items sorted by update time (newest first) | Optionally |
| Create work item entry |
|
| Create work item without duplicates (by description and date) |
|
| Update work item (recreate) |
|
| Delete work item (requires |
|
| Batch create for date range |
|
| Summary report for work items | Common parameters: |
| Days with deviation from expected hours | Same parameters as summary; |
| Work items report for list of users |
|
| Report structure (compatibility with older clients) | Optionally |
Users and Projects
Tool | Description | Main Parameters |
| List all YouTrack users with server-side pagination |
|
| Get user by login |
|
| Get current authenticated user | — |
| List all YouTrack projects (auto-paginated by default; pass | Optional |
| Get project by short name |
|
Articles
Tool | Description | Main Parameters |
| Get article by ID |
|
| List articles with filters and server-side pagination | Optionally |
| Create article in knowledge base |
|
| Update article |
|
| Search articles in knowledge base |
|
| Full-text search across YouTrack knowledge base articles by title and content. Returns |
|
| Full-text search across YouTrack issues by summary, description, and comments. If |
|
Search
Tool | Description | Main Parameters |
| Full-text search across YouTrack knowledge base articles by title and content. Returns |
|
| Full-text search across YouTrack issues by summary, description, and comments. If |
|
Activity Feed
Tool | Description | Main Parameters |
| Author-centric activity feed backed by |
|
| List issues across projects with filtering and sorting | Filters: |
| Count issues using same filters as | Same filters as above, optional |
Important Notes
Destructive Operations
Some operations cannot be undone and require an explicit confirmation: true literal in their input:
issue_attachment_delete— deleted attachments cannot be recovered.issue_link_delete— re-fetchissue_linksafterwards to verify the relationship was removed.workitem_delete— work item entries are permanently lost; re-fetchworkitems_listto confirm. issue_create parameters:parentIssueId— resolves againstYOUTRACK_DEFAULT_PROJECTwhen no project prefix is provided (e.g.,123→BC-123if default project isBC).links[]— optional array describing additional links to create after the issue is saved. Each item supports:linkType— name or id of the link type (e.g.,Subtask,Relates).targetId— issue id or readable id. Plain numbers are resolved with the default project, matchingresolveIssueIdbehaviour.direction— optional ("outbound"by default). Use"inbound"to flip direction for non-symmetric link types.sourceId— optional. When omitted, the new issue is treated as the source. Specify to create links from an existing issue to the new one (useful for complex chains).
After creation the tool automatically refreshes the issue and attempts to reopen link caches; always re-fetch links with
issue_linksto confirm the final state.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/VitalyOstanin/youtrack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server