Yandex Tracker

Interaja com as APIs do Yandex Tracker para gerenciamento e busca de issues.

Documentação

Yandex Tracker MCP Server

PyPI - Version Test Workflow Release Workflow

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_ID posteriormente para organizações gerenciadas pelo Yandex Cloud
  • Organização Yandex 360: Use a variável de ambiente TRACKER_ORG_ID posteriormente 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

  1. Baixe o arquivo *.mcpb dos GitHub Releases.
  2. Clique duas vezes no arquivo baixado para instalá-lo no Claude Desktop. img.png
  3. Forneça seu token OAuth do Yandex Tracker quando solicitado. img.png
  4. 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 Tracker
    • TRACKER_IAM_TOKEN - Seu token IAM
    • TRACKER_SA_KEY_ID, TRACKER_SA_SERVICE_ACCOUNT_ID, TRACKER_SA_PRIVATE_KEY - Credenciais de conta de serviço
  • TRACKER_CLOUD_ORG_ID ou TRACKER_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.json no 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.json no 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 uvx esteja 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
  • 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
  • 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
  • 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ão
      • description (string, opcional): Descrição da versão
      • start_date (data, opcional): Data de início da versão no formato YYYY-MM-DD
      • due_date (data, opcional): Data de vencimento da versão no formato YYYY-MM-DD
    • Retorna a versão criada com detalhes como nome, descrição, datas e status
    • Respeita as restrições de TRACKER_LIMIT_QUEUES
  • 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.required indica 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
  • 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 ferramenta issue_close)
    • Respeita as restrições de TRACKER_LIMIT_QUEUES
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
  • 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
  • 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
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.
  • issue_get_url: Gerar URL web para um problema

    • Parâmetros: issue_id (string)
    • Retorna: https://tracker.yandex.ru/{issue_id}
  • 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
  • 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 @login no texto).
      • maillist_summonees (array de strings, opcional): Listas de e-mail para mencionar (emails)
      • markup_type (string, opcional): Use md para 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
  • 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ário
      • text (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): Use md para YFM (markdown)
    • Retorna o objeto de comentário atualizado
  • 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)
  • 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 atual
      • relationship (string, obrigatório): Tipo de vínculo descrevendo como issue_id se 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 epic
      • issue (string, obrigatório): ID ou chave do problema para vincular (ex.: "TEST-123")
    • Retorna o objeto de vínculo criado
  • 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 por issue_get_links)
    • Retorna: null (sucesso)
  • issue_get_links: Obter vínculos de problemas relacionados

    • Parâmetros: issue_id (string)
    • Retorna vínculos para problemas relacionados, bloqueados ou duplicados
  • 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
  • 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 trabalho
      • start (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
  • 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 trabalho
      • duration (string, opcional): Duração ISO-8601 (ex.: PT1H30M)
      • comment (string, opcional): Comentário do registro de trabalho
      • start (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
  • 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)
  • 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
  • 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
  • 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
  • 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 problema
      • per_page (inteiro, opcional, padrão: 50): Número de entradas por página
      • cursor (string, opcional): O valor next_cursor retornado 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.: IssueWorkflow para transições de status)
    • Retorna um objeto com entries (transições de status e edições de campos — incluindo quem alterou o quê fromto e quando — além de alterações de comentários e gatilhos executados) e next_cursor (passe-o de volta como cursor para a próxima página; null quando não houver mais páginas)
  • 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 problema
      • transition_id (string, obrigatório): O ID da transição a ser executada. IMPORTANTE: Deve ser um dos IDs retornados pela ferramenta issue_get_transitions
      • comment (string, opcional): Comentário opcional para adicionar ao executar a transição
      • fields (objeto, opcional): Dicionário de campos adicionais para definir durante a transição. Campos comuns incluem resolution (ex.: 'fixed', 'wontFix') para fechar problemas, assignee para 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_transitions para 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.
  • 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 problema
      • resolution_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:
      1. Chamar issue_get para recuperar o campo type do problema
      2. Chamar get_queue_metadata com expand: ["issueTypesConfig"] para obter as resoluções disponíveis
      3. Escolher uma resolução da entrada issueTypesConfig correspondente ao tipo do problema - cada tipo de problema tem seu próprio conjunto de resoluções válidas
  • 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 problema
      • type (int, opcional): ID do tipo de problema (da ferramenta get_issue_types)
      • description (string, opcional): Descrição do problema
      • assignee (string ou int, opcional): Login ou UID do responsável
      • priority (string, opcional): Chave de prioridade (da ferramenta get_priorities)
      • fields (objeto, opcional): Campos adicionais para definir durante a criação do problema. IMPORTANTE: Antes de criar um problema, você DEVE chamar queue_get_fields para obter os campos disponíveis (ele retorna campos globais e locais por padrão). Campos com schema.required=true são obrigatórios. Use a propriedade id do 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
  • issue_update: Atualizar um problema existente

    • Parâmetros:
      • issue_id (string, obrigatório, formato: "QUEUE-123"): A chave do problema a ser atualizado
      • summary (string, opcional): Novo título/resumo do problema
      • description (string, opcional): Nova descrição do problema
      • markup_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 com id (string) e/ou key (string, ex.: 'QUEUE-123')
      • sprint (array de IssueUpdateSprint, opcional): Atribuições de sprint - array de objetos com campo id (int)
      • type (IssueUpdateType, opcional): Tipo de problema com id (string) e/ou key (string, ex.: 'bug', 'task')
      • priority (IssueUpdatePriority, opcional): Prioridade com id (string) e/ou key (string, ex.: 'critical', 'normal')
      • followers (array de IssueUpdateFollower, opcional): Seguidores - array de objetos com id (string, ID de usuário ou login)
      • project (IssueUpdateProject, opcional): Projeto com primary (int, shortId do projeto principal) e secondary opcional (array de ints)
      • tags (array de strings, opcional): Tags do problema
      • version (int, opcional): Versão do problema para bloqueio otimista - alterações feitas apenas na versão atual
      • fields (objeto, opcional): Campos adicionais para atualizar. Use queue_get_fields para 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
  • 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 movida
      • queue (string, obrigatório): Chave da fila de destino (ex.: 'MYQUEUE')
      • notify (booleano, opcional, padrão true): Notificar usuários mencionados nos campos da issue
      • notify_author (booleano, opcional, padrão false): Notificar o autor da issue
      • move_all_fields (booleano, opcional, padrão false): Transferir versões, componentes e projetos quando houver correspondências na fila de destino; caso contrário, eles são limpos
      • initial_status (booleano, opcional, padrão false): 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-1NEWQUEUE-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
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 Language
      • include_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
  • 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

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:

  1. Registro do Cliente: Seu cliente MCP se registra no servidor para obter credenciais de cliente
  2. Autorização: Os usuários são redirecionados ao OAuth do Yandex para autenticação
  3. Troca de Token: O servidor troca códigos de autorização por tokens de acesso
  4. Acesso à API: Os clientes usam tokens bearer para todas as solicitações de API
  5. 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

  1. Acesse Yandex OAuth e crie um novo aplicativo
  2. Defina a URL de callback como: {MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback
  3. Solicite as seguintes permissões:
    • tracker:read - Permissões de leitura para o Tracker
    • tracker:write - Permissões de escrita para o Tracker
  4. Salve seu Client ID e Client Secret

Autenticação OAuth vs Token Estático

RecursoOAuthToken Estático
SegurançaTokens dinâmicos com expiraçãoTokens estáticos de longa duração
Experiência do UsuárioFluxo de login interativoConfiguração única
Gerenciamento de TokensAtualização automáticaRotação manual
Controle de AcessoAutenticação por usuárioToken compartilhado
Complexidade de ConfiguraçãoRequer configuração do aplicativo OAuthConfiguraçã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:

  1. Suportar o fluxo de código de autorização OAuth 2.0
  2. Gerenciar a atualização de tokens quando os tokens de acesso expirarem
  3. 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_STORE afeta apenas o armazenamento de dados OAuth; o cache de ferramentas usa TOOLS_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

  1. 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
  2. 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
  3. 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)
  4. 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)
  5. 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 — quando true, 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: