Yandex Tracker
Interaja com as APIs do Yandex Tracker para gerenciamento e busca de issues.
Documentação
Yandex Tracker MCP Server
mcp-name: io.github.aikts/yandex-tracker-mcp
Um servidor abrangente do Model Context Protocol (MCP) que permite que assistentes de IA interajam com as APIs do Yandex Tracker. Este servidor fornece acesso seguro e autenticado a issues, filas, comentários, registros de trabalho e funcionalidade de busca do Yandex Tracker, com cache Redis opcional para melhor desempenho.
Documentação em russo está disponível aqui / Документация на русском языке доступна здесь.
Recursos
- Gerenciamento completo de filas: Liste e acesse todas as filas disponíveis do Yandex Tracker com suporte a paginação, recuperação de tags e metadados detalhados
- Gerenciamento de usuários: Recupere informações de contas de usuário, incluindo detalhes de login, endereços de e-mail, status de licença e dados organizacionais
- Ciclo de vida completo de issues: Crie, leia, atualize e gerencie issues com suporte a campos personalizados, anexos e transições de fluxo de trabalho
- Gerenciamento de fluxo de trabalho de status: Execute transições de status, feche issues com resoluções e navegue por fluxos de trabalho complexos
- Gerenciamento de campos: Acesse campos globais, campos locais específicos de fila, status, tipos de issue, prioridades e resoluções
- Linguagem de consulta avançada: Suporte completo à Linguagem de Consulta do Yandex Tracker com filtragem complexa, ordenação e funções de data
- Cache de desempenho: Camada de cache Redis opcional para melhorar os tempos de resposta
- Controles de segurança: Restrições de acesso a filas configuráveis e tratamento seguro de tokens
- Múltiplas opções de transporte: Suporte para transportes stdio, SSE (obsoleto) e HTTP para integração flexível
- Autenticação OAuth 2.0: Autenticação dinâmica baseada em token com suporte a renovação automática como alternativa aos tokens de API estáticos
- Suporte a organizações: Compatível com IDs de organização padrão e de nuvem
Configuração do ID da Organização
Escolha uma das opções abaixo com base no tipo da sua organização Yandex:
- Organização Yandex Cloud: Use a variável de ambiente
TRACKER_CLOUD_ORG_IDposteriormente para organizações gerenciadas pelo Yandex Cloud - Organização Yandex 360: Use a variável de ambiente
TRACKER_ORG_IDposteriormente para organizações Yandex 360
Você pode encontrar o ID da sua organização na URL do Yandex Tracker ou nas configurações da organização.
Configuração do Cliente MCP
Instalando a extensão no Claude Desktop
O Yandex Tracker MCP Server pode ser instalado com um clique no Claude Desktop como uma extensão.
Instalação
- Baixe o arquivo
*.mcpbdos GitHub Releases. - Clique duas vezes no arquivo baixado para instalá-lo no Claude Desktop.

- Forneça seu token OAuth do Yandex Tracker quando solicitado.

- Certifique-se de que a extensão esteja habilitada - agora você pode usar este MCP Server.
Instalação manual
Pré-requisitos
- uv instalado globalmente
- Token de API válido do Yandex Tracker com as permissões apropriadas
As seções a seguir mostram como configurar o MCP server para diferentes clientes de IA. Você pode usar uvx yandex-tracker-mcp@latest ou a imagem Docker ghcr.io/aikts/yandex-tracker-mcp:latest. Ambos exigem estas variáveis de ambiente:
- Autenticação (uma das seguintes):
TRACKER_TOKEN- Seu token OAuth do Yandex TrackerTRACKER_IAM_TOKEN- Seu token IAMTRACKER_SA_KEY_ID,TRACKER_SA_SERVICE_ACCOUNT_ID,TRACKER_SA_PRIVATE_KEY- Credenciais de conta de serviço
TRACKER_CLOUD_ORG_IDouTRACKER_ORG_ID- O ID da sua organização Yandex Cloud (ou Yandex 360)
Claude Desktop
Caminho do arquivo de configuração:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Usando uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Usando Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Claude Code
Usando uvx:
claude mcp add yandex-tracker uvx yandex-tracker-mcp@latest \
-e TRACKER_TOKEN=your_tracker_token_here \
-e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here \
-e TRACKER_ORG_ID=your_org_id_here \
-e TRANSPORT=stdio
Usando Docker:
claude mcp add yandex-tracker docker "run --rm -i -e TRACKER_TOKEN=your_tracker_token_here -e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here -e TRACKER_ORG_ID=your_org_id_here -e TRANSPORT=stdio ghcr.io/aikts/yandex-tracker-mcp:latest"
Cursor
Caminho do arquivo de configuração:
- Específico do projeto:
.cursor/mcp.jsonno diretório do seu projeto - Global:
~/.cursor/mcp.json
Usando uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Usando Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Windsurf
Caminho do arquivo de configuração:
~/.codeium/windsurf/mcp_config.json
Acesso via: Windsurf Settings → Cascade tab → Model Context Protocol (MCP) Servers → "View raw config"
Usando uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Usando Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Zed
Caminho do arquivo de configuração:
~/.config/zed/settings.json
Acesso via: Cmd+, (macOS) ou Ctrl+, (Linux/Windows) ou paleta de comandos: "zed: open settings"
Nota: Requer a versão Zed Preview para suporte a MCP.
Usando uvx:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}
Usando Docker:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}
GitHub Copilot (VS Code)
Caminho do arquivo de configuração:
- Workspace:
.vscode/mcp.jsonno diretório do seu projeto - Global: VS Code
settings.json
Opção 1: Configuração do Workspace (Recomendado para segurança)
Crie .vscode/mcp.json:
Usando uvx:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}
Usando Docker:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}
Opção 2: Configuração Global
Adicione ao VS Code settings.json:
Usando uvx:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Usando Docker:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Outros Clientes Compatíveis com MCP
Para outros clientes compatíveis com MCP, use o formato padrão de configuração do servidor MCP:
Usando uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Usando Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Notas importantes:
- Substitua os valores de exemplo pelas suas credenciais reais
- Reinicie seu cliente de IA após alterações de configuração
- Certifique-se de que
uvxesteja instalado e disponível no PATH do seu sistema - Para uso em produção, considere usar variáveis de ambiente em vez de codificar tokens
Ferramentas MCP Disponíveis
O servidor expõe as seguintes ferramentas através do protocolo MCP:
Gerenciamento de Filas
-
queues_get_all: Liste todas as filas disponíveis do Yandex Tracker- Parâmetros:
fields(opcional): Campos a incluir na resposta (ex.: ["key", "name"]). Ajuda a otimizar o uso da janela de contexto selecionando apenas os campos necessários. Se não for especificado, retorna todos os campos disponíveis.page(opcional): Número da página a retornar. Se não for especificado, recupera todas as páginas automaticamente.per_page(opcional): Número de itens por página (padrão: 100)
- Retorna informações de filas paginadas com inclusão seletiva de campos
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
queue_get_tags: Obtenha todas as tags de uma fila específica- Parâmetros:
queue_id(string, chave da fila como "SOMEPROJECT") - Retorna a lista de tags disponíveis na fila especificada
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
queue_get_versions: Obtenha todas as versões de uma fila específica- Parâmetros:
queue_id(string, chave da fila como "SOMEPROJECT") - Retorna a lista de versões disponíveis na fila especificada com detalhes como nome, descrição, datas e status
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
queue_create_version: Crie uma nova versão em uma fila específica- Parâmetros:
queue_id(string, obrigatório): Chave da fila como "SOMEPROJECT"name(string, obrigatório): Nome da versãodescription(string, opcional): Descrição da versãostart_date(data, opcional): Data de início da versão no formatoYYYY-MM-DDdue_date(data, opcional): Data de vencimento da versão no formatoYYYY-MM-DD
- Retorna a versão criada com detalhes como nome, descrição, datas e status
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
queue_get_fields: Obtenha campos de uma fila específica- Parâmetros:
queue_id(string, obrigatório): Chave da fila como "SOMEPROJECT"include_local_fields(booleano, opcional, padrão: true): Se deve incluir campos locais específicos da fila
- Retorna a lista de campos globais e opcionalmente campos locais (específicos da fila)
- Faz requisições paralelas para buscar ambos os tipos de campos quando
include_local_fieldsé true - A propriedade
schema.requiredindica se um campo é obrigatório - Use isso para encontrar campos disponíveis e obrigatórios antes de criar uma issue com a ferramenta
issue_create - Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
queue_get_metadata: Obtenha metadados detalhados sobre uma fila específica- Parâmetros:
queue_id(string, obrigatório): Chave da fila como "SOMEPROJECT"expand(array de strings, opcional): Campos a expandir na resposta. Opções disponíveis:all,projects,components,versions,types,team,workflows,fields,issueTypesConfig
- Retorna informações da fila incluindo nome, descrição, tipo/prioridade padrão e opcionalmente dados expandidos
- Use
expand: ["issueTypesConfig"]para obter resoluções disponíveis para cada tipo de issue (necessário para a ferramentaissue_close) - Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
Gerenciamento de Usuários
-
users_get_all: Obtenha informações sobre contas de usuário registradas na organização- Parâmetros:
per_page(opcional): Número de usuários por página (padrão: 50)page(opcional): Número da página a retornar (padrão: 1)
- Retorna lista paginada de usuários com login, e-mail, status de licença e detalhes organizacionais
- Inclui metadados do usuário como status externo, status de desligamento e preferências de notificação
- Parâmetros:
-
user_get: Obtenha informações sobre um usuário específico por login ou UID- Parâmetros:
user_id(string, login do usuário como "john.doe" ou UID como "12345") - Retorna informações detalhadas do usuário incluindo login, e-mail, status de licença e detalhes organizacionais
- Suporta tanto nomes de login quanto IDs numéricos de usuário para identificação flexível
- Parâmetros:
-
user_get_current: Obtenha informações sobre o usuário autenticado atual- Nenhum parâmetro necessário
- Retorna informações detalhadas sobre o usuário associado ao token de autenticação atual
- Inclui login, e-mail, nome de exibição e detalhes organizacionais do usuário autenticado
-
users_search: Pesquise usuário por login, e-mail ou nome real (primeiro nome, sobrenome ou ambos)- Parâmetros:
login_or_email_or_name(string, login, e-mail ou nome real do usuário a pesquisar) - Retorna um único usuário ou vários usuários se vários corresponderem à consulta, ou uma lista vazia se nenhum usuário corresponder
- Usa correspondência difusa para nomes reais com um limite de similaridade de 80%
- Prioriza correspondências exatas para login e e-mail em vez de correspondências difusas de nome
- Parâmetros:
Gerenciamento de Campos
get_global_fields: Obtenha todos os campos globais disponíveis no Yandex Tracker- Retorna a lista completa de campos globais que podem ser usados em issues
- Inclui esquema de campo, informações de tipo e configuração
Gerenciamento de Status e Tipos
-
get_statuses: Obtenha todos os status de issue disponíveis- Retorna a lista completa de status de issue que podem ser atribuídos
- Inclui IDs de status, nomes e informações de tipo
-
get_issue_types: Obtenha todos os tipos de issue disponíveis- Retorna a lista completa de tipos de issue para criar/atualizar issues
- Inclui IDs de tipos, nomes e detalhes de configuração
-
get_priorities: Obter todas as prioridades de problemas disponíveis- Retorna a lista completa de prioridades que podem ser atribuídas a problemas
- Inclui chaves de prioridade, nomes e informações de ordem
-
get_resolutions: Obter todas as resoluções de problemas disponíveis- Retorna a lista completa de resoluções que podem ser usadas ao fechar problemas
- Inclui chaves de resolução, nomes, descrições e informações de ordem
Operações de Problemas
-
issue_get: Recuperar informações detalhadas do problema por ID- Parâmetros:
issue_id(string, formato: "QUEUE-123")include_description(booleano, opcional, padrão: true): Se deve incluir a descrição do problema no resultado. Pode ser grande, então use apenas quando necessário.
- Retorna dados completos do problema, incluindo status, responsável, descrição, etc.
- Parâmetros:
-
issue_get_url: Gerar URL web para um problema- Parâmetros:
issue_id(string) - Retorna:
https://tracker.yandex.ru/{issue_id}
- Parâmetros:
-
issue_get_comments: Buscar todos os comentários de um problema- Parâmetros:
issue_id(string) - Retorna lista cronológica de comentários com metadados
- Parâmetros:
-
issue_add_comment: Adicionar um comentário a um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")text(string, obrigatório): Texto do comentário (markdown suportado pelo Tracker)summonees(array de strings, opcional): Usuários para mencionar (logins ou IDs). Esta é a forma da API de mencionar/chamar usuários (as notificações são acionadas por este campo, não por@loginno texto).maillist_summonees(array de strings, opcional): Listas de e-mail para mencionar (emails)markup_type(string, opcional): Usemdpara YFM (markdown)is_add_to_followers(booleano, opcional, padrão: true): Adicionar autor do comentário aos seguidores
- Retorna o objeto de comentário criado
- Parâmetros:
-
issue_update_comment: Atualizar um comentário existente em um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")comment_id(int, obrigatório): ID do comentáriotext(string, obrigatório): Novo texto do comentário (markdown suportado pelo Tracker)summonees(array de strings, opcional): Usuários para mencionar (logins ou IDs)maillist_summonees(array de strings, opcional): Listas de e-mail para mencionar (emails)markup_type(string, opcional): Usemdpara YFM (markdown)
- Retorna o objeto de comentário atualizado
- Parâmetros:
-
issue_delete_comment: Excluir um comentário de um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")comment_id(int, obrigatório): ID do comentário
- Retorna:
null(sucesso)
- Parâmetros:
-
issue_add_link: Criar um vínculo entre um problema e outro problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): O problema atualrelationship(string, obrigatório): Tipo de vínculo descrevendo comoissue_idse relaciona com o problema vinculado. Um de:relates,is dependent by,depends on,is subtask for,is parent task for,duplicates,is duplicated by,is epic of,has epicissue(string, obrigatório): ID ou chave do problema para vincular (ex.: "TEST-123")
- Retorna o objeto de vínculo criado
- Parâmetros:
-
issue_delete_link: Excluir um vínculo entre um problema e outro problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")link_id(int, obrigatório): ID do vínculo (conforme retornado porissue_get_links)
- Retorna:
null(sucesso)
- Parâmetros:
-
issue_get_links: Obter vínculos de problemas relacionados- Parâmetros:
issue_id(string) - Retorna vínculos para problemas relacionados, bloqueados ou duplicados
- Parâmetros:
-
issue_get_worklogs: Recuperar registros de trabalho (worklog)- Parâmetros:
issue_ids(array de strings) - Retorna dados de controle de tempo para os problemas especificados
- Parâmetros:
-
issue_add_worklog: Adicionar um registro de trabalho (registrar tempo gasto) a um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")duration(string, obrigatório): Duração ISO-8601 (ex.:PT1H30M)comment(string, opcional): Comentário do registro de trabalhostart(datetime, opcional): Data/hora de início do trabalho (UTC assumido se o fuso horário não for fornecido)
- Retorna o registro de trabalho criado
- Parâmetros:
-
issue_update_worklog: Atualizar um registro de trabalho (registro de tempo gasto) em um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")worklog_id(int, obrigatório): ID do registro de trabalhoduration(string, opcional): Duração ISO-8601 (ex.:PT1H30M)comment(string, opcional): Comentário do registro de trabalhostart(datetime, opcional): Data/hora de início do trabalho (UTC assumido se o fuso horário não for fornecido)
- Retorna o registro de trabalho atualizado
- Parâmetros:
-
issue_delete_worklog: Excluir um registro de trabalho (registro de tempo gasto) de um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123")worklog_id(int, obrigatório): ID do registro de trabalho
- Retorna:
null(sucesso)
- Parâmetros:
-
issue_get_attachments: Obter anexos de um problema- Parâmetros:
issue_id(string, formato: "QUEUE-123") - Retorna lista de anexos com metadados para o problema especificado
- Parâmetros:
-
issue_get_checklist: Obter itens de checklist de um problema- Parâmetros:
issue_id(string, formato: "QUEUE-123") - Retorna lista de itens de checklist incluindo texto, status, responsável e informações de prazo
- Parâmetros:
-
issue_get_transitions: Obter transições de status possíveis para um problema- Parâmetros:
issue_id(string, formato: "QUEUE-123") - Retorna lista de transições disponíveis que podem ser executadas no problema
- Cada transição inclui um ID, nome de exibição e informações do status de destino
- Parâmetros:
-
issue_get_changelog: Obter o histórico de alterações (changelog) de um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): A chave do problemaper_page(inteiro, opcional, padrão: 50): Número de entradas por páginacursor(string, opcional): O valornext_cursorretornado pela chamada anterior; passe-o para buscar a próxima página (paginação por cursor)field(string, opcional): Filtrar o changelog por uma chave de campo (ex.:status)type(string, opcional): Filtrar por tipo de alteração (ex.:IssueWorkflowpara transições de status)
- Retorna um objeto com
entries(transições de status e edições de campos — incluindo quem alterou o quêfrom→toe quando — além de alterações de comentários e gatilhos executados) enext_cursor(passe-o de volta comocursorpara a próxima página;nullquando não houver mais páginas)
- Parâmetros:
-
issue_execute_transition: Executar uma transição de status para um problema- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): A chave do problematransition_id(string, obrigatório): O ID da transição a ser executada. IMPORTANTE: Deve ser um dos IDs retornados pela ferramentaissue_get_transitionscomment(string, opcional): Comentário opcional para adicionar ao executar a transiçãofields(objeto, opcional): Dicionário de campos adicionais para definir durante a transição. Campos comuns incluemresolution(ex.: 'fixed', 'wontFix') para fechar problemas,assigneepara reatribuir, etc.
- Retorna lista de transições disponíveis para o novo status após a transição ser executada
- Nota de uso: Você DEVE primeiro chamar
issue_get_transitionspara recuperar as transições disponíveis e depois passar um dos IDs de transição retornados. NÃO use IDs de transição arbitrários.
- Parâmetros:
-
issue_close: Fechar um problema com uma resolução (ferramenta de conveniência)- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): A chave do problemaresolution_id(string, obrigatório): O ID da resolução a ser definida ao fechar (ex.: 'fixed', 'wontFix', 'duplicate')comment(string, opcional): Comentário opcional para adicionar ao fechar o problema
- Encontra automaticamente uma transição para um status 'done' e a executa com a resolução especificada
- Retorna lista de transições disponíveis para o novo status (fechado)
- Nota de uso: Antes de fechar, você DEVE:
- Chamar
issue_getpara recuperar o campotypedo problema - Chamar
get_queue_metadatacomexpand: ["issueTypesConfig"]para obter as resoluções disponíveis - Escolher uma resolução da entrada
issueTypesConfigcorrespondente ao tipo do problema - cada tipo de problema tem seu próprio conjunto de resoluções válidas
- Chamar
- Parâmetros:
-
issue_create: Criar um novo problema em uma fila- Parâmetros:
queue(string, obrigatório): Chave da fila onde criar o problema (ex.: 'MYQUEUE')summary(string, obrigatório): Título/resumo do problematype(int, opcional): ID do tipo de problema (da ferramentaget_issue_types)description(string, opcional): Descrição do problemaassignee(string ou int, opcional): Login ou UID do responsávelpriority(string, opcional): Chave de prioridade (da ferramentaget_priorities)fields(objeto, opcional): Campos adicionais para definir durante a criação do problema. IMPORTANTE: Antes de criar um problema, você DEVE chamarqueue_get_fieldspara obter os campos disponíveis (ele retorna campos globais e locais por padrão). Campos comschema.required=truesão obrigatórios. Use a propriedadeiddo campo como chave neste mapa (ex.:{"fieldId": "value"})
- Retorna o objeto de problema recém-criado com todos os campos padrão do problema
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
issue_update: Atualizar um problema existente- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): A chave do problema a ser atualizadosummary(string, opcional): Novo título/resumo do problemadescription(string, opcional): Nova descrição do problemamarkup_type(string, opcional): Tipo de marcação para o texto da descrição (use 'md' para marcação YFM)parent(IssueUpdateParent, opcional): Referência do problema pai comid(string) e/oukey(string, ex.: 'QUEUE-123')sprint(array de IssueUpdateSprint, opcional): Atribuições de sprint - array de objetos com campoid(int)type(IssueUpdateType, opcional): Tipo de problema comid(string) e/oukey(string, ex.: 'bug', 'task')priority(IssueUpdatePriority, opcional): Prioridade comid(string) e/oukey(string, ex.: 'critical', 'normal')followers(array de IssueUpdateFollower, opcional): Seguidores - array de objetos comid(string, ID de usuário ou login)project(IssueUpdateProject, opcional): Projeto comprimary(int, shortId do projeto principal) esecondaryopcional (array de ints)tags(array de strings, opcional): Tags do problemaversion(int, opcional): Versão do problema para bloqueio otimista - alterações feitas apenas na versão atualfields(objeto, opcional): Campos adicionais para atualizar. Usequeue_get_fieldspara descobrir os campos disponíveis.
- Retorna o objeto de problema atualizado com todos os campos padrão do problema
- Apenas os campos fornecidos são atualizados; campos omitidos permanecem inalterados
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
-
issue_move: Mover uma issue para uma fila diferente- Parâmetros:
issue_id(string, obrigatório, formato: "QUEUE-123"): A chave da issue a ser movidaqueue(string, obrigatório): Chave da fila de destino (ex.: 'MYQUEUE')notify(booleano, opcional, padrãotrue): Notificar usuários mencionados nos campos da issuenotify_author(booleano, opcional, padrãofalse): Notificar o autor da issuemove_all_fields(booleano, opcional, padrãofalse): Transferir versões, componentes e projetos quando houver correspondências na fila de destino; caso contrário, eles são limposinitial_status(booleano, opcional, padrãofalse): Redefinir o status da issue para o valor inicial (use quando a fila de destino tiver um fluxo de trabalho diferente)
- Retorna o objeto da issue atualizado com sua nova chave na fila de destino (ex.:
TASKS-1→NEWQUEUE-42) - Quando o cliente MCP suporta elicitação, o usuário é solicitado a confirmar os flags booleanos antes da movimentação; recusar ou cancelar aborta a movimentação. Clientes sem suporte a elicitação prosseguem com os valores informados
- Respeita as restrições de
TRACKER_LIMIT_QUEUES
- Parâmetros:
Pesquisa e Descoberta
-
issues_find: Pesquisar issues usando Yandex Tracker Query Language- Parâmetros:
query(obrigatório): String de consulta usando a sintaxe do Yandex Tracker Query Languageinclude_description(booleano, opcional, padrão: false): Se deve incluir a descrição da issue no resultado. Pode ser grande, então use apenas quando necessário.fields(lista de strings, opcional): Campos a incluir na resposta. Ajuda a otimizar o uso da janela de contexto selecionando apenas os campos necessários. Se não especificado, retorna todos os campos disponíveis.page(opcional): Número da página para paginação (padrão: 1)per_page(opcional): Número de itens por página (padrão: 100). Pode ser reduzido se os resultados excederem a janela de contexto.
- Retorna até o número especificado de issues por página
- Parâmetros:
-
issues_count: Contar issues que correspondem a uma consulta usando Yandex Tracker Query Language- Parâmetros:
query(obrigatório): String de consulta usando a sintaxe do Yandex Tracker Query Language
- Retorna o total de issues que correspondem aos critérios especificados
- Suporta todos os recursos da linguagem de consulta: filtros de campo, funções de data, operadores lógicos e expressões complexas
- Útil para análises, relatórios e compreensão da distribuição de issues sem recuperar dados completos das issues
- Parâmetros:
Transporte http
O servidor MCP também pode ser executado no modo streamable-http para integrações baseadas na web ou quando o transporte stdio não é adequado.
Variáveis de Ambiente do Modo streamable-http
# Required - Set transport to streamable-http mode
TRANSPORT=streamable-http
# Server Configuration
HOST=0.0.0.0 # Default: 0.0.0.0 (all interfaces)
PORT=8000 # Default: 8000
Iniciando o Servidor streamable-http
# Basic streamable-http server startup
TRANSPORT=streamable-http uvx yandex-tracker-mcp@latest
# With custom host and port
TRANSPORT=streamable-http \
HOST=localhost \
PORT=9000 \
uvx yandex-tracker-mcp@latest
# With all environment variables
TRANSPORT=streamable-http \
HOST=0.0.0.0 \
PORT=8000 \
TRACKER_TOKEN=your_token \
TRACKER_CLOUD_ORG_ID=your_org_id \
uvx yandex-tracker-mcp@latest
Você pode pular a configuração de TRACKER_CLOUD_ORG_ID ou TRACKER_ORG_ID se estiver usando o seguinte formato ao conectar ao Servidor MCP (exemplo para Claude Code):
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?cloudOrgId=your_cloud_org_id&"
ou
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?orgId=org_id&"
Você também pode pular a configuração da variável de ambiente global TRACKER_TOKEN se optar por usar autenticação OAuth 2.0 (veja abaixo).
Autenticação OAuth 2.0
O Servidor MCP do Yandex Tracker suporta autenticação OAuth 2.0 como uma alternativa segura aos tokens de API estáticos. Quando configurado, o servidor atua como um provedor OAuth, facilitando a autenticação entre seu cliente MCP e os serviços OAuth do Yandex.
Como o OAuth Funciona
O servidor MCP implementa um fluxo padrão de código de autorização OAuth 2.0:
- Registro do Cliente: Seu cliente MCP se registra no servidor para obter credenciais de cliente
- Autorização: Os usuários são redirecionados ao OAuth do Yandex para autenticação
- Troca de Token: O servidor troca códigos de autorização por tokens de acesso
- Acesso à API: Os clientes usam tokens bearer para todas as solicitações de API
- Atualização de Token: Tokens expirados podem ser atualizados sem nova autenticação
MCP Client → MCP Server → Yandex OAuth → User Authentication
↑ ↓
└────────── Access Token ←─────────────────┘
Configuração do OAuth
Para habilitar a autenticação OAuth, defina as seguintes variáveis de ambiente:
# Enable OAuth mode
OAUTH_ENABLED=true
# Yandex OAuth Application Credentials (required for OAuth)
OAUTH_CLIENT_ID=your_yandex_oauth_app_id
OAUTH_CLIENT_SECRET=your_yandex_oauth_app_secret
# Public URL of your MCP server (required for OAuth callbacks)
MCP_SERVER_PUBLIC_URL=https://your-mcp-server.example.com
# Optional OAuth settings
OAUTH_SERVER_URL=https://oauth.yandex.ru # Default Yandex OAuth server
# When OAuth is enabled, TRACKER_TOKEN becomes optional
Configurando um Aplicativo OAuth do Yandex
- Acesse Yandex OAuth e crie um novo aplicativo
- Defina a URL de callback como:
{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback - Solicite as seguintes permissões:
tracker:read- Permissões de leitura para o Trackertracker:write- Permissões de escrita para o Tracker
- Salve seu Client ID e Client Secret
Autenticação OAuth vs Token Estático
| Recurso | OAuth | Token Estático |
|---|---|---|
| Segurança | Tokens dinâmicos com expiração | Tokens estáticos de longa duração |
| Experiência do Usuário | Fluxo de login interativo | Configuração única |
| Gerenciamento de Tokens | Atualização automática | Rotação manual |
| Controle de Acesso | Autenticação por usuário | Token compartilhado |
| Complexidade de Configuração | Requer configuração do aplicativo OAuth | Configuração simples de token |
Limitações do Modo OAuth
- Atualmente, o modo OAuth exige que o servidor MCP seja publicamente acessível para URLs de callback
- O modo OAuth é mais adequado para clientes interativos que suportam fluxos de autenticação baseados na web
Usando OAuth com Clientes MCP
Quando o OAuth está habilitado, os clientes MCP precisarão:
- Suportar o fluxo de código de autorização OAuth 2.0
- Gerenciar a atualização de tokens quando os tokens de acesso expirarem
- Armazenar tokens de atualização com segurança para autenticação persistente
Nota: Nem todos os clientes MCP suportam atualmente autenticação OAuth. Verifique a documentação do seu cliente para compatibilidade com OAuth.
Exemplo de configuração para Claude Code:
claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s user
Armazenamento de Dados OAuth
O servidor MCP suporta dois backends de armazenamento diferentes para dados OAuth (registros de clientes, tokens de acesso, tokens de atualização e estados de autorização):
Armazenamento em Memória (Padrão)
O armazenamento em memória mantém todos os dados OAuth na memória do servidor. Esta é a opção padrão e não requer configuração adicional.
Características:
- Persistência: Os dados são perdidos quando o servidor reinicia
- Desempenho: Acesso muito rápido, pois os dados são armazenados em memória
- Escalabilidade: Limitado a uma única instância do servidor
- Configuração: Nenhuma dependência adicional necessária
- Melhor para: Desenvolvimento, testes ou implantações de instância única onde perder sessões OAuth na reinicialização é aceitável
Configuração:
OAUTH_STORE=memory # Default value, can be omitted
Armazenamento Redis
O armazenamento Redis fornece armazenamento persistente para dados OAuth usando um banco de dados Redis. Isso garante que as sessões OAuth sobrevivam a reinicializações do servidor e permite implantações de múltiplas instâncias.
Características:
- Persistência: Os dados persistem entre reinicializações do servidor
- Desempenho: Acesso rápido com sobrecarga de rede
- Escalabilidade: Suporta múltiplas instâncias do servidor compartilhando o mesmo banco de dados Redis
- Configuração: Requer instalação e configuração do servidor Redis
- Melhor para: Implantações de produção, configurações de alta disponibilidade ou quando as sessões OAuth devem persistir
Configuração:
# Enable Redis store for OAuth data
OAUTH_STORE=redis
# Redis connection settings (same as used for tools caching)
REDIS_ENDPOINT=localhost # Default: localhost
REDIS_PORT=6379 # Default: 6379
REDIS_DB=0 # Default: 0
REDIS_PASSWORD=your_redis_password # Optional: Redis password
REDIS_POOL_MAX_SIZE=10 # Default: 10
Comportamento de Armazenamento:
- Informações do Cliente: Armazenadas persistentemente
- Estados OAuth: Armazenados com TTL (tempo de vida) por segurança
- Códigos de Autorização: Armazenados com TTL e limpos automaticamente após o uso
- Tokens de Acesso: Armazenados com expiração automática com base na vida útil do token
- Tokens de Atualização: Armazenados persistentemente até serem revogados
- Namespacing de Chaves: Usa prefixos
oauth:*para evitar conflitos com outros dados Redis
Criptografia de Tokens (Obrigatória para Armazenamento Redis)
Ao usar o armazenamento Redis, você deve configurar a criptografia para proteger os tokens OAuth em repouso. Os valores dos tokens são criptografados usando Fernet (AES-128) e as chaves Redis usam hashes SHA-256 em vez de tokens brutos, evitando a exposição de tokens se o Redis for comprometido.
Gerar uma chave de criptografia:
python3 -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"
Configuração:
# Single encryption key
OAUTH_ENCRYPTION_KEYS=<base64-encoded-32-byte-key>
# Multiple keys for rotation (first encrypts, all decrypt)
OAUTH_ENCRYPTION_KEYS=<new-key>,<old-key>
A rotação de chaves permite atualizações contínuas: adicione a nova chave primeiro, aguarde os tokens antigos expirarem e remova a chave antiga.
Notas Importantes:
- Ambos os armazenamentos usam as mesmas configurações de conexão Redis que o sistema de cache de ferramentas
- Ao usar o armazenamento Redis, certifique-se de que sua instância Redis esteja devidamente protegida e acessível
- A configuração
OAUTH_STOREafeta apenas o armazenamento de dados OAuth; o cache de ferramentas usaTOOLS_CACHE_ENABLED - O armazenamento Redis usa serialização JSON para melhor compatibilidade entre linguagens e depuração
Autenticação
O Servidor MCP do Yandex Tracker suporta múltiplos métodos de autenticação com uma ordem clara de prioridade. O servidor usará o primeiro método de autenticação disponível com base nesta hierarquia:
Ordem de Prioridade de Autenticação
-
Token OAuth Dinâmico (maior prioridade)
- Quando o OAuth está habilitado e um usuário autentica via fluxo OAuth
- Tokens são obtidos dinamicamente e atualizados por sessão de usuário
- Suporta tanto OAuth padrão do Yandex quanto OAuth federativo do Yandex Cloud
- Variáveis de ambiente necessárias:
OAUTH_ENABLED=true,OAUTH_CLIENT_ID,OAUTH_CLIENT_SECRET,MCP_SERVER_PUBLIC_URL - Variáveis adicionais para OAuth federativo:
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth,OAUTH_TOKEN_TYPE=Bearer,OAUTH_USE_SCOPES=false
-
Token OAuth Bearer de Passagem
- Quando o middleware OAuth do MCP não fornece um token, o servidor pode ler um token OAuth do Yandex do cabeçalho
Authorization: Bearer <token>de entrada - Útil atrás de um proxy reverso ou gateway confiável que autentica usuários, resolve seu token OAuth do Yandex armazenado e o injeta por solicitação
- O token do OAuth do MCP ainda tem prioridade quando o modo OAuth está habilitado e ativo
- Quando o middleware OAuth do MCP não fornece um token, o servidor pode ler um token OAuth do Yandex do cabeçalho
-
Token OAuth Estático
- Token OAuth tradicional fornecido via variável de ambiente
- Token único usado para todas as solicitações
- Variável de ambiente necessária:
TRACKER_TOKEN(seu token OAuth)
-
Token IAM Estático
- Token IAM (Identity and Access Management) para autenticação serviço a serviço
- Adequado para sistemas automatizados e pipelines de CI/CD
- Variável de ambiente necessária:
TRACKER_IAM_TOKEN(seu token IAM)
-
Token IAM Dinâmico (menor prioridade)
- Obtido automaticamente usando credenciais de conta de serviço
- O token é buscado e atualizado automaticamente
- Variáveis de ambiente necessárias:
TRACKER_SA_KEY_ID,TRACKER_SA_SERVICE_ACCOUNT_ID,TRACKER_SA_PRIVATE_KEY
Cenários de Autenticação
Cenário 1: OAuth com Tokens Dinâmicos (Recomendado para Uso Interativo)
# Enable OAuth mode
OAUTH_ENABLED=true
OAUTH_CLIENT_ID=your_oauth_app_id
OAUTH_CLIENT_SECRET=your_oauth_app_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Cenário 2: Token OAuth Estático (Configuração Simples)
# OAuth token
TRACKER_TOKEN=your_oauth_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Cenário 3: Token Bearer de Passagem Atrás de um Proxy Reverso
Use este modo quando um gateway confiável gerencia a autenticação do usuário, consulta o token OAuth do Yandex do usuário e encaminha a solicitação ao servidor MCP com esse token no cabeçalho da solicitação:
Authorization: Bearer <user_yandex_oauth_token>
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Este token de passagem é usado apenas quando o middleware OAuth do MCP não forneceu um token de acesso para a solicitação. Em implantações com OAuth habilitado e uma sessão OAuth do MCP ativa, o token OAuth do MCP tem prioridade.
Cenário 4: Token IAM Estático
# IAM token
TRACKER_IAM_TOKEN=your_iam_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Cenário 5: Token IAM Dinâmico com Conta de Serviço
# Service account credentials
TRACKER_SA_KEY_ID=your_key_id
TRACKER_SA_SERVICE_ACCOUNT_ID=your_service_account_id
TRACKER_SA_PRIVATE_KEY=your_private_key
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Cenário 6: OAuth Federativo para Aplicações OIDC (Avançado)
# Enable OAuth with Yandex Cloud federation
OAUTH_ENABLED=true
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth
OAUTH_TOKEN_TYPE=Bearer
OAUTH_USE_SCOPES=false
OAUTH_CLIENT_ID=your_oidc_client_id
OAUTH_CLIENT_SECRET=your_oidc_client_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
Esta configuração permite autenticação por meio de aplicações OIDC do Yandex Cloud, que é necessária para contas federadas no Yandex Cloud. Usuários federados autenticam por meio do provedor de identidade (IdP) da sua organização e usam este fluxo OAuth para acessar as APIs do Yandex Tracker.
Notas Importantes
- O servidor verifica os métodos de autenticação na ordem listada acima
- Apenas um método de autenticação será usado por vez
- Para uso em produção, tokens dinâmicos (OAuth ou IAM) são recomendados para melhor segurança
- Tokens IAM têm vida útil mais curta que tokens OAuth e podem precisar de renovação mais frequente
- Ao usar contas de serviço, certifique-se de que a conta tenha as permissões apropriadas para o Yandex Tracker
Configuração
Variáveis de Ambiente
# Authentication (use one of the following methods)
# Method 1: OAuth Token
TRACKER_TOKEN=your_yandex_tracker_oauth_token
# Method 2: IAM Token
TRACKER_IAM_TOKEN=your_iam_token
# Method 3: Service Account (for dynamic IAM token)
TRACKER_SA_KEY_ID=your_key_id # Service account key ID
TRACKER_SA_SERVICE_ACCOUNT_ID=your_sa_id # Service account ID
TRACKER_SA_PRIVATE_KEY=your_private_key # Service account private key
# Organization Configuration (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # For Yandex Cloud organizations
TRACKER_ORG_ID=your_org_id # For Yandex 360 organizations
# API Configuration (optional)
TRACKER_API_BASE_URL=https://api.tracker.yandex.net # Default: https://api.tracker.yandex.net
# Security - Restrict access to specific queues (optional)
TRACKER_LIMIT_QUEUES=PROJ1,PROJ2,DEV # Comma-separated queue keys - allow-list of accessible queues
TRACKER_READ_ONLY_QUEUES=PROJ2 # Comma-separated queue keys - allowed for reads but reject writes (per-queue read-only)
# Server Configuration
HOST=0.0.0.0 # Default: 0.0.0.0
PORT=8000 # Default: 8000
TRANSPORT=stdio # Options: stdio, streamable-http, sse
# Redis connection settings (used for caching and OAuth store)
REDIS_ENDPOINT=localhost # Default: localhost
REDIS_PORT=6379 # Default: 6379
REDIS_DB=0 # Default: 0
REDIS_PASSWORD=your_redis_password # Optional: Redis password
REDIS_POOL_MAX_SIZE=10 # Default: 10
# Tools caching configuration (optional)
TOOLS_CACHE_ENABLED=true # Default: false
TOOLS_CACHE_REDIS_TTL=3600 # Default: 3600 seconds (1 hour)
# OAuth 2.0 Authentication (optional)
OAUTH_ENABLED=true # Default: false
OAUTH_STORE=redis # Options: memory, redis (default: memory)
OAUTH_SERVER_URL=https://oauth.yandex.ru # Default: https://oauth.yandex.ru (use https://auth.yandex.cloud/oauth for federation)
OAUTH_TOKEN_TYPE=<Bearer|OAuth|<empty>> # Default: <empty> (required to be Bearer for Yandex Cloud federation)
OAUTH_USE_SCOPES=true # Default: true (set to false for Yandex Cloud federation)
OAUTH_CLIENT_ID=your_oauth_client_id # Required when OAuth enabled
OAUTH_CLIENT_SECRET=your_oauth_secret # Required when OAuth enabled
MCP_SERVER_PUBLIC_URL=https://your.server.com # Required when OAuth enabled
TRACKER_READ_ONLY=true # Default: false - Disable all write tools for the whole instance
Controle de Acesso à Fila
O acesso às filas pode ser definido em três níveis, do mais amplo ao mais granular:
TRACKER_LIMIT_QUEUES— lista de permissão de chaves de fila. Filas fora da lista são tratadas como não encontradas / não permitidas tanto para leituras quanto para escritas.TRACKER_READ_ONLY— quandotrue, todas as ferramentas de escrita são desregistradas, então a instância inteira fica somente leitura.TRACKER_READ_ONLY_QUEUES— lista de permissão somente leitura por fila. As ferramentas de escrita permanecem registradas, mas qualquer chamada de mutação (criar/atualizar/mover/comentar/worklog/link, criação de versão de fila) que tenha como alvo uma fila listada é rejeitada, enquanto as leituras continuam funcionando. Filas não listadas aqui permanecem leitura-escrita.
Isso permite que uma única instância seja leitura-escrita em algumas filas e somente leitura em
outras ao mesmo tempo — por exemplo, TRACKER_LIMIT_QUEUES=DEV,MGMT juntamente com
TRACKER_READ_ONLY_QUEUES=MGMT dá acesso total a DEV e visibilidade somente leitura
em MGMT. Isso é especialmente útil para um gateway MCP compartilhado onde
os usuários finais alcançam o Tracker apenas através do servidor e nunca detêm o token bruto
eles mesmos.
Essas verificações são proteções em processo. Para clientes que detêm o token bruto do Tracker diretamente, limites reais devem ser adicionalmente aplicados no próprio token.
Implantação com Docker
Usando Imagem Pré-construída (Recomendado)
# Using environment file
docker run --env-file .env -p 8000:8000 ghcr.io/aikts/yandex-tracker-mcp:latest
# With inline environment variables
docker run -e TRACKER_TOKEN=your_token \
-e TRACKER_CLOUD_ORG_ID=your_org_id \
-p 8000:8000 \
ghcr.io/aikts/yandex-tracker-mcp:latest
Construindo a Imagem Localmente
docker build -t yandex-tracker-mcp .
Docker Compose
Usando imagem pré-construída:
version: '3.8'
services:
mcp-tracker:
image: ghcr.io/aikts/yandex-tracker-mcp:latest
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
Construindo localmente:
version: '3.8'
services:
mcp-tracker:
build: .
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
Configuração de Desenvolvimento
# Clone and setup
git clone https://github.com/aikts/yandex-tracker-mcp
cd yandex-tracker-mcp
# Install development dependencies
uv sync --dev
# Formatting and static checking
task
Licença
Este projeto é licenciado sob os termos especificados no arquivo LICENSE.
Suporte
Para problemas e dúvidas:
- Revise a documentação da API do Yandex Tracker
- Envie problemas em https://github.com/aikts/yandex-tracker-mcp/issues