Yandex Tracker

Interactúa con las APIs de Yandex Tracker para la gestión y búsqueda de incidencias.

Documentación

Servidor MCP de Yandex Tracker

PyPI - Version Test Workflow Release Workflow

mcp-name: io.github.aikts/yandex-tracker-mcp

Un servidor integral del Protocolo de Contexto de Modelos (MCP) que permite a los asistentes de IA interactuar con las APIs de Yandex Tracker. Este servidor proporciona acceso seguro y autenticado a issues, colas, comentarios, registros de trabajo y funcionalidad de búsqueda de Yandex Tracker, con caché opcional de Redis para mejorar el rendimiento.

La documentación en ruso está disponible aquí / Documentation in English is available here.

Características

  • Gestión completa de colas: Lista y accede a todas las colas disponibles de Yandex Tracker con soporte de paginación, recuperación de etiquetas y metadatos detallados
  • Proyectos, Portafolios y Objetivos: Herramientas dedicadas de lectura y escritura con esquemas explícitos para cada tipo de entidad en la API de "entidades" de Tracker (opt-in mediante TRACKER_ENTITIES_ENABLED)
  • Gestión de usuarios: Recupera información de cuentas de usuario, incluidos detalles de inicio de sesión, direcciones de correo electrónico, estado de licencia y datos organizativos
  • Ciclo de vida completo de issues: Crea, lee, actualiza y gestiona issues con soporte para campos personalizados, archivos adjuntos y transiciones de flujo de trabajo
  • Gestión de flujos de trabajo de estado: Ejecuta transiciones de estado, cierra issues con resoluciones y navega por flujos de trabajo complejos
  • Gestión de campos: Accede a campos globales, campos locales específicos de cola, estados, tipos de issue, prioridades y resoluciones
  • Tableros y sprints: Lista tableros ágiles y sus sprints para encontrar IDs de sprint para la planificación de issues
  • Lenguaje de consulta avanzado: Soporte completo del Lenguaje de Consulta de Yandex Tracker con filtrado complejo, ordenamiento y funciones de fecha
  • Caché de rendimiento: Capa de caché opcional de Redis para mejorar los tiempos de respuesta
  • Controles de seguridad: Restricciones configurables de acceso a colas y manejo seguro de tokens
  • Múltiples opciones de transporte: Soporte para transportes stdio, SSE (obsoleto) y HTTP para una integración flexible
  • Autenticación OAuth 2.0: Autenticación dinámica basada en tokens con soporte de renovación automática como alternativa a los tokens API estáticos
  • Soporte de organizaciones: Compatible con IDs de organizaciones estándar y de nube

Configuración del ID de organización

Elige una de las siguientes opciones según tu tipo de organización de Yandex:

  • Organización de Yandex Cloud: Usa la variable de entorno TRACKER_CLOUD_ORG_ID más adelante para organizaciones gestionadas por Yandex Cloud
  • Organización de Yandex 360: Usa la variable de entorno TRACKER_ORG_ID más adelante para organizaciones de Yandex 360

Puedes encontrar tu ID de organización en la URL de Yandex Tracker o en la configuración de la organización.

Configuración del cliente MCP

Instalación de la extensión en Claude Desktop

El Servidor MCP de Yandex Tracker se puede instalar con un clic en Claude Desktop como extensión.

Instalación

  1. Descarga el archivo *.mcpb desde GitHub Releases.
  2. Haz doble clic en el archivo descargado para instalarlo en Claude Desktop. img.png
  3. Proporciona tu token OAuth de Yandex Tracker cuando se te solicite. img.png
  4. Asegúrate de que la extensión esté habilitada: ahora puedes usar este Servidor MCP.

Instalación manual

Requisitos previos

  • uv instalado globalmente
  • Token API válido de Yandex Tracker con los permisos adecuados

Las siguientes secciones muestran cómo configurar el servidor MCP para diferentes clientes de IA. Puedes usar uvx yandex-tracker-mcp@latest o la imagen de Docker ghcr.io/aikts/yandex-tracker-mcp:latest. Ambos requieren estas variables de entorno:

  • Autenticación (una de las siguientes):
    • TRACKER_TOKEN - Tu token OAuth de Yandex Tracker
    • TRACKER_IAM_TOKEN - Tu token IAM
    • TRACKER_SA_KEY_ID, TRACKER_SA_SERVICE_ACCOUNT_ID, TRACKER_SA_PRIVATE_KEY - Credenciales de cuenta de servicio
  • Organización - exactamente una de las siguientes:
    • TRACKER_CLOUD_ORG_ID - Tu ID de organización de Yandex Cloud
    • TRACKER_ORG_ID - Tu ID de organización de Yandex 360

Establece una de las dos. Establecer ambas hace que cada llamada a Tracker falle con Only one of org_id or cloud_org_id should be provided. Los ejemplos a continuación usan TRACKER_CLOUD_ORG_ID; en Yandex 360, reemplaza esa clave con TRACKER_ORG_ID.

Claude Desktop

Ruta del archivo de configuración:

  • 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"
      }
    }
  }
}

Usando Docker:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_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"
      }
    }
  }
}
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 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 TRANSPORT=stdio ghcr.io/aikts/yandex-tracker-mcp:latest"
Cursor

Ruta del archivo de configuración:

  • Específico del proyecto: .cursor/mcp.json en el directorio de tu proyecto
  • 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"
      }
    }
  }
}

Usando Docker:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_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"
      }
    }
  }
}
Windsurf

Ruta del archivo de configuración:

  • ~/.codeium/windsurf/mcp_config.json

Acceso mediante: Configuración de Windsurf → pestaña Cascade → Servidores del Protocolo de Contexto de Modelos (MCP) → "Ver configuración sin procesar"

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"
      }
    }
  }
}

Usando Docker:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_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"
      }
    }
  }
}
Zed

Ruta del archivo de configuración:

  • ~/.config/zed/settings.json

Acceso mediante: Cmd+, (macOS) o Ctrl+, (Linux/Windows) o la paleta de comandos: "zed: open settings"

Nota: Requiere la versión Zed Preview para soporte de 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"
        }
      }
    }
  }
}

Usando Docker:

{
  "context_servers": {
    "yandex-tracker": {
      "source": "custom",
      "command": {
        "path": "docker",
        "args": [
          "run", "--rm", "-i",
          "-e", "TRACKER_TOKEN",
          "-e", "TRACKER_CLOUD_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"
        }
      }
    }
  }
}
GitHub Copilot (VS Code)

Ruta del archivo de configuración:

  • Espacio de trabajo: .vscode/mcp.json en el directorio de tu proyecto
  • Global: VS Code settings.json

Opción 1: Configuración del espacio de trabajo (Recomendada por seguridad)

Crea .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"
    }
  ],
  "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}",
        "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"
    }
  ],
  "servers": {
    "yandex-tracker": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "${input:tracker-token}",
        "TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Opción 2: Configuración global

Agrega a 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"
      }
    }
  }
}

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",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}
Otros clientes compatibles con MCP

Para otros clientes compatibles con MCP, usa el formato estándar de configuración del 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"
      }
    }
  }
}

Usando Docker:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_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"
      }
    }
  }
}

Notas importantes:

  • Reemplaza los valores de marcador de posición con tus credenciales reales
  • Reinicia tu cliente de IA después de los cambios de configuración
  • Asegúrate de que uvx esté instalado y disponible en tu PATH del sistema
  • Para uso en producción, considera usar variables de entorno en lugar de codificar tokens

Herramientas MCP disponibles

El servidor expone las siguientes herramientas a través del protocolo MCP:

Gestión de colas
HerramientaQué haceArgumentos clave
queues_get_allCada cola que el token puede ver; devuelve {values, hits, pages}fields, page (omite para recorrer cada página), per_page
queue_get_tagsLas etiquetas definidas en la colaqueue_id (una clave como "SOMEPROJECT")
queue_get_versionsLas versiones de la cola, con fechas y estadoqueue_id
queue_get_componentsLos componentes de la cola como objetos completos, con responsable, indicador de asignación automática y version; queue_get_metadata con expand: ["components"] da solo IDs y nombresqueue_id
queue_create_versionCrea una versión en la colaqueue_id, name, description, start_date, due_date (YYYY-MM-DD)
queue_get_fieldsLos campos configurados en la cola, incluidos los locales; schema.required marca los obligatoriosqueue_id, include_local_fields
queue_get_metadataNombre, descripción, tipo y prioridad predeterminados, más lo que expand solicitequeue_id, expand (all, projects, components, versions, types, team, workflows, fields, issueTypesConfig)
  • Lee queue_get_fields antes de issue_create, pero no es el registro completo: los campos del sistema como parent o estimation se pueden establecer sin aparecer allí, y get_global_fields lista todos los campos que tiene la organización.
  • queue_get_metadata con expand: ["issueTypesConfig"] es de donde provienen las resoluciones válidas para cada tipo de issue - issue_close necesita una de ellas.
  • Todos estos respetan TRACKER_LIMIT_QUEUES. hits / pages de queues_get_all se informan solo para una página única explícita en un servidor sin la lista de permitidos, ya que los totales cuentan colas que la lista de permitidos luego oculta.
Componentes

Un componente es una etiqueta que agrupa los issues de una cola por producto, proceso o responsable. Su ID numérico es lo que issue_create / issue_update aceptan en components.

HerramientaQué haceArgumentos clave
component_getUn componente con queue, lead, assignAuto y versioncomponent_id (de queue_get_components o del components de un issue)
component_createCrea un componente en una colaqueue_id, name, description, lead (un inicio de sesión o uid), assign_auto
component_updateCambia nombre, descripción, responsable o indicador de asignación automática; los campos omitidos conservan su valor, clear_lead elimina el responsablecomponent_id, name, description, lead, assign_auto, clear_lead, version
component_deleteElimina un componentecomponent_id
  • TRACKER_LIMIT_QUEUES y TRACKER_READ_ONLY_QUEUES se aplican a través de la cola del componente: component_update y component_delete leen el componente primero para conocerla, y un componente en una cola fuera de TRACKER_LIMIT_QUEUES se informa como no encontrado.
Proyectos, Portafolios y Objetivos

Los proyectos, portafolios y objetivos son entidades separadas de Yandex Tracker (distintas de las colas), expuestas a través de la API de "entidades" de Tracker. Los atributos personalizados (definidos por la organización) no están modelados y no se devuelven.

Estas herramientas son opt-in. Se registran solo cuando TRACKER_ENTITIES_ENABLED=true (predeterminado false), porque agregan un manifiesto de herramientas grande y no están cubiertas por las restricciones de cola — consulta Control de acceso a colas.

Los tres tipos de entidad comparten un conjunto de herramientas, por lo que se lista una vez: la fila dice qué hace la herramienta, las columnas qué nombre llamar:

Qué haceProyectosPortafoliosObjetivos
Una entidad por id o shortIdproject_getportfolio_getgoal_get
Búsqueda por subcadena de nombre y/o filtros de campo; devuelve {values, hits, pages}project_findportfolio_findgoal_find
Una página de comentarios; devuelve {comments, next_cursor}project_get_commentsportfolio_get_commentsgoal_get_comments
Crear, devolviendo la entidadproject_createportfolio_creategoal_create
Cambiar cualquier campo que la creación acepteproject_updateportfolio_updategoal_update
Eliminarla, y con with_board su tablero también: los objetivos no tienen tableroproject_deleteportfolio_deletegoal_delete
Añadir un comentarioproject_add_commentportfolio_add_commentgoal_add_comment
Editar un comentarioproject_update_commentportfolio_update_commentgoal_update_comment
Eliminar un comentarioproject_delete_commentportfolio_delete_commentgoal_delete_comment
Añadir un elemento de lista de verificaciónproject_add_checklist_itemportfolio_add_checklist_item-
Editar un elemento de lista de verificación, dejando los campos que omitas como estánproject_update_checklist_itemportfolio_update_checklist_item-
Mover un elemento de lista de verificación antes de otroproject_move_checklist_itemportfolio_move_checklist_item-
Eliminar un elemento de lista de verificaciónproject_delete_checklist_itemportfolio_delete_checklist_item-
Editar varios elementos existentes por idproject_update_checklistportfolio_update_checklist-
Eliminar toda la lista de verificaciónproject_delete_checklistportfolio_delete_checklist-
  • Argumentos. Las lecturas toman entity_id y fields; las herramientas *_find toman input, filter, order_by, order_asc, root_only, page, per_page. Crear y actualizar toman summary (obligatorio al crear), description, lead, team_users, clients, followers, start (los objetivos no tienen), end, tags, entity_status, parent_entity, team_access y links, y actualizar también comment y version (bloqueo optimista). Cada herramienta toma el mismo selector fields y devuelve la entidad.
  • Los links se añaden, nunca se reemplazan, y la API nunca los devuelve: un enlace existente no se puede leer de nuevo ni eliminar a través de este servidor, y una actualización solo de enlaces se rechaza en lugar de informarse como un éxito que Tracker ignora silenciosamente.
  • No en el conjunto de campos predeterminado: checklistItems (las herramientas de lista de verificación devuelven la entidad completa, así que pídelos para ver el resultado), metricItems, y el keyResultItems de un objetivo: los dos últimos son de solo lectura. Los objetivos usan sus propios valores de entityStatus (draft, according_to_plan, at_risk, blocked, achieved, partially_achieved, not_achieved, exceeded, cancelled). Los cambios masivos no son compatibles.
Gestión de Usuarios
HerramientaQué haceArgumentos clave
users_get_allUna página de los usuarios de la organización; devuelve {values, hits, pages}page, per_page, fields
user_getUn usuario por login o uiduser_id ("john.doe" o "12345")
user_get_currentEl usuario al que pertenece el token actual-
users_searchEncontrar usuarios por login, correo electrónico o nombre reallogin_or_email_or_name
  • users_search coincide con login y correo electrónico exactamente primero y luego recurre a coincidencia difusa de nombres (similitud del 80%, como máximo las tres mejores coincidencias).
  • La página de users_get_all es la última cuando page es igual a pages.
Gestión de Campos
HerramientaQué haceArgumentos clave
get_global_fieldsCada campo global de la organización, con su esquema y tipo-

