关于 yandex-tracker-mcp
yandex-tracker-mcp 是供 AI 助手操作 Yandex Tracker 的 MCP 服务,涵盖问题、队列、实体管理和查询搜索,并提供访问限制及可选 Redis 缓存。
主要功能
- 01创建、更新和流转问题
- 02管理队列、字段和版本
- 03使用 Yandex Tracker Query Language 搜索
- 04管理项目、组合和目标
- 05OAuth 2.0 与令牌认证
- 06可选 Redis 缓存和队列限制
适用场景
- 01通过 AI 助手创建或更新 Tracker 问题
- 02使用复杂筛选和排序查找问题
- 03查看和管理项目实体
- 04将助手访问范围限制在指定队列
MCP 相关
通过 MCP 工具向客户端提供 Yandex Tracker 操作,包括问题、队列、实体和搜索功能。支持 stdio、HTTP 和已弃用的 SSE 传输方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/aponkratov/yandex-tracker-mcp:0.8.2本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/aponkratov/yandex-tracker-mcp:0.8.2stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Yandex Tracker MCP 服务
mcp-name: io.github.aikts/yandex-tracker-mcp
一款功能全面的模型上下文协议(MCP)服务,可让 AI 助手与 Yandex Tracker API 交互。该服务提供安全且经过身份验证的访问,可处理 Yandex Tracker 任务、队列、评论、工时记录和搜索功能,并可选用 Redis 缓存以提升性能。
俄语文档请见此处 / Документация на русском языке доступна здесь。
功能
- 完整的队列管理:列出并访问所有可用的 Yandex Tracker 队列,支持分页、标签检索和详细元数据
- 用户管理:获取用户账户信息,包括登录详情、电子邮件地址、许可证状态和组织数据
- 完整的任务生命周期:创建、读取、更新和管理任务,支持自定义字段、附件和工作流转换
- 状态工作流管理:执行状态转换、设置解决方案以关闭任务,并处理复杂工作流
- 字段管理:访问全局字段、队列专属本地字段、状态、任务类型、优先级和解决方案
- 高级查询语言:全面支持 Yandex Tracker 查询语言,可进行复杂筛选、排序和日期函数操作
- 性能缓存:可选的 Redis 缓存层,可提升响应速度
- 安全控制:可配置队列访问限制并安全处理令牌
- 多种传输选项:支持 stdio、SSE(已弃用)和 HTTP 传输方式,便于灵活集成
- OAuth 2.0 身份验证:基于动态令牌的身份验证,可自动刷新令牌,作为静态 API 令牌的替代方案
- 组织支持:兼容标准组织 ID 和云组织 ID
组织 ID 配置
根据你的 Yandex 组织类型选择以下其中一种:
- Yandex Cloud 组织:对于由 Yandex Cloud 管理的组织,之后使用
TRACKER_CLOUD_ORG_ID环境变量 - Yandex 360 组织:对于 Yandex 360 组织,之后使用
TRACKER_ORG_ID环境变量
你可以在 Yandex Tracker URL 或组织设置中找到组织 ID。
MCP 客户端配置
在 Claude Desktop 中安装扩展
Yandex Tracker MCP Server 可在 Claude Desktop 中一键安装为扩展。
安装
- 从 GitHub Releases 下载
*.mcpb文件。 - 双击下载的文件,在 Claude Desktop 中安装。

- 根据提示提供你的 Yandex Tracker OAuth 令牌。

