Yandex Tracker MCP Server 是一个全面的模型上下文协议(MCP)服务器,它使 AI 助手能够与 Yandex Tracker API 进行交互。该服务器提供对 Yandex Tracker 问题、队列、评论、工作日志和搜索功能的安全、经过身份验证的访问,并可选配 Redis 缓存以提高性能。
点击此处查看俄文文档
该项目提供了便捷的使用方式,你可以通过多种途径进行安装和配置,以实现与 Yandex Tracker API 的交互。下面将详细介绍不同场景下的安装和配置方法。
根据你的 Yandex 组织类型,选择以下其中一种配置:
TRACKER_CLOUD_ORG_ID 环境变量。TRACKER_ORG_ID 环境变量。你可以在 Yandex Tracker URL 或组织设置中找到你的组织 ID。
Yandex Tracker MCP Server 可以作为 扩展 一键安装到 Claude Desktop 中。
系统中必须安装 Python 3.12。对于 macOS 用户,可以使用以下命令进行安装:
brew install python@3.12
*.dxt 文件。以下部分展示了如何为不同的 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 云(或 Yandex 360)组织 ID。配置文件路径:
~/Library/Application Support/Claude/claude_desktop_config.json%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"
}
}
}
}
使用 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/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"
}
}
}
}
配置文件路径:
~/.codeium/windsurf/mcp_config.json访问方式:Windsurf 设置 → 级联标签 → 模型上下文协议(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"
}
}
}
}
配置文件路径:
~/.config/zed/settings.json访问方式:Cmd+,(macOS)或 Ctrl+,(Linux/Windows)或命令面板:"zed: 打开设置"
注意:需要 Zed 预览版才能支持 MCP。
使用 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"
}
}
}
}
}
配置文件路径:
.vscode/mcp.jsonsettings.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 服务器配置格式:
使用 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"
}
}
}
}
重要提示:
uvx 已安装并可在系统路径中使用。以下是使用不同客户端配置 Yandex Tracker MCP Server 的示例,你可以根据自己的需求选择合适的客户端和配置方式。
在实际使用中,你可以根据具体场景灵活组合配置选项,例如结合 OAuth 2.0 身份验证和 Redis 缓存,以实现更高效、安全的使用体验。
服务器通过 MCP 协议公开了以下工具:
queues_get_all:列出所有可用的 Yandex Tracker 队列。
TRACKER_LIMIT_QUEUES 限制。queue_get_local_fields:获取特定队列的本地字段。
queue_id(字符串,队列键,如 "SOMEPROJECT")。TRACKER_LIMIT_QUEUES 限制。queue_get_tags:获取特定队列的所有标签。
queue_id(字符串,队列键,如 "SOMEPROJECT")。TRACKER_LIMIT_QUEUES 限制。queue_get_versions:获取特定队列的所有版本。
queue_id(字符串,队列键,如 "SOMEPROJECT")。TRACKER_LIMIT_QUEUES 限制。users_get_all:获取组织中注册的用户账户信息。
per_page(可选):每页的用户数量(默认:50)。page(可选):要返回的页码(默认:1)。user_get:通过登录名或用户 ID 获取特定用户的信息。
user_id(字符串,用户登录名,如 "john.doe" 或用户 ID,如 "12345")。user_get_current:获取当前经过身份验证的用户信息。
get_global_fields:获取 Yandex Tracker 中所有可用的全局字段。
get_statuses:获取所有可用的问题状态。
get_issue_types:获取所有可用的问题类型。
get_priorities:获取所有可用的问题优先级。
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_get_links:获取相关问题的链接。
issue_id(字符串)。issue_get_worklogs:检索工作日志条目。
issue_ids(字符串数组)。issue_get_attachments:获取问题的附件。
issue_id(字符串,格式:"QUEUE-123")。issue_get_checklist:获取问题的检查列表项。
issue_id(字符串,格式:"QUEUE-123")。issues_find:使用 Yandex Tracker 查询语言 搜索问题。
query(必需):使用 Yandex Tracker 查询语言语法的查询字符串。include_description(布尔值,可选,默认:false):是否在问题结果中包含问题描述。描述可能很大,仅在需要时使用。fields(字符串列表,可选):要包含在响应中的字段。通过选择仅需要的字段,有助于优化上下文窗口的使用。如果未指定,则返回所有可用字段。page(可选):分页的页码(默认:1)。per_page(可选):每页的项目数量(默认:100)。如果结果超过上下文窗口,可能会减少该数量。issues_count:使用 Yandex Tracker 查询语言 统计匹配查询的问题数量。
query(必需):使用 Yandex Tracker 查询语言语法的查询字符串。MCP 服务器还可以在可流式 HTTP 模式下运行,适用于基于 Web 的集成或标准输入输出传输不适用的情况。
# 必需 - 将传输设置为可流式 HTTP 模式
TRANSPORT=streamable-http
# 服务器配置
HOST=0.0.0.0 # 默认:0.0.0.0(所有接口)
PORT=8000 # 默认:8000
# 基本的可流式 HTTP 服务器启动
TRANSPORT=streamable-http uvx yandex-tracker-mcp@latest
# 使用自定义主机和端口
TRANSPORT=streamable-http \
HOST=localhost \
PORT=9000 \
uvx yandex-tracker-mcp@latest
# 使用所有环境变量
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 服务器时使用以下格式(以 Claude Code 为例),可以跳过配置 TRACKER_CLOUD_ORG_ID 或 TRACKER_ORG_ID:
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 环境,如下文所述。
Yandex Tracker MCP Server 支持 OAuth 2.0 身份验证,作为静态 API 令牌的安全替代方案。配置后,服务器充当 OAuth 提供程序,促进 MCP 客户端与 Yandex OAuth 服务之间的身份验证。
MCP 服务器实现了标准的 OAuth 2.0 授权码流程:
MCP 客户端 → MCP 服务器 → Yandex OAuth → 用户身份验证
↑ ↓
└────────── 访问令牌 ←─────────────────┘
要启用 OAuth 身份验证,请设置以下环境变量:
# 启用 OAuth 模式
OAUTH_ENABLED=true
# Yandex OAuth 应用凭证(OAuth 必需)
OAUTH_CLIENT_ID=your_yandex_oauth_app_id
OAUTH_CLIENT_SECRET=your_yandex_oauth_app_secret
# MCP 服务器的公共 URL(OAuth 回调必需)
MCP_SERVER_PUBLIC_URL=https://your-mcp-server.example.com
# 可选的 OAuth 设置
OAUTH_SERVER_URL=https://oauth.yandex.ru # 默认的 Yandex OAuth 服务器
# 启用 OAuth 时,TRACKER_TOKEN 变为可选
{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback。tracker:read - Tracker 的读取权限。tracker:write - Tracker 的写入权限。| 特性 | OAuth | 静态令牌 |
|---|---|---|
| 安全性 | 具有过期时间的动态令牌 | 长期有效的静态令牌 |
| 用户体验 | 交互式登录流程 | 一次性配置 |
| 令牌管理 | 自动刷新 | 手动轮换 |
| 访问控制 | 按用户进行身份验证 | 共享令牌 |
| 设置复杂度 | 需要设置 OAuth 应用 | 简单的令牌配置 |
启用 OAuth 后,MCP 客户端需要:
注意:并非所有 MCP 客户端目前都支持 OAuth 身份验证。请查看客户端文档,了解 OAuth 兼容性。
Claude Code 的示例配置:
claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s user
MCP 服务器支持两种不同的 OAuth 数据存储后端(客户端注册、访问令牌、刷新令牌和授权状态):
内存存储将所有 OAuth 数据保存在服务器内存中。这是默认选项,无需额外配置。 特点:
OAUTH_STORE=memory # 默认值,可以省略
Redis 存储使用 Redis 数据库为 OAuth 数据提供持久存储。这确保 OAuth 会话在服务器重启后仍然存在,并支持多实例部署。 特点:
# 启用 Redis 存储用于 OAuth 数据
OAUTH_STORE=redis
# Redis 连接设置(与工具缓存使用的设置相同)
REDIS_ENDPOINT=localhost # 默认:localhost
REDIS_PORT=6379 # 默认:6379
REDIS_DB=0 # 默认:0
REDIS_PASSWORD=your_redis_password # 可选:Redis 密码
REDIS_POOL_MAX_SIZE=10 # 默认:10
存储行为:
oauth:* 前缀,以避免与其他 Redis 数据冲突。重要提示:
OAUTH_STORE 设置仅影响 OAuth 数据存储;工具缓存使用 TOOLS_CACHE_ENABLED。Yandex Tracker MCP Server 支持多种身份验证方法,并具有明确的优先级顺序。服务器将根据以下层次结构使用第一个可用的身份验证方法:
OAUTH_ENABLED=true、OAUTH_CLIENT_ID、OAUTH_CLIENT_SECRET、MCP_SERVER_PUBLIC_URL。TRACKER_TOKEN(你的 OAuth 令牌)。TRACKER_IAM_TOKEN(你的 IAM 令牌)。TRACKER_SA_KEY_ID、TRACKER_SA_SERVICE_ACCOUNT_ID、TRACKER_SA_PRIVATE_KEY。# 启用 OAuth 模式
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
# 组织 ID(二选一)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # 或 TRACKER_ORG_ID
# OAuth 令牌
TRACKER_TOKEN=your_oauth_token
# 组织 ID(二选一)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # 或 TRACKER_ORG_ID
# IAM 令牌
TRACKER_IAM_TOKEN=your_iam_token
# 组织 ID(二选一)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # 或 TRACKER_ORG_ID
# 服务账户凭证
TRACKER_SA_KEY_ID=your_key_id
TRACKER_SA_SERVICE_ACCOUNT_ID=your_service_account_id
TRACKER_SA_PRIVATE_KEY=your_private_key
# 组织 ID(二选一)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # 或 TRACKER_ORG_ID
# 身份验证(使用以下方法之一)
# 方法 1:OAuth 令牌
TRACKER_TOKEN=your_yandex_tracker_oauth_token
# 方法 2:IAM 令牌
TRACKER_IAM_TOKEN=your_iam_token
# 方法 3:服务账户(用于动态 IAM 令牌)
TRACKER_SA_KEY_ID=your_key_id # 服务账户密钥 ID
TRACKER_SA_SERVICE_ACCOUNT_ID=your_sa_id # 服务账户 ID
TRACKER_SA_PRIVATE_KEY=your_private_key # 服务账户私钥
# 组织配置(二选一)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id # 适用于 Yandex 云组织
TRACKER_ORG_ID=your_org_id # 适用于 Yandex 360 组织
# API 配置(可选)
TRACKER_API_BASE_URL=https://api.tracker.yandex.net # 默认:https://api.tracker.yandex.net
# 安全 - 限制对特定队列的访问(可选)
TRACKER_LIMIT_QUEUES=PROJ1,PROJ2,DEV # 以逗号分隔的队列键
# 服务器配置
HOST=0.0.0.0 # 默认:0.0.0.0
PORT=8000 # 默认:8000
TRANSPORT=stdio # 选项:stdio、streamable-http、sse
# Redis 连接设置(用于缓存和 OAuth 存储)
REDIS_ENDPOINT=localhost # 默认:localhost
REDIS_PORT=6379 # 默认:6379
REDIS_DB=0 # 默认:0
REDIS_PASSWORD=your_redis_password # 可选:Redis 密码
REDIS_POOL_MAX_SIZE=10 # 默认:10
# 工具缓存配置(可选)
TOOLS_CACHE_ENABLED=true # 默认:false
TOOLS_CACHE_REDIS_TTL=3600 # 默认:3600 秒(1 小时)
# OAuth 2.0 身份验证(可选)
OAUTH_ENABLED=true # 默认:false
OAUTH_STORE=redis # 选项:memory、redis(默认:memory)
OAUTH_SERVER_URL=https://oauth.yandex.ru # 默认:https://oauth.yandex.ru
OAUTH_CLIENT_ID=your_oauth_client_id # 启用 OAuth 时必需
OAUTH_CLIENT_SECRET=your_oauth_secret # 启用 OAuth 时必需
MCP_SERVER_PUBLIC_URL=https://your.server.com # 启用 OAuth 时必需
TRACKER_READ_ONLY=true # 默认:false - 限制 OAuth 为只读权限
# 使用环境文件
docker run --env-file .env -p 8000:8000 ghcr.io/aikts/yandex-tracker-mcp:latest
# 使用内联环境变量
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 .
使用预构建的镜像
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}
# 克隆并设置
git clone https://github.com/aikts/yandex-tracker-mcp
cd yandex-tracker-mcp
# 安装开发依赖
uv sync --dev
# 格式化和静态检查
make
该项目通过实现 MCP 协议,结合 Yandex Tracker API 的功能,利用多种身份验证和存储机制,为 AI 助手与 Yandex Tracker 的交互提供了全面的支持。在性能方面,通过可选的 Redis 缓存层提高了响应速度;在安全方面,提供了多种身份验证方法和队列访问限制;在可扩展性方面,支持多种传输选项和不同的客户端配置。
本项目根据 LICENSE 文件中指定的条款进行许可。
如果遇到问题或有疑问: