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
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_IDmás adelante para organizaciones gestionadas por Yandex Cloud - Organización de Yandex 360: Usa la variable de entorno
TRACKER_ORG_IDmá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
- Descarga el archivo
*.mcpbdesde GitHub Releases. - Haz doble clic en el archivo descargado para instalarlo en Claude Desktop.

- Proporciona tu token OAuth de Yandex Tracker cuando se te solicite.

- 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 TrackerTRACKER_IAM_TOKEN- Tu token IAMTRACKER_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 CloudTRACKER_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 usanTRACKER_CLOUD_ORG_ID; en Yandex 360, reemplaza esa clave conTRACKER_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.jsonen 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.jsonen 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
uvxesté 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
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
queues_get_all | Cada cola que el token puede ver; devuelve {values, hits, pages} | fields, page (omite para recorrer cada página), per_page |
queue_get_tags | Las etiquetas definidas en la cola | queue_id (una clave como "SOMEPROJECT") |
queue_get_versions | Las versiones de la cola, con fechas y estado | queue_id |
queue_get_components | Los 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 nombres | queue_id |
queue_create_version | Crea una versión en la cola | queue_id, name, description, start_date, due_date (YYYY-MM-DD) |
queue_get_fields | Los campos configurados en la cola, incluidos los locales; schema.required marca los obligatorios | queue_id, include_local_fields |
queue_get_metadata | Nombre, descripción, tipo y prioridad predeterminados, más lo que expand solicite | queue_id, expand (all, projects, components, versions, types, team, workflows, fields, issueTypesConfig) |
- Lee
queue_get_fieldsantes deissue_create, pero no es el registro completo: los campos del sistema comoparentoestimationse pueden establecer sin aparecer allí, yget_global_fieldslista todos los campos que tiene la organización. queue_get_metadataconexpand: ["issueTypesConfig"]es de donde provienen las resoluciones válidas para cada tipo de issue -issue_closenecesita una de ellas.- Todos estos respetan
TRACKER_LIMIT_QUEUES.hits/pagesdequeues_get_allse 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.
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
component_get | Un componente con queue, lead, assignAuto y version | component_id (de queue_get_components o del components de un issue) |
component_create | Crea un componente en una cola | queue_id, name, description, lead (un inicio de sesión o uid), assign_auto |
component_update | Cambia nombre, descripción, responsable o indicador de asignación automática; los campos omitidos conservan su valor, clear_lead elimina el responsable | component_id, name, description, lead, assign_auto, clear_lead, version |
component_delete | Elimina un componente | component_id |
TRACKER_LIMIT_QUEUESyTRACKER_READ_ONLY_QUEUESse aplican a través de la cola del componente:component_updateycomponent_deleteleen el componente primero para conocerla, y un componente en una cola fuera deTRACKER_LIMIT_QUEUESse 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(predeterminadofalse), 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é hace | Proyectos | Portafolios | Objetivos |
|---|---|---|---|
| Una entidad por id o shortId | project_get | portfolio_get | goal_get |
Búsqueda por subcadena de nombre y/o filtros de campo; devuelve {values, hits, pages} | project_find | portfolio_find | goal_find |
Una página de comentarios; devuelve {comments, next_cursor} | project_get_comments | portfolio_get_comments | goal_get_comments |
| Crear, devolviendo la entidad | project_create | portfolio_create | goal_create |
| Cambiar cualquier campo que la creación acepte | project_update | portfolio_update | goal_update |
Eliminarla, y con with_board su tablero también: los objetivos no tienen tablero | project_delete | portfolio_delete | goal_delete |
| Añadir un comentario | project_add_comment | portfolio_add_comment | goal_add_comment |
| Editar un comentario | project_update_comment | portfolio_update_comment | goal_update_comment |
| Eliminar un comentario | project_delete_comment | portfolio_delete_comment | goal_delete_comment |
| Añadir un elemento de lista de verificación | project_add_checklist_item | portfolio_add_checklist_item | - |
| Editar un elemento de lista de verificación, dejando los campos que omitas como están | project_update_checklist_item | portfolio_update_checklist_item | - |
| Mover un elemento de lista de verificación antes de otro | project_move_checklist_item | portfolio_move_checklist_item | - |
| Eliminar un elemento de lista de verificación | project_delete_checklist_item | portfolio_delete_checklist_item | - |
| Editar varios elementos existentes por id | project_update_checklist | portfolio_update_checklist | - |
| Eliminar toda la lista de verificación | project_delete_checklist | portfolio_delete_checklist | - |
- Argumentos. Las lecturas toman
entity_idyfields; las herramientas*_findtomaninput,filter,order_by,order_asc,root_only,page,per_page. Crear y actualizar tomansummary(obligatorio al crear),description,lead,team_users,clients,followers,start(los objetivos no tienen),end,tags,entity_status,parent_entity,team_accessylinks, y actualizar tambiéncommentyversion(bloqueo optimista). Cada herramienta toma el mismo selectorfieldsy devuelve la entidad. - Los
linksse 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 elkeyResultItemsde un objetivo: los dos últimos son de solo lectura. Los objetivos usan sus propios valores deentityStatus(draft,according_to_plan,at_risk,blocked,achieved,partially_achieved,not_achieved,exceeded,cancelled). Los cambios masivos no son compatibles.
Gestión de Usuarios
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
users_get_all | Una página de los usuarios de la organización; devuelve {values, hits, pages} | page, per_page, fields |
user_get | Un usuario por login o uid | user_id ("john.doe" o "12345") |
user_get_current | El usuario al que pertenece el token actual | - |
users_search | Encontrar usuarios por login, correo electrónico o nombre real | login_or_email_or_name |
users_searchcoincide 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_alles la última cuandopagees igual apages.
Gestión de Campos
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
get_global_fields | Cada 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
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
get_statuses | Cada estado de problema que la organización define | - |
get_issue_types | Cada tipo de problema, para el argumento type de issue_create / issue_update | - |
get_priorities | Cada prioridad, con id, key, name y order | - |
get_resolutions | Cada 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
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
issue_templates_get_all | Las 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_get | Una plantilla de problema por id | template_id |
comment_templates_get_all | Las plantillas de comentarios, con el texto de template y su summonees / maillistSummonees | queue, page, per_page |
comment_template_get | Una plantilla de comentario por id | template_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_createyissue_add_commentno tomantemplate_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 propiodescriptionde la plantilla describe la plantilla. queuedevuelve las plantillas de esa cola más las vinculadas a ninguna cola, que son utilizables en todas partes.TRACKER_LIMIT_QUEUESaplica: 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
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
boards_get_all | Los tableros ágiles de la organización; devuelve {boards, next_cursor} | queue, fields, cursor (el next_cursor anterior), per_page |
board_get | Un tablero con autoFilterSettings (lo que recopila), estimateBy, useRanking y su calendar de trabajo | board_id, fields |
board_get_columns | Las columnas del tablero con los estados de problema que caen en cada una | board_id |
board_get_sprints | Los sprints del tablero con estado (draft, in_progress, released, archived) y fechas planificadas/reales | board_id, fields |
- Un tablero no tiene cola propia, por lo que
queuese 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 conissues_findy mira su campoboards. - Los tableros pertenecen a la organización, no a una cola, por lo que
TRACKER_LIMIT_QUEUESno los filtra: solo se verifica el argumentoqueuedeboards_get_all, y lo que estas herramientas devuelven puede nombrar colas restringidas. - Un tablero no-scrum no tiene sprints y
board_get_sprintsse rechaza para él. Elidde sprint que devuelve es lo queissue_create/issue_updatetoman.
Operaciones de Problemas
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
issue_get | Un problema por clave: el registro completo, incluido el version actual | issue_id, include_description |
issue_get_url | La URL web de un problema | issue_id |
issue_get_comments | Una página de comentarios, del más antiguo al más reciente; devuelve {comments, next_cursor} | issue_id, cursor, per_page, fields |
issue_add_comment | Añadir un comentario; summonees es lo que notifica a un usuario, un @login en el texto no notifica a nadie | issue_id, text, summonees, maillist_summonees, markup_type, is_add_to_followers |
issue_update_comment | Editar un comentario | issue_id, comment_id, text, summonees, maillist_summonees |
issue_delete_comment | Eliminar un comentario | issue_id, comment_id |
issue_get_links | Enlaces a problemas relacionados, bloqueantes y duplicados | issue_id |
issue_add_link | Vincular dos problemas | issue_id, relationship, issue |
issue_delete_link | Eliminar un enlace | issue_id, link_id (de issue_get_links) |
issue_get_worklogs | El tiempo registrado en uno o más problemas | issue_ids, fields |
issue_add_worklog | Registrar tiempo invertido | issue_id, duration (ISO-8601, PT1H30M), comment, start |
issue_update_worklog | Editar una entrada de registro de trabajo | issue_id, worklog_id, duration, comment, start |
issue_delete_worklog | Eliminar una entrada de registro de trabajo | issue_id, worklog_id |
issue_get_attachments | Metadatos de adjuntos | issue_id, fields |
issue_get_checklist | La lista de verificación, con los ids de elementos que las herramientas de escritura necesitan | issue_id |
issue_add_checklist_items | Añadir elementos en orden, creando la lista de verificación si no hay ninguna | issue_id, items (text, checked, assignee, deadline) |
issue_update_checklist_item | Cambiar un elemento; los campos que omitas conservan su valor | issue_id, checklist_item_id, text, checked, assignee, deadline, clear_assignee, clear_deadline |
issue_delete_checklist_item | Eliminar un elemento | issue_id, checklist_item_id |
issue_get_transitions | Las transiciones de estado disponibles ahora mismo, con sus ids | issue_id |
issue_execute_transition | Ejecutar una transición, devolviendo las transiciones disponibles después | issue_id, transition_id, comment, fields |
issue_close | Encontrar una transición a un estado final y ejecutarla con una resolución | issue_id, resolution_id, comment, fields |
issue_get_changelog | Ediciones de campos, transiciones de estado, cambios de comentarios y disparadores activados; devuelve {entries, next_cursor} | issue_id, cursor, per_page, field, type |
issue_create | Crear un problema, devolviéndolo | queue, summary, type, description, markup_type, assignee, priority, parent, sprint, followers, components, tags, project, fields |
issue_update | Cambiar cualquiera de esos campos; los que omitas permanecen como están | issue_id, version, y los argumentos que issue_create toma |
issue_move | Mover 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 |
versioncaduca por sí solo. Los disparadores de cola y la automatización se ejecutan justo después deissue_createy lo actualizan, por lo que la versión que devuelve suele estar ya desactualizada. Vuelve a leerlo conissue_getinmediatamente antes deissue_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
idy/okey, o —paratype,priorityyparent— la clave o el id simple.componentsacepta{"id": ...}o{"name": ...}, ycomponents/followersreemplazan la lista actual en lugar de agregar a ella. Cualquier cosa sin un argumento dedicado va al mapafields, con la clave del campoiddequeue_get_fields; una entrada allí anula el argumento dedicado, y unnullexplícito limpia el campo. - Las transiciones no se adivinan.
issue_execute_transitionsolo toma ids deissue_get_transitions, y antes deissue_closelee eltypedel problema conissue_gety las resoluciones válidas para ese tipo dequeue_get_metadataconexpand: ["issueTypesConfig"]— cada tipo tiene su propio conjunto. Donde el cliente admite la elicitación,issue_movepide 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
| Herramienta | Qué hace | Argumentos clave |
|---|---|---|
issues_find | Busca problemas con Lenguaje de Consulta de Yandex Tracker; devuelve {values, hits, pages} | query, fields, include_description, page, per_page |
issues_count | Cuántos problemas coinciden con una consulta; devuelve {"count": N} | query |
fieldsusa la ortografía propia de Tracker (storyPoints, nostory_points) y acepta cualquier nombre de campo, incluidos los locales de una cola y los campos personalizados de la organización — pasa el campoiddequeue_get_fields. Un nombre que Tracker no conoce se descarta silenciosamente.include_descriptionse ignora cuandodescriptionestá listado enfields: nombrarlo allí es una solicitud explícita para ello.per_pagetiene 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:
- Registro del Cliente: Tu cliente MCP se registra con el servidor para obtener credenciales de cliente
- Autorización: Los usuarios son redirigidos a Yandex OAuth para autenticarse
- Intercambio de Tokens: El servidor intercambia códigos de autorización por tokens de acceso
- Acceso a la API: Los clientes usan tokens de portador para todas las solicitudes de API
- 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
- Ve a Yandex OAuth y crea una nueva aplicación
- Establece la URL de devolución de llamada a:
{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback - Solicita los siguientes permisos:
tracker:read- Permisos de lectura para Trackertracker:write- Permisos de escritura para Tracker
- Guarda tu ID de Cliente y Secreto de Cliente
OAuth vs Autenticación con Token Estático
| Característica | OAuth | Token Estático |
|---|---|---|
| Seguridad | Tokens dinámicos con caducidad | Tokens estáticos de larga duración |
| Experiencia de Usuario | Flujo de inicio de sesión interactivo | Configuración única |
| Gestión de Tokens | Renovación automática | Rotación manual |
| Control de Acceso | Autenticación por usuario | Token compartido |
| Complejidad de Configuración | Requiere configuración de la aplicación OAuth | Configuració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:
- Admitir el flujo de código de autorización OAuth 2.0
- Manejar la renovación de tokens cuando caduquen los tokens de acceso
- 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_STOREsolo afecta el almacenamiento de datos OAuth; el caché de herramientas usaTOOLS_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
-
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
-
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
- Cuando el middleware OAuth de MCP no proporciona un token, el servidor puede leer un token OAuth de Yandex del encabezado
-
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)
-
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)
-
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 enTRACKER_READ_ONLY_QUEUES, por lo quedevyDEVnombran 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— cuandotrue, 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 cuandoTRACKER_ENTITIES_ENABLED=true(por defectofalse), lo que también mantiene el manifiesto de herramientas pequeño para implementaciones que no las necesitan.TRACKER_READ_ONLYaú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:
- Revise la documentación de la API de Yandex Tracker
- Envíe problemas en https://github.com/aikts/yandex-tracker-mcp/issues