Los campos locales de cola no están aquí: queue_get_fields los devuelve junto con los globales.

Gestión de Estados y Tipos
HerramientaQué haceArgumentos clave
get_statusesCada estado de problema que la organización define-
get_issue_typesCada tipo de problema, para el argumento type de issue_create / issue_update-
get_prioritiesCada prioridad, con id, key, name y order-
get_resolutionsCada resolución, para el resolution_id de issue_close-

Estos cuatro son a nivel de organización. Una cola puede aceptar solo algunos de los valores que enumeran, y Tracker responde 422 por uno que no acepta: queue_get_metadata con expand: ["issueTypesConfig"] indica qué resoluciones acepta cada tipo de problema.

Plantillas
HerramientaQué haceArgumentos clave
issue_templates_get_allLas plantillas de problemas, con los valores de fieldTemplates que prellenan; devuelve {values, hits, pages}queue, page (omite para recorrer cada página), per_page
issue_template_getUna plantilla de problema por idtemplate_id
comment_templates_get_allLas plantillas de comentarios, con el texto de template y su summonees / maillistSummoneesqueue, page, per_page
comment_template_getUna plantilla de comentario por idtemplate_id
  • Las plantillas son ayudas de solo lectura. La API no puede crear un problema o un comentario a partir de una plantilla, por lo que issue_create y issue_add_comment no toman template_id: lee la plantilla y pasa sus valores como argumentos propios de la herramienta de escritura. Macros como {{today}} llegan literalmente.
  • El cuerpo del problema que una plantilla prellena está en fieldTemplates.description; el propio description de la plantilla describe la plantilla.
  • queue devuelve las plantillas de esa cola más las vinculadas a ninguna cola, que son utilizables en todas partes. TRACKER_LIMIT_QUEUES aplica: las plantillas de una cola restringida se omiten de los listados y se rechazan en acceso directo, mientras que las plantillas sin cola permanecen visibles.
Tableros y Sprints
HerramientaQué haceArgumentos clave
boards_get_allLos tableros ágiles de la organización; devuelve {boards, next_cursor}queue, fields, cursor (el next_cursor anterior), per_page
board_getUn tablero con autoFilterSettings (lo que recopila), estimateBy, useRanking y su calendar de trabajoboard_id, fields
board_get_columnsLas columnas del tablero con los estados de problema que caen en cada unaboard_id
board_get_sprintsLos sprints del tablero con estado (draft, in_progress, released, archived) y fechas planificadas/realesboard_id, fields
  • Un tablero no tiene cola propia, por lo que queue se compara con el filtro propio del tablero y omite los tableros que filtran por otra cosa: un tablero personal que filtra por asignado, por ejemplo. Para capturarlos, lee algunos problemas de la cola con issues_find y mira su campo boards.
  • Los tableros pertenecen a la organización, no a una cola, por lo que TRACKER_LIMIT_QUEUES no los filtra: solo se verifica el argumento queue de boards_get_all, y lo que estas herramientas devuelven puede nombrar colas restringidas.
  • Un tablero no-scrum no tiene sprints y board_get_sprints se rechaza para él. El id de sprint que devuelve es lo que issue_create / issue_update toman.