- 确保已启用扩展,即可使用此 MCP 服务。
手动安装
前提条件
- 已全局安装 uv
- 拥有具备相应权限的有效 Yandex Tracker API 令牌
以下部分介绍如何为不同的 AI 客户端配置 MCP 服务。你可以使用 uvx yandex-tracker-mcp@latest,也可以使用 Docker 镜像 ghcr.io/aikts/yandex-tracker-mcp:latest。两者都需要设置以下环境变量:
- 身份验证(任选其一):
TRACKER_TOKEN- 你的 Yandex Tracker OAuth 令牌TRACKER_IAM_TOKEN- 你的 IAM 令牌TRACKER_SA_KEY_ID、TRACKER_SA_SERVICE_ACCOUNT_ID、TRACKER_SA_PRIVATE_KEY- 服务账号凭据
TRACKER_CLOUD_ORG_ID或TRACKER_ORG_ID- 你的 Yandex Cloud(或 Yandex 360)组织 ID
Claude Desktop
配置文件路径:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
使用 uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
使用 Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Claude Code
使用 uvx:
claude mcp add yandex-tracker uvx yandex-tracker-mcp@latest \
-e TRACKER_TOKEN=your_tracker_token_here \
-e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here \
-e TRACKER_ORG_ID=your_org_id_here \
-e TRANSPORT=stdio
使用 Docker:
claude mcp add yandex-tracker docker "run --rm -i -e TRACKER_TOKEN=your_tracker_token_here -e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here -e TRACKER_ORG_ID=your_org_id_here -e TRANSPORT=stdio ghcr.io/aikts/yandex-tracker-mcp:latest"
Cursor
配置文件路径:
- 项目专用:项目目录中的
.cursor/mcp.json - 全局:
~/.cursor/mcp.json
使用 uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
使用 Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Windsurf
配置文件路径:
~/.codeium/windsurf/mcp_config.json
访问路径:Windsurf 设置 → Cascade 选项卡 → Model Context Protocol (MCP) Servers → “View raw config”
使用 uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
使用 Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
Zed
配置文件路径:
~/.config/zed/settings.json
访问方式:按 Cmd+,(macOS)或 Ctrl+,(Linux/Windows),或打开命令面板并选择“zed: open settings”
**注意:**需要使用支持 MCP 的 Zed Preview 版本。
使用 uvx:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}
使用 Docker:
{
"context_servers": {
"yandex-tracker": {
"source": "custom",
"command": {
"path": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
}
GitHub Copilot (VS Code)
配置文件路径:
- 工作区:项目目录中的
.vscode/mcp.json - 全局:VS Code
settings.json
选项 1:工作区配置(出于安全考虑,推荐使用)
创建 .vscode/mcp.json:
使用 uvx:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}
使用 Docker:
{
"inputs": [
{
"type": "promptString",
"id": "tracker-token",
"description": "Yandex Tracker Token",
"password": true
},
{
"type": "promptString",
"id": "cloud-org-id",
"description": "Yandex Cloud Organization ID"
},
{
"type": "promptString",
"id": "org-id",
"description": "Yandex Tracker Organization ID (optional)"
}
],
"servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "${input:tracker-token}",
"TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
"TRACKER_ORG_ID": "${input:org-id}",
"TRANSPORT": "stdio"
}
}
}
}
选项 2:全局配置
添加到 VS Code settings.json:
使用 uvx:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
使用 Docker:
{
"github.copilot.chat.mcp.servers": {
"yandex-tracker": {
"type": "stdio",
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
其他兼容 MCP 的客户端
对于其他兼容 MCP 的客户端,请使用标准的 MCP 服务配置格式:
使用 uvx:
{
"mcpServers": {
"yandex-tracker": {
"command": "uvx",
"args": ["yandex-tracker-mcp@latest"],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
使用 Docker:
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TRACKER_TOKEN",
"-e", "TRACKER_CLOUD_ORG_ID",
"-e", "TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "your_tracker_token_here",
"TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here",
"TRACKER_ORG_ID": "your_org_id_here"
}
}
}
}
重要说明:
- 将占位值替换为你的实际凭据
- 配置更改后重启 AI 客户端
- 确保已安装
uvx,且它位于系统 PATH 中 - 在生产环境中,建议使用环境变量,而不是将令牌硬编码
可用的 MCP 工具
该服务通过 MCP 协议提供以下工具:
队列管理
-
queues_get_all:列出所有可用的 Yandex Tracker 队列- 参数:
fields(可选):要包含在响应中的字段(例如,["key", "name"])。仅选择所需字段有助于优化上下文窗口的使用。如果未指定,则返回所有可用字段。page(可选):要返回的页码。如果未指定,则自动获取所有页面。per_page(可选):每页的项目数(默认值:100)
- 返回分页的队列信息,并可选择要包含的字段
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
queue_get_tags:获取指定队列的所有标签- 参数:
queue_id(字符串,队列键,例如 "SOMEPROJECT") - 返回指定队列中的可用标签列表
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
queue_get_versions:获取特定队列的所有版本- 参数:
queue_id(字符串,队列键,例如 "SOMEPROJECT") - 返回指定队列中的可用版本列表,包含名称、描述、日期和状态等详细信息
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
queue_create_version:在特定队列中创建新版本- 参数:
queue_id(字符串,必填):队列键,例如 "SOMEPROJECT"name(字符串,必填):版本名称description(字符串,可选):版本描述start_date(日期,可选):版本开始日期,格式为YYYY-MM-DDdue_date(日期,可选):版本截止日期,格式为YYYY-MM-DD
- 返回已创建的版本,包含名称、描述、日期和状态等详细信息
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
queue_get_fields:获取特定队列的字段- 参数:
queue_id(字符串,必填):队列键,例如 "SOMEPROJECT"include_local_fields(布尔值,可选,默认值:true):是否包含队列专属的本地字段
- 返回全局字段列表,以及可选的本地(队列专属)字段
- 当
include_local_fields为 true 时,并行请求以获取这两类字段 schema.required属性表示字段是否为必填项- 创建议题前,使用此工具查找可用字段和必填字段,然后通过
issue_create工具创建议题 - 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
queue_get_metadata:获取特定队列的详细元数据- 参数:
queue_id(字符串,必填):队列键,例如 "SOMEPROJECT"expand(字符串数组,可选):要在响应中展开的字段。可用选项:all、projects、components、versions、types、team、workflows、fields、issueTypesConfig
- 返回队列信息,包括名称、描述、默认类型/优先级,以及可选的展开数据
- 使用
expand: ["issueTypesConfig"]获取每种议题类型可用的解决方案(issue_close工具所需) - 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
项目、项目组合和目标
这些工具使用统一的 Yandex Tracker Entities API。entity_type 参数接受 project、portfolio 或 goal。
entity_get:通过id或数字shortId获取实体;还可请求其他fields或展开attachmentsentities_search:按名称子字符串或任意字段筛选条件搜索实体,支持字段选择、排序、仅筛选根实体,以及基于页码的分页entity_get_events:获取实体事件历史记录,并通过相对游标导航(from_id或selected)entity_create:创建实体;fields.summary为必填项,也可在同一请求中创建关联entity_update:更新实体字段、关联,并添加说明性评论;集合字段支持 Tracker 操作符,例如set、add和removeentity_delete:删除实体,并可选择删除其关联的看板entities_bulk_update:为多个同类型实体启动一次批量更新
常用字段键包括 summary、description、lead、teamUsers、clients、followers、start、end、tags、parentEntity、entityStatus 和 teamAccess。日期必须采用 Tracker API 所要求的格式。
当 TRACKER_READ_ONLY=true 时,无法使用写入工具。
看板和冲刺
boards_list:列出当前用户可用的所有看板board_get:根据看板 ID 获取看板列和自动筛选设置board_get_sprints:列出与看板关联的所有冲刺sprint_get:获取单个冲刺,包括状态、归档标记以及计划/实际日期 这些工具为只读工具。使用返回的迭代 ID,在issues_find中检索该迭代的问题。
已保存的筛选器
filter_get:按数字 ID 获取已保存的问题筛选器filter_find_issues:执行已保存的筛选器,并可控制分页参数和响应字段filter_create:通过 Tracker 查询或字段值条件创建已保存的筛选器filter_update:更新已保存筛选器的名称、条件、显示字段、排序、分组或文件夹
当 TRACKER_READ_ONLY=true 时,filter_create 和 filter_update 不可用。issues_find 和 issues_count 也接受 filter_id 作为 query 的替代项。
用户管理
-
users_get_all:获取组织中注册的用户账户信息- 参数:
per_page(可选):每页的用户数(默认值:50)page(可选):要返回的页码(默认值:1)
- 返回包含登录名、电子邮箱、许可证状态和组织详细信息的分页用户列表
- 包含用户元数据,例如外部状态、停用状态和通知偏好设置
- 参数:
-
user_get:按登录名或 UID 获取特定用户的信息- 参数:
user_id(字符串,用户登录名,如 "john.doe",或 UID,如 "12345") - 返回详细的用户信息,包括登录名、电子邮箱、许可证状态和组织详细信息
- 同时支持用户登录名和数字用户 ID,便于灵活识别用户
- 参数:
-
user_get_current:获取当前已认证用户的信息- 无需参数
- 返回与当前身份验证令牌关联的用户的详细信息
- 包含已认证用户的登录名、电子邮箱、显示名称和组织详细信息
-
users_search:根据登录名、电子邮箱或真实姓名(名、姓或两者)搜索用户- 参数:
login_or_email_or_name(字符串,要搜索的用户登录名、电子邮箱或真实姓名) - 如果有多个用户符合查询条件,则返回多个用户;如果只有一个用户符合条件,则返回该用户;如果没有匹配项,则返回空列表
- 对真实姓名使用模糊匹配,相似度阈值为 80%
- 登录名和电子邮箱的精确匹配优先于姓名模糊匹配
- 参数:
字段管理
get_global_fields:获取 Yandex Tracker 中所有可用的全局字段- 返回可用于问题的完整全局字段列表
- 包含字段架构、类型信息和配置
状态和类型管理
-
get_statuses:获取所有可用的问题状态- 返回可分配的完整问题状态列表
- 包含状态 ID、名称和类型信息
-
get_issue_types:获取所有可用的问题类型- 返回用于创建或更新问题的完整问题类型列表
- 包含类型 ID、名称和配置详情
-
get_priorities:获取所有可用的问题优先级- 返回可分配给问题的完整优先级列表
- 包含优先级键、名称和顺序信息
-
get_resolutions:获取所有可用的问题解决方案- 返回关闭问题时可使用的完整解决方案列表
- 包含解决方案键、名称、描述和顺序信息
问题操作
-
issue_get:按 ID 获取详细的问题信息- 参数:
issue_id(字符串,格式:"QUEUE-123")include_description(布尔值,可选,默认值:true):是否在结果中包含问题描述。描述可能很长,因此仅在需要时使用。
- 返回完整的问题数据,包括状态、受理人、描述等
- 参数:
-
issue_get_url:生成问题的网页 URL- 参数:
issue_id(字符串) - 返回:
https://tracker.yandex.ru/{issue_id}
- 参数:
-
issue_get_comments:获取问题的所有评论- 参数:
issue_id(字符串) - 返回:按时间顺序排列的评论列表及其元数据
- 参数:
-
issue_add_comment:为问题添加评论- 参数:
issue_id(字符串,必填,格式:"QUEUE-123")text(字符串,必填):评论文本(Tracker 支持 Markdown)summonees(字符串数组,可选):要召集的用户(登录名或 ID)。这是通过 API 提及/召集用户的方式(通知由此字段触发,而不是由文本中的@login触发)。maillist_summonees(字符串数组,可选):要召集的邮件列表(电子邮件地址)markup_type(字符串,可选):YFM(Markdown)使用mdis_add_to_followers(布尔值,可选,默认值:true):将评论作者添加到关注者
- 返回创建的评论对象
- 参数:
-
issue_update_comment:更新问题中的现有评论- 参数:
issue_id(字符串,必填,格式:"QUEUE-123")comment_id(整数,必填):评论 IDtext(字符串,必填):新评论文本(Tracker 支持 Markdown)summonees(字符串数组,可选):要召集的用户(登录名或 ID)maillist_summonees(字符串数组,可选):要召集的邮件列表(电子邮件地址)markup_type(字符串,可选):YFM(Markdown)使用md
- 返回更新后的评论对象
- 参数:
-
issue_delete_comment:删除问题中的评论- 参数:
issue_id(字符串,必填,格式:"QUEUE-123")comment_id(整数,必填):评论 ID
- 返回:
null(成功)
- 参数:
-
issue_add_link:在一个问题与另一个问题之间创建关联- 参数:
issue_id(字符串,必填,格式:"QUEUE-123"):当前问题relationship(字符串,必填):描述issue_id与关联问题之间关系的链接类型。可选值:relates、is dependent by、depends on、is subtask for、is parent task for、duplicates、is duplicated by、is epic of、has epicissue(字符串,必填):要关联的问题的 ID 或键(例如:"TEST-123")
- 返回创建的链接对象
- 参数:
-
issue_delete_link:删除一个问题与另一个问题之间的关联- 参数:
issue_id(字符串,必填,格式:"QUEUE-123")link_id(整数,必填):链接 ID(由issue_get_links返回)
- 返回:
null(成功)
- 参数:
-
issue_get_links:获取相关问题的链接- 参数:
issue_id(字符串) - 返回:指向相关、受阻或重复问题的链接
- 参数:
-
issue_get_worklogs:检索工时记录- 参数:
issue_ids(字符串数组,必填)start_date_from(日期,可选):工时开始日期的包含式下限(YYYY-MM-DD)start_date_to(日期,可选):工时开始日期的包含式上限(YYYY-MM-DD)timezone(字符串,可选,默认值UTC):比较start日期时使用的 IANA 时区(例如,Europe/Moscow)
- 获取每个问题的所有相对分页页面,并根据工时记录的
start字段(而非createdAt)进行筛选 - 返回 Tracker 提供的原样 ISO 8601 时长。按周计的值必须遵循 Tracker 的语义:
P6W表示 30 个工作日,而非 42 个日历日
- 参数:
-
issue_add_worklog:为问题添加工时记录(记录已投入的时间)- 参数:
issue_id(字符串,必填,格式:"QUEUE-123")duration(字符串,必填):ISO-8601 时长(例如,PT1H30M)comment(字符串,可选):工时记录评论start(日期时间,可选):工时开始日期时间(未提供时区时假定为 UTC)
- 返回创建的工时记录
- 参数:
-
issue_update_worklog:更新问题中的工作日志条目(耗时记录)- 参数:
issue_id(字符串,必填,格式:“QUEUE-123”)worklog_id(整数,必填):工作日志条目 IDduration(字符串,可选):ISO-8601 时长(例如PT1H30M)comment(字符串,可选):工作日志备注start(日期时间,可选):工作开始日期时间(未提供时区时默认使用 UTC)
- 返回更新后的工作日志条目
- 参数:
-
issue_delete_worklog:删除问题中的工作日志条目(耗时记录)- 参数:
issue_id(字符串,必填,格式:“QUEUE-123”)worklog_id(整数,必填):工作日志条目 ID
- 返回:
null(成功)
- 参数:
-
issue_get_attachments:获取问题的附件- 参数:
issue_id(字符串,格式:“QUEUE-123”) - 返回指定问题的附件列表及其元数据
- 参数:
-
issue_download_attachment:将附件下载为 MCP 内嵌二进制资源- 参数:
issue_get_attachments返回的issue_id、attachment_id和file_name - 强制执行
TRACKER_MAX_ATTACHMENT_BYTES传输限制
- 参数:
-
issue_upload_attachment:将 Base64 编码的内容上传为问题附件- 参数:
issue_id、file_name、content_base64和可选的mime_type - 当
TRACKER_READ_ONLY=true时不可用
- 参数:
-
issue_delete_attachment:按 ID 删除问题附件- 当
TRACKER_READ_ONLY=true时不可用
- 当
-
issue_get_checklist:获取问题的检查清单项- 参数:
issue_id(字符串,格式:“QUEUE-123”) - 返回检查清单项列表,包括文本、状态、经办人和截止日期信息
- 参数:
-
issue_get_transitions:获取问题可能的状态转换- 参数:
issue_id(字符串,格式:“QUEUE-123”) - 返回可对该问题执行的转换列表
- 每个转换都包含 ID、显示名称和目标状态信息
- 参数:
-
issue_get_changelog:获取问题的变更历史记录(变更日志)- 参数:
issue_id(字符串,必填,格式:“QUEUE-123”):问题键per_page(整数,可选,默认值:50):每页的条目数cursor(字符串,可选):上一次调用返回的next_cursor值;传入该值以获取下一页(游标分页)field(字符串,可选):按字段键筛选变更日志(例如status)type(字符串,可选):按变更类型筛选(例如,表示状态转换的IssueWorkflow)
- 返回一个对象,其中包含
entries(状态转换和字段编辑——包括谁在何时将哪些内容从from更改为to——以及备注变更和已执行的触发器)和next_cursor(将其作为cursor传回以获取下一页;没有更多页面时为null)
- 参数:
-
issue_execute_transition:执行问题的状态转换- 参数:
issue_id(字符串,必填,格式:“QUEUE-123”):问题键transition_id(字符串,必填):要执行的转换 ID。重要:必须是issue_get_transitions工具返回的 ID 之一comment(字符串,可选):执行转换时添加的备注fields(对象,可选):转换期间要设置的其他字段字典。常见字段包括用于关闭问题的resolution(例如,'fixed'、'wontFix')、用于重新分配问题的assignee等。
- 转换执行后,返回新状态下可用的转换列表
- 使用说明:必须先调用
issue_get_transitions获取可用转换,然后传入其中一个返回的转换 ID。不要使用任意转换 ID。
- 参数:
-
issue_close:使用解决方案关闭问题(便捷工具)- 参数:
issue_id(字符串,必填,格式:"QUEUE-123"):问题键resolution_id(字符串,必填):关闭问题时设置的解决方案 ID(例如:'fixed'、'wontFix'、'duplicate')comment(字符串,可选):关闭问题时添加的评论
- 自动查找一个流转到“已完成”状态的转换,并使用指定的解决方案执行该转换
- 返回新(已关闭)状态下可用的转换列表
- 使用说明:关闭前,必须:
- 调用
issue_get获取问题的type字段 - 使用
expand: ["issueTypesConfig"]调用get_queue_metadata,获取可用的解决方案 - 从与问题类型相匹配的
issueTypesConfig条目中选择解决方案——每种问题类型都有各自有效的解决方案集合
- 调用
- 参数:
-
issue_create:在队列中创建新问题- 参数:
queue(字符串,必填):创建问题的队列键(例如:'MYQUEUE')summary(字符串,必填):问题标题/摘要type(整数,可选):问题类型 ID(来自get_issue_types工具)description(字符串,可选):问题描述assignee(字符串或整数,可选):受指派人的登录名或 UIDpriority(字符串,可选):优先级键(来自get_priorities工具)fields(对象,可选):创建问题时设置的其他字段。重要:创建问题前,必须调用queue_get_fields获取可用字段(默认同时返回全局字段和本地字段)。schema.required=true的字段为必填项。使用字段的id属性作为此映射中的键(例如:{"fieldId": "value"})
- 返回新创建的问题对象,其中包含所有标准问题字段
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
issue_update:更新现有问题- 参数:
issue_id(字符串,必填,格式:"QUEUE-123"):要更新的问题键summary(字符串,可选):新的问题标题/摘要description(字符串,可选):新的问题描述markup_type(字符串,可选):描述文本的标记类型(YFM 标记请使用 'md')parent(IssueUpdateParent,可选):父问题引用,包含id(字符串)和/或key(字符串,例如:'QUEUE-123')sprint(IssueUpdateSprint 数组,可选):Sprint 分配项——对象数组,每个对象包含id(整数)字段type(IssueUpdateType,可选):问题类型,包含id(字符串)和/或key(字符串,例如:'bug'、'task')priority(IssueUpdatePriority,可选):优先级,包含id(字符串)和/或key(字符串,例如:'critical'、'normal')followers(IssueUpdateFollower 数组,可选):关注者——对象数组,每个对象包含id(字符串,用户 ID 或登录名)project(IssueUpdateProject,可选):项目,包含primary(整数,主项目短 ID)以及可选的secondary(整数数组)tags(字符串数组,可选):问题标签version(整数,可选):用于乐观锁定的问题版本——只会修改当前版本fields(对象,可选):要更新的其他字段。使用queue_get_fields查找可用字段。
- 返回更新后的问题对象,其中包含所有标准问题字段
- 只更新已提供的字段;未提供的字段保持不变
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
-
issue_move:将问题移动到其他队列- 参数:
issue_id(字符串,必填,格式:"QUEUE-123"):要移动的问题键queue(字符串,必填):目标队列键(例如,'MYQUEUE')notify(布尔值,可选,默认值为true):通知问题字段中提及的用户notify_author(布尔值,可选,默认值为false):通知问题作者move_all_fields(布尔值,可选,默认值为false):如果目标队列中存在匹配项,则保留版本、组件和项目;否则将其清除initial_status(布尔值,可选,默认值为false):将问题状态重置为初始值(当目标队列使用不同的工作流时使用)
- 返回更新后的问题对象,其在目标队列中具有新的键(例如,
TASKS-1→NEWQUEUE-42) - 如果 MCP 客户端支持交互式确认,系统会提示用户在执行移动前确认这些布尔标志;拒绝或取消都会中止移动。不支持交互式确认的客户端会使用传入的值继续执行
- 遵循
TRACKER_LIMIT_QUEUES限制
- 参数:
搜索与发现
-
issues_find:使用 Yandex Tracker Query Language 搜索问题- 参数:
query(可选):使用 Yandex Tracker Query Language 语法的查询字符串filter_id(可选):已保存的筛选器 ID;不能与query同时使用include_description(布尔值,可选,默认值:false):是否在问题结果中包含问题描述。描述可能很长,因此仅在需要时使用。fields(字符串列表,可选):要包含在响应中的字段。只选择所需字段有助于优化上下文窗口用量。如果未指定,则返回所有可用字段。page(可选):分页页码(默认值:1)per_page(可选):每页项目数(默认值:100)。如果结果超出上下文窗口,可能会减少。
- 返回每页指定数量的问题,最多不超过该数量
- 参数:
-
issues_count:使用 Yandex Tracker Query Language 统计符合查询条件的问题数量- 参数:
query(可选):使用 Yandex Tracker Query Language 语法的查询字符串filter_id(可选):已保存的筛选器 ID;不能与query同时使用
- 返回符合指定条件的问题总数
- 支持查询语言的所有功能:字段筛选、日期函数、逻辑运算符和复杂表达式
- 适用于分析、报告,以及在不检索完整问题数据的情况下了解问题分布
- 参数:
http 传输
MCP 服务还可以以 streamable-http 模式运行,用于基于 Web 的集成,或在 stdio 传输不适用时使用。
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
启动 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
如果连接到 MCP Server 时使用以下格式,则可以跳过 TRACKER_CLOUD_ORG_ID 或 TRACKER_ORG_ID 的配置(以下是 Claude Code 的示例):
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?cloudOrgId=your_cloud_org_id&"
或
claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?orgId=org_id&"
如果选择使用 OAuth 2.0 身份验证(见下文),也可以跳过全局 TRACKER_TOKEN 环境变量的配置。
OAuth 2.0 身份验证
Yandex Tracker MCP Server 支持 OAuth 2.0 身份验证,可作为静态 API 令牌的安全替代方案。配置后,服务将充当 OAuth 提供方,为 MCP 客户端与 Yandex OAuth 服务之间的身份验证提供支持。
OAuth 的工作原理
MCP 服务实现了标准的 OAuth 2.0 授权码流程:
- 客户端注册:你的 MCP 客户端向服务注册以获取客户端凭据
- 授权:用户会被重定向到 Yandex OAuth 进行身份验证
- 令牌交换:服务将授权码交换为访问令牌
- API 访问:客户端使用持有者令牌发送所有 API 请求
- 令牌刷新:令牌过期后,无需重新进行身份验证即可刷新
MCP Client → MCP Server → Yandex OAuth → User Authentication
↑ ↓
└────────── Access Token ←─────────────────┘
OAuth 配置
要启用 OAuth 身份验证,请设置以下环境变量:
# 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
设置 Yandex OAuth 应用
- 前往 Yandex OAuth 并创建一个新应用
- 将回调 URL 设置为:
{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback - 请求以下权限:
tracker:read- Tracker 的读取权限tracker:write- Tracker 的写入权限
- 保存你的 Client ID 和 Client Secret
OAuth 与静态令牌身份验证
| 特性 | OAuth | 静态令牌 |
|---|---|---|
| 安全性 | 会过期的动态令牌 | 长期有效的静态令牌 |
| 用户体验 | 交互式登录流程 | 一次性配置 |
| 令牌管理 | 自动刷新 | 手动轮换 |
| 访问控制 | 按用户进行身份验证 | 共享令牌 |
| 设置复杂度 | 需要设置 OAuth 应用 | 简单的令牌配置 |
OAuth 模式的限制
- 目前,OAuth 模式要求 MCP 服务可通过公网访问,以接收回调 URL 请求
- OAuth 模式最适合支持基于 Web 的身份验证流程的交互式客户端
在 MCP 客户端中使用 OAuth
启用 OAuth 后,MCP 客户端需要:
- 支持 OAuth 2.0 授权码流程
- 在访问令牌过期时处理令牌刷新
- 安全存储刷新令牌,以便持续进行身份验证
注意:目前并非所有 MCP 客户端都支持 OAuth 身份验证。请查看客户端文档,确认其是否兼容 OAuth。
Claude Code 的配置示例:
claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s user
OAuth 数据存储
MCP 服务支持两种不同的 OAuth 数据存储后端(客户端注册信息、访问令牌、刷新令牌和授权状态):
InMemory 存储(默认)
内存存储会将所有 OAuth 数据保存在服务内存中。这是默认选项,无需额外配置。
特性:
- 持久性:服务重启时数据会丢失
- 性能:数据存储在内存中,因此访问速度非常快
- 可扩展性:仅限单个服务实例
- 设置:无需额外依赖
- 适用场景:开发、测试,或可以接受重启后丢失 OAuth 会话的单实例部署
配置:
OAUTH_STORE=memory # Default value, can be omitted
Redis 存储
Redis 存储使用 Redis 数据库持久化 OAuth 数据。这可确保 OAuth 会话在服务器重启后仍然有效,并支持多实例部署。
特性:
- 持久性:数据在服务器重启后仍会保留
- 性能:访问速度快,但存在网络开销
- 可扩展性:支持多个服务器实例共享同一 Redis 数据库
- 设置:需要安装和配置 Redis 服务
- 适用场景:生产环境部署、高可用性配置,或需要持久保存 OAuth 会话的场景
配置:
# 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
存储行为:
- 客户端信息:持久化存储
- OAuth 状态:使用 TTL(生存时间)存储,以确保安全
- 授权码:使用 TTL 存储,并在使用后自动清理
- 访问令牌:根据令牌有效期自动过期
- 刷新令牌:持久化存储,直到被撤销
- 键命名空间:使用
oauth:*前缀,避免与 Redis 中的其他数据冲突
令牌加密(Redis 存储必需)
使用 Redis 存储时,必须配置加密,以保护静态存储的 OAuth 令牌。令牌值使用 Fernet(AES-128)加密,Redis 键使用 SHA-256 哈希而非原始令牌,从而防止 Redis 遭到入侵时令牌泄露。
生成加密密钥:
python3 -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"
配置:
# 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>
密钥轮换可实现无缝更新:先添加新密钥,等待旧令牌过期,然后移除旧密钥。
重要说明:
- 两种存储方式都使用与工具缓存系统相同的 Redis 连接设置
- 使用 Redis 存储时,请确保 Redis 实例已妥善保护且可访问
OAUTH_STORE设置仅影响 OAuth 数据存储;工具缓存使用TOOLS_CACHE_ENABLED- Redis 存储使用 JSON 序列化,以便提升跨语言兼容性和调试体验
身份验证
Yandex Tracker MCP Server 支持多种身份验证方式,并设有明确的优先级顺序。服务器会按照以下层级使用第一个可用的身份验证方式:
身份验证优先级顺序
-
动态 OAuth 令牌(最高优先级)
- 启用 OAuth 后,用户通过 OAuth 流程完成身份验证时使用
- 按用户会话动态获取和刷新令牌
- 同时支持标准 Yandex OAuth 和 Yandex Cloud 联合 OAuth
- 必需的环境变量:
OAUTH_ENABLED=true、OAUTH_CLIENT_ID、OAUTH_CLIENT_SECRET、MCP_SERVER_PUBLIC_URL - 联合 OAuth 的附加变量:
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth、OAUTH_TOKEN_TYPE=Bearer、OAUTH_USE_SCOPES=false
-
透传 Bearer OAuth 令牌
- 当 MCP OAuth 中间件未提供令牌时,服务器可以从传入的
Authorization: Bearer <token>标头中读取 Yandex OAuth 令牌 - 适用于受信任的反向代理或网关之后:代理或网关负责验证用户身份、解析其已存储的 Yandex OAuth 令牌,并在每个请求中注入该令牌
- OAuth 模式已启用且处于活动状态时,MCP OAuth 令牌仍具有优先权
- 当 MCP OAuth 中间件未提供令牌时,服务器可以从传入的
-
静态 OAuth 令牌
- 通过环境变量提供的传统 OAuth 令牌
- 所有请求共用同一个令牌
- 必需的环境变量:
TRACKER_TOKEN(你的 OAuth 令牌)
-
静态 IAM 令牌
- 用于服务间身份验证的 IAM(身份与访问管理)令牌
- 适用于自动化系统和 CI/CD 流水线
- 必需的环境变量:
TRACKER_IAM_TOKEN(你的 IAM 令牌)
-
动态 IAM 令牌(最低优先级)
- 使用服务账号凭据自动获取
- 自动获取并刷新令牌
- 必需的环境变量:
TRACKER_SA_KEY_ID、TRACKER_SA_SERVICE_ACCOUNT_ID、TRACKER_SA_PRIVATE_KEY
身份验证场景
场景 1:使用动态令牌的 OAuth(推荐用于交互式使用)
# 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
场景 2:静态 OAuth 令牌(简单设置)
# OAuth token
TRACKER_TOKEN=your_oauth_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
场景 3:反向代理后的 Bearer 令牌透传
在以下情况下使用此模式:受信任的网关负责处理用户身份验证、查找用户的 Yandex OAuth 令牌,并在请求头中携带该令牌将请求转发到 MCP 服务:
Authorization: Bearer <user_yandex_oauth_token>
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
仅当 MCP OAuth 中间件未为请求提供访问令牌时,才会使用此透传令牌。在启用了 OAuth 且存在有效 MCP OAuth 会话的部署中,优先使用 MCP OAuth 令牌。
场景 4:静态 IAM 令牌
# IAM token
TRACKER_IAM_TOKEN=your_iam_token
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # or TRACKER_ORG_ID
场景 5:使用服务账号的动态 IAM 令牌
# 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
场景 6:面向 OIDC 应用的联合 OAuth(高级)
# 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
此配置支持通过 Yandex Cloud OIDC 应用进行身份验证,这是 Yandex Cloud 中联合账号所必需的。联合用户通过所属组织的身份提供方(IdP)进行身份验证,并使用此 OAuth 流程访问 Yandex Tracker API。
重要说明
- 服务会按照上述顺序检查身份验证方法
- 同一时间只会使用一种身份验证方法
- 在生产环境中,建议使用动态令牌(OAuth 或 IAM),以提高安全性
- IAM 令牌的有效期比 OAuth 令牌短,可能需要更频繁地续期
- 使用服务账号时,请确保该账号拥有 Yandex Tracker 所需的权限
配置
环境变量
# Authentication (use one of the following methods)
# Method 1: OAuth Token
TRACKER_TOKEN=your_yandex_tracker_oauth_token
# Method 2: IAM Token
TRACKER_IAM_TOKEN=your_iam_token
# Method 3: Service Account (for dynamic IAM token)
TRACKER_SA_KEY_ID=your_key_id # Service account key ID
TRACKER_SA_SERVICE_ACCOUNT_ID=your_sa_id # Service account ID
TRACKER_SA_PRIVATE_KEY=your_private_key # Service account private key
# Organization Configuration (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # For Yandex Cloud organizations
TRACKER_ORG_ID=your_org_id # For Yandex 360 organizations
# API Configuration (optional)
TRACKER_API_BASE_URL=https://api.tracker.yandex.net # Default: https://api.tracker.yandex.net
TRACKER_MAX_ATTACHMENT_BYTES=10485760 # Default: 10 MiB MCP transfer limit
# Security - Restrict access to specific queues (optional)
TRACKER_LIMIT_QUEUES=PROJ1,PROJ2,DEV # Comma-separated queue keys
# 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 - Limit OAuth to read-only permissions
Docker 部署
使用预构建镜像(推荐)
# Using environment file
docker run --env-file .env -p 8000:8000 ghcr.io/aikts/yandex-tracker-mcp:latest
# With inline environment variables
docker run -e TRACKER_TOKEN=your_token \
-e TRACKER_CLOUD_ORG_ID=your_org_id \
-p 8000:8000 \
ghcr.io/aikts/yandex-tracker-mcp:latest
在本地构建镜像
docker build -t yandex-tracker-mcp .
Docker Compose
使用预构建镜像:
version: '3.8'
services:
mcp-tracker:
image: ghcr.io/aikts/yandex-tracker-mcp:latest
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
在本地构建:
version: '3.8'
services:
mcp-tracker:
build: .
ports:
- "8000:8000"
environment:
- TRACKER_TOKEN=${TRACKER_TOKEN}
- TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
开发环境设置
# 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
许可证
本项目采用 LICENSE 文件中指定的条款进行许可。
支持
如有问题或疑问:
- 查阅 Yandex Tracker API 文档
- 在 https://github.com/aikts/yandex-tracker-mcp/issues 提交问题
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。