Operaciones de Problemas
HerramientaQué haceArgumentos clave
issue_getUn problema por clave: el registro completo, incluido el version actualissue_id, include_description
issue_get_urlLa URL web de un problemaissue_id
issue_get_commentsUna página de comentarios, del más antiguo al más reciente; devuelve {comments, next_cursor}issue_id, cursor, per_page, fields
issue_add_commentAñadir un comentario; summonees es lo que notifica a un usuario, un @login en el texto no notifica a nadieissue_id, text, summonees, maillist_summonees, markup_type, is_add_to_followers
issue_update_commentEditar un comentarioissue_id, comment_id, text, summonees, maillist_summonees
issue_delete_commentEliminar un comentarioissue_id, comment_id
issue_get_linksEnlaces a problemas relacionados, bloqueantes y duplicadosissue_id
issue_add_linkVincular dos problemasissue_id, relationship, issue
issue_delete_linkEliminar un enlaceissue_id, link_id (de issue_get_links)
issue_get_worklogsEl tiempo registrado en uno o más problemasissue_ids, fields
issue_add_worklogRegistrar tiempo invertidoissue_id, duration (ISO-8601, PT1H30M), comment, start
issue_update_worklogEditar una entrada de registro de trabajoissue_id, worklog_id, duration, comment, start
issue_delete_worklogEliminar una entrada de registro de trabajoissue_id, worklog_id
issue_get_attachmentsMetadatos de adjuntosissue_id, fields
issue_get_checklistLa lista de verificación, con los ids de elementos que las herramientas de escritura necesitanissue_id
issue_add_checklist_itemsAñadir elementos en orden, creando la lista de verificación si no hay ningunaissue_id, items (text, checked, assignee, deadline)
issue_update_checklist_itemCambiar un elemento; los campos que omitas conservan su valorissue_id, checklist_item_id, text, checked, assignee, deadline, clear_assignee, clear_deadline
issue_delete_checklist_itemEliminar un elementoissue_id, checklist_item_id
issue_get_transitionsLas transiciones de estado disponibles ahora mismo, con sus idsissue_id
issue_execute_transitionEjecutar una transición, devolviendo las transiciones disponibles despuésissue_id, transition_id, comment, fields
issue_closeEncontrar una transición a un estado final y ejecutarla con una resoluciónissue_id, resolution_id, comment, fields
issue_get_changelogEdiciones de campos, transiciones de estado, cambios de comentarios y disparadores activados; devuelve {entries, next_cursor}issue_id, cursor, per_page, field, type
issue_createCrear un problema, devolviéndoloqueue, summary, type, description, markup_type, assignee, priority, parent, sprint, followers, components, tags, project, fields
issue_updateCambiar cualquiera de esos campos; los que omitas permanecen como estánissue_id, version, y los argumentos que issue_create toma
issue_moveMover un problema a otra cola, lo que cambia su clave (TASKS-1 → NEWQUEUE-42)issue_id, queue, notify, notify_author, move_all_fields, initial_status
  • version caduca por sí solo. Los disparadores de cola y la automatización se ejecutan justo después de issue_create y lo actualizan, por lo que la versión que devuelve suele estar ya desactualizada. Vuelve a leerlo con issue_get inmediatamente antes de issue_update, u omítelo para actualizar la última versión incondicionalmente; uno desactualizado falla con un conflicto de edición.
  • Los campos de referencia toman los mismos valores al crear y al actualizar: un objeto con id y/o key, o —para type, priority y parent— la clave o el id simple. components acepta {"id": ...} o {"name": ...}, y components / followers reemplazan la lista actual en lugar de agregar a ella. Cualquier cosa sin un argumento dedicado va al mapa fields, con la clave del campo id de queue_get_fields; una entrada allí anula el argumento dedicado, y un null explícito limpia el campo.
  • Las transiciones no se adivinan. issue_execute_transition solo toma ids de issue_get_transitions, y antes de issue_close lee el type del problema con issue_get y las resoluciones válidas para ese tipo de queue_get_metadata con expand: ["issueTypesConfig"] — cada tipo tiene su propio conjunto. Donde el cliente admite la elicitación, issue_move pide al usuario confirmar sus banderas primero, y rechazar aborta el movimiento.

Cada herramienta aquí respeta TRACKER_LIMIT_QUEUES y TRACKER_READ_ONLY_QUEUES; las que escriben se registran solo cuando TRACKER_READ_ONLY está desactivado.

Búsqueda y Descubrimiento
HerramientaQué haceArgumentos clave
issues_findBusca problemas con Lenguaje de Consulta de Yandex Tracker; devuelve {values, hits, pages}query, fields, include_description, page, per_page
issues_countCuántos problemas coinciden con una consulta; devuelve {"count": N}query
  • fields usa la ortografía propia de Tracker (storyPoints, no story_points) y acepta cualquier nombre de campo, incluidos los locales de una cola y los campos personalizados de la organización — pasa el campo id de queue_get_fields. Un nombre que Tracker no conoce se descarta silenciosamente.
  • include_description se ignora cuando description está listado en fields: nombrarlo allí es una solicitud explícita para ello.
  • per_page tiene un valor predeterminado de 100 y se puede reducir cuando una página no cabe en la ventana de contexto.

Transporte http

El servidor MCP también se puede ejecutar en modo http transmisible para integraciones basadas en web o cuando el transporte stdio no es adecuado.

Variables de Entorno del 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 el 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

Puedes omitir la configuración de TRACKER_CLOUD_ORG_ID o TRACKER_ORG_ID si usas el siguiente formato al conectarte al Servidor MCP (ejemplo para Claude Code):

claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?cloudOrgId=your_cloud_org_id&"

o

claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?orgId=org_id&"

También puedes omitir la configuración de la variable de entorno global TRACKER_TOKEN si eliges usar autenticación OAuth 2.0 (ver más abajo).

Autenticación OAuth 2.0

El Servidor MCP de Yandex Tracker admite autenticación OAuth 2.0 como una alternativa segura a los tokens API estáticos. Cuando está configurado, el servidor actúa como un proveedor OAuth, facilitando la autenticación entre tu cliente MCP y los servicios OAuth de Yandex.

Cómo Funciona OAuth

El servidor MCP implementa un flujo estándar de código de autorización OAuth 2.0:

  1. Registro del Cliente: Tu cliente MCP se registra con el servidor para obtener credenciales de cliente
  2. Autorización: Los usuarios son redirigidos a Yandex OAuth para autenticarse
  3. Intercambio de Tokens: El servidor intercambia códigos de autorización por tokens de acceso
  4. Acceso a la API: Los clientes usan tokens de portador para todas las solicitudes de API
  5. Renovación de Tokens: Los tokens caducados se pueden renovar sin reautenticación
MCP Client → MCP Server → Yandex OAuth → User Authentication
    ↑                                           ↓
    └────────── Access Token ←─────────────────┘

Configuración de OAuth

Para habilitar la autenticación OAuth, establece las siguientes variables de entorno:

# 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
Ámbitos de OAuth

Con OAUTH_USE_SCOPES=true (el predeterminado) el servidor solicita, anuncia y requiere los ámbitos de Yandex Tracker tracker:read y tracker:write — o tracker:read solo cuando TRACKER_READ_ONLY=true, por lo que una instancia de solo lectura nunca pide al usuario acceso de escritura. Establecer OAUTH_USE_SCOPES=false elimina los ámbitos del flujo por completo, que es lo que la federación de Yandex Cloud requiere.

Configuración de la Aplicación OAuth de Yandex

  1. Ve a Yandex OAuth y crea una nueva aplicación
  2. Establece la URL de devolución de llamada a: {MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback
  3. Solicita los siguientes permisos:
    • tracker:read - Permisos de lectura para Tracker
    • tracker:write - Permisos de escritura para Tracker
  4. Guarda tu ID de Cliente y Secreto de Cliente

OAuth vs Autenticación con Token Estático

CaracterísticaOAuthToken Estático
SeguridadTokens dinámicos con caducidadTokens estáticos de larga duración
Experiencia de UsuarioFlujo de inicio de sesión interactivoConfiguración única
Gestión de TokensRenovación automáticaRotación manual
Control de AccesoAutenticación por usuarioToken compartido
Complejidad de ConfiguraciónRequiere configuración de la aplicación OAuthConfiguración simple de token

Limitaciones del Modo OAuth

  • Actualmente, el modo OAuth requiere que el servidor MCP sea accesible públicamente para las URL de devolución de llamada
  • El modo OAuth es más adecuado para clientes interactivos que admiten flujos de autenticación basados en web

Uso de OAuth con Clientes MCP

Cuando OAuth está habilitado, los clientes MCP necesitarán:

  1. Admitir el flujo de código de autorización OAuth 2.0
  2. Manejar la renovación de tokens cuando caduquen los tokens de acceso
  3. Almacenar los tokens de renovación de forma segura para la autenticación persistente

Nota: No todos los clientes MCP admiten actualmente la autenticación OAuth. Consulta la documentación de tu cliente para conocer la compatibilidad con OAuth.

Ejemplo de configuración para Claude Code:

claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s user

Almacenamiento de Datos OAuth

El servidor MCP admite dos backends de almacenamiento diferentes para datos OAuth (registros de clientes, tokens de acceso, tokens de renovación y estados de autorización):

Almacén en Memoria (Predeterminado)

El almacén en memoria mantiene todos los datos OAuth en la memoria del servidor. Esta es la opción predeterminada y no requiere configuración adicional.

Características:

  • Persistencia: Los datos se pierden cuando el servidor se reinicia
  • Rendimiento: Acceso muy rápido ya que los datos se almacenan en memoria
  • Escalabilidad: Limitado a una sola instancia del servidor
  • Configuración: No requiere dependencias adicionales
  • Mejor para: Desarrollo, pruebas o implementaciones de una sola instancia donde perder sesiones OAuth al reiniciar es aceptable

Configuración:

OAUTH_STORE=memory  # Default value, can be omitted
Almacén Redis

El almacén Redis proporciona almacenamiento persistente para datos OAuth usando una base de datos Redis. Esto asegura que las sesiones OAuth sobrevivan a los reinicios del servidor y permite implementaciones de múltiples instancias.

Características:

  • Persistencia: Los datos persisten entre reinicios del servidor
  • Rendimiento: Acceso rápido con sobrecarga de red
  • Escalabilidad: Admite múltiples instancias del servidor que comparten la misma base de datos Redis
  • Configuración: Requiere instalación y configuración del servidor Redis
  • Mejor para: Implementaciones de producción, configuraciones de alta disponibilidad o cuando las sesiones OAuth deben persistir

Configuración:

# 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

Comportamiento de Almacenamiento:

  • Información del Cliente: Almacenada de forma persistente
  • Estados OAuth: Almacenados con TTL (tiempo de vida) por seguridad
  • Códigos de Autorización: Almacenados con TTL y limpiados automáticamente después de su uso
  • Tokens de Acceso: Almacenados con caducidad automática basada en la vida útil del token
  • Tokens de Renovación: Almacenados de forma persistente hasta que se revoquen
  • Espaciado de Claves: Usa prefijos oauth:* para evitar conflictos con otros datos de Redis
Cifrado de Tokens (Requerido para el Almacén Redis)

Al usar el almacén Redis, debes configurar el cifrado para proteger los tokens OAuth en reposo. Los valores de los tokens se cifran usando Fernet (AES-128) y las claves de Redis usan hashes SHA-256 en lugar de tokens sin procesar, evitando la exposición de tokens si Redis se ve comprometido.

Genera una clave de cifrado:

python3 -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"

Configuración:

# 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>

La rotación de claves permite actualizaciones de claves sin problemas: agrega la nueva clave primero, espera a que caduquen los tokens antiguos y luego elimina la clave antigua.

Notas Importantes:

  • Ambos almacenes usan la misma configuración de conexión Redis que el sistema de caché de herramientas
  • Al usar el almacén Redis, asegúrate de que tu instancia de Redis esté correctamente asegurada y accesible
  • La configuración OAUTH_STORE solo afecta el almacenamiento de datos OAuth; el caché de herramientas usa TOOLS_CACHE_ENABLED
  • El almacén Redis usa serialización JSON para una mejor compatibilidad entre lenguajes y depuración

Autenticación

El Servidor MCP de Yandex Tracker admite múltiples métodos de autenticación con un orden de prioridad claro. El servidor usará el primer método de autenticación disponible según esta jerarquía:

Orden de Prioridad de Autenticación

  1. Token OAuth Dinámico (mayor prioridad)

    • Cuando OAuth está habilitado y un usuario se autentica mediante el flujo OAuth
    • Los tokens se obtienen y renuevan dinámicamente por sesión de usuario
    • Admite tanto OAuth estándar de Yandex como OAuth federativo de Yandex Cloud
    • Variables de entorno requeridas: OAUTH_ENABLED=true, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, MCP_SERVER_PUBLIC_URL
    • Variables adicionales para OAuth federativo: OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth, OAUTH_TOKEN_TYPE=Bearer, OAUTH_USE_SCOPES=false
  2. Token OAuth de Portador de Paso Directo

    • Cuando el middleware OAuth de MCP no proporciona un token, el servidor puede leer un token OAuth de Yandex del encabezado Authorization: Bearer <token> entrante
    • Útil detrás de un proxy inverso o puerta de enlace de confianza que autentica usuarios, resuelve su token OAuth de Yandex almacenado y lo inyecta por solicitud
    • El token de MCP OAuth aún tiene prioridad cuando el modo OAuth está habilitado y activo
  3. Token OAuth Estático

    • Token OAuth tradicional proporcionado mediante variable de entorno
    • Un solo token usado para todas las solicitudes
    • Variable de entorno requerida: TRACKER_TOKEN (tu token OAuth)
  4. Token IAM Estático

    • Token IAM (Identity and Access Management) para autenticación de servicio a servicio
    • Adecuado para sistemas automatizados y pipelines de CI/CD
    • Variable de entorno requerida: TRACKER_IAM_TOKEN (tu token IAM)
  5. Token IAM Dinámico (menor prioridad)

    • Obtenido automáticamente usando credenciales de cuenta de servicio
    • El token se obtiene y renueva automáticamente
    • Variables de entorno requeridas: TRACKER_SA_KEY_ID, TRACKER_SA_SERVICE_ACCOUNT_ID, TRACKER_SA_PRIVATE_KEY

Escenarios de Autenticación

Escenario 1: OAuth con Tokens Dinámicos (Recomendado para Uso Interactivo)

# 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

Escenario 2: Token OAuth Estático (Configuración Simple)

# OAuth token
TRACKER_TOKEN=your_oauth_token

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID

Escenario 3: Token de Portador de Paso Directo Detrás de un Proxy Inverso

Usa este modo cuando una puerta de enlace de confianza maneja la autenticación del usuario, busca el token OAuth de Yandex del usuario y reenvía la solicitud al servidor MCP con ese token en el encabezado de la solicitud:

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 paso directo se usa solo cuando el middleware OAuth de MCP no ha proporcionado un token de acceso para la solicitud. En implementaciones con OAuth habilitado y una sesión OAuth de MCP activa, el token de MCP OAuth tiene prioridad.

Escenario 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

Escenario 5: Token IAM Dinámico con Cuenta de Servicio

# 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

Escenario 6: OAuth Federativo para Aplicaciones OIDC (Avanzado)

# 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 configuración habilita la autenticación a través de aplicaciones OIDC de Yandex Cloud, que es requerida para cuentas federadas en Yandex Cloud. Los usuarios federados se autentican a través del proveedor de identidad (IdP) de su organización y usan este flujo OAuth para acceder a las APIs de Yandex Tracker.

Notas Importantes

  • El servidor verifica los métodos de autenticación en el orden indicado arriba
  • Solo se utilizará un método de autenticación a la vez
  • Para uso en producción, se recomiendan tokens dinámicos (OAuth o IAM) para mayor seguridad
  • Los tokens IAM tienen una vida útil más corta que los tokens OAuth y pueden requerir renovaciones más frecuentes
  • Al usar cuentas de servicio, asegúrese de que la cuenta tenga los permisos adecuados para Yandex Tracker

Configuración

Variables de Entorno

# 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 (set exactly one - setting both is an error)
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
TRACKER_API_TIMEOUT=10                    # Default: 10 - Per-request timeout in seconds for Tracker API calls

# 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)
TRACKER_ENTITIES_ENABLED=true             # Default: false - Register project/portfolio/goal tools (NOT covered by the queue restrictions above)

# 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

Control de Acceso a Colas

El acceso a las colas se puede delimitar en tres niveles, de grueso a fino:

  • TRACKER_LIMIT_QUEUES — lista de permitidos de claves de cola. Las colas fuera de la lista se tratan como no encontradas / no permitidas tanto para lecturas como para escrituras. Las claves se comparan ignorando mayúsculas y minúsculas, aquí y en TRACKER_READ_ONLY_QUEUES, por lo que dev y DEV nombran la misma cola. La única excepción son las herramientas de tablero: un tablero pertenece a la organización en lugar de a una cola, por lo que no se filtran y pueden nombrar una cola restringida en la configuración de un tablero.
  • TRACKER_READ_ONLY — cuando true, todas las herramientas de escritura se dan de baja, por lo que toda la instancia es de solo lectura.
  • TRACKER_READ_ONLY_QUEUES — lista de permitidos de solo lectura por cola. Las herramientas de escritura permanecen registradas, pero cualquier llamada de mutación (crear/actualizar/mover/comentar/registro de trabajo/enlace, creación de versión de cola) dirigida a una cola listada se rechaza, mientras que las lecturas siguen funcionando. Las colas no listadas aquí permanecen de lectura y escritura.

Las herramientas de proyecto/portafolio/objetivo están fuera de este modelo. Un proyecto, portafolio u objetivo no se puede mapear de manera confiable a una sola cola, por lo que ninguna de las tres configuraciones anteriores las restringe — ni las herramientas de lectura (project_get, project_find, *_get_comments, …) ni las herramientas de escritura (incluidas las de comentarios y listas de verificación). Habilitarlas otorga acceso a nivel de organización a esas entidades para cualquier persona que pueda alcanzar el servidor. Por esta razón son opt-in: se registran solo cuando TRACKER_ENTITIES_ENABLED=true (por defecto false), lo que también mantiene el manifiesto de herramientas pequeño para implementaciones que no las necesitan. TRACKER_READ_ONLY aún se aplica: da de baja las herramientas de escritura de entidades junto con todas las demás herramientas de escritura.

Esto permite que una sola instancia sea de lectura y escritura en algunas colas y de solo lectura en otras al mismo tiempo — por ejemplo, TRACKER_LIMIT_QUEUES=DEV,MGMT junto con TRACKER_READ_ONLY_QUEUES=MGMT da acceso completo a DEV y visibilidad de solo lectura a MGMT. Esto es especialmente útil para una puerta de enlace MCP compartida donde los usuarios finales llegan a Tracker solo a través del servidor y nunca tienen el token sin procesar ellos mismos.

Estas verificaciones son salvaguardas dentro del proceso. Para clientes que tienen el token de Tracker sin procesar directamente, los límites reales también deben aplicarse en el propio token.

Implementación con Docker

Uso de la Imagen Precompilada (Recomendado)

La imagen usa por defecto TRANSPORT=stdio, que se comunica a través de la entrada/salida estándar del contenedor y no abre ningún puerto. Establezca TRANSPORT=streamable-http para los ejemplos a continuación, donde el servidor se alcanza a través de HTTP; para un cliente stdio, ejecute el contenedor con -i y sin -p en su lugar (consulte los ejemplos de Configuración del Cliente MCP).

# Using environment file (it must set TRANSPORT=streamable-http)
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 \
           -e TRANSPORT=streamable-http \
           -p 8000:8000 \
           ghcr.io/aikts/yandex-tracker-mcp:latest

Construcción de la Imagen Localmente

docker build -t yandex-tracker-mcp .

Docker Compose

Uso de la imagen precompilada:

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}
      - TRANSPORT=streamable-http

Construcción local:

services:
  mcp-tracker:
    build: .
    ports:
      - "8000:8000"
    environment:
      - TRACKER_TOKEN=${TRACKER_TOKEN}
      - TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
      - TRANSPORT=streamable-http

Configuración de Desarrollo

# 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

Licencia

Este proyecto está licenciado bajo los términos especificados en el archivo LICENSE.

Soporte

Para problemas y preguntas: