Skip to main content

yandex-tracker-mcp-lite

Unofficial MCP server for Yandex Tracker that keeps your agent's context for your work: 9 tools, about 1.2k tokens of tool definitions. The official server costs about 24.8k tokens before you ask anything, the most popular community server about 20.7k.

Лёгкий неофициальный MCP-сервер для Яндекс Трекера: 9 инструментов, около 1,2 тыс. токенов на описания инструментов вместо 24,8 тыс. у официального и 20,7 тыс. у aikts, ответы в 1,4–30 раз короче, всё остальное API доступно через один инструмент call_api. Настройка одной командой: uvx yandex-tracker-mcp-lite setup.

uvx yandex-tracker-mcp-lite setup

Measured

Same organisation, same questions, measured with bench/measure.py on 2026-11-08 against the official server at mcp.tracker.yandex.net and aikts/yandex-tracker-mcp (commit 51a0c0d, default settings and with TRACKER_ENTITIES_ENABLED). Character counts are exact; tokens are estimated at 3.3 characters per token.

Tool definitions. "Seen by the model" is name + description + input schema, the part a client sends to the model in every session. The full tools/list also carries output schemas and annotations, which clients keep to themselves; for aikts those output schemas are 128k of its 201k characters.

tools tools/list chars seen by the model, chars ≈ tokens
official 71 84,684 81,761 24,776
aikts 55 200,864 68,226 20,675
aikts + entities 94 468,529 144,825 43,886
lite 9 4,355 4,044 1,225

Answers to the same questions, characters returned (aikts needs two calls for an issue with comments):

question official aikts lite
who am I 107 206 74
read an issue 707 2,561 511
issue + last 5 comments 1,454 4,000 691
search a queue (12 issues) 3,537 27,785 918
available transitions 1,022 210 31

Clients that load MCP tools on demand (Claude Code's tool search) pay less of the definitions up front; Codex, Cursor and Claude Desktop pay all of it in every session. The answers are smaller everywhere.

Set up in two minutes

You need: a Tracker organisation you belong to, uv (for uvx), and a browser where you are signed in to Yandex with the account you use in Tracker.

The quick way

Run this in your own terminal (not through an agent's shell: the token would end up in its transcript):

uvx yandex-tracker-mcp-lite setup

It walks you through the steps below, opens the right pages, reads the token with a hidden prompt, detects whether your organisation is Yandex Cloud or Yandex 360, checks access, explains what is wrong if it fails, and adds the server to Claude Code. For other clients it prints ready configs (the token masked unless you pass --show-token).

By hand

1. Create an OAuth app at oauth.yandex.ru/client/new:

  • choose «Для доступа к API или отладки» (API access or debugging). "No access to user data" there refers to the Yandex ID profile, not to Tracker;
  • name it anything, give a contact email;
  • in «Доступ к данным» type «трекер» and add «Чтение из трекера» (tracker:read) and «Запись в трекер» (tracker:write);
  • «Создать приложение», copy the ClientID. You don't need the client secret.

2. Issue a token. Open this link with your ClientID, check that the account in the corner is the one you use in Tracker, press «Разрешить» and copy the token (y0_…, valid for a year):

https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>

3. Find the organisation id. Tracker → Администрирование → Организации, field «Идентификатор». The card's title tells you which variable to use:

card title variable
Yandex Cloud Organization TRACKER_CLOUD_ORG_ID
Яндекс 360 для бизнеса TRACKER_ORG_ID

4. Check it works (replace the two values, keep the quotes):

export TRACKER_TOKEN='y0_...'
export TRACKER_CLOUD_ORG_ID='bpf...'        # or TRACKER_ORG_ID for Yandex 360

curl -s https://api.tracker.yandex.net/v3/myself \
  -H "Authorization: OAuth $TRACKER_TOKEN" \
  -H "X-Cloud-Org-ID: $TRACKER_CLOUD_ORG_ID"   # X-Org-ID for Yandex 360

You should see your login. If not, see Troubleshooting.

5. Add the server. In the same shell:

Claude Code:

claude mcp add --scope user tracker \
  -e TRACKER_TOKEN="$TRACKER_TOKEN" \
  -e TRACKER_CLOUD_ORG_ID="$TRACKER_CLOUD_ORG_ID" \
  -- uvx yandex-tracker-mcp-lite

Codex (~/.codex/config.toml):

[mcp_servers.tracker]
command = "uvx"
args = ["yandex-tracker-mcp-lite"]
env = { TRACKER_TOKEN = "y0_...", TRACKER_CLOUD_ORG_ID = "bpf..." }

Cursor, Claude Desktop, anything else (mcpServers JSON):

{
  "mcpServers": {
    "tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp-lite"],
      "env": { "TRACKER_TOKEN": "y0_...", "TRACKER_CLOUD_ORG_ID": "bpf..." }
    }
  }
}

Restart the client and ask something like «что у меня в работе в трекере?».

Troubleshooting

you see it means fix
tracker:read OAuth scope is required the OAuth app has no Tracker access add both Tracker accesses to the app (step 1), then issue a new token (step 2)
401 … expired_token / INVALID wrong or expired token copy it again, or issue a new one
403 Organization is not available, not ready or not found wrong org id, wrong header, or the token belongs to another account re-copy the id; try the other variable; sign in to the right account and repeat step 2
OAuth token … issued after '2026-06-01', is not supported for IAM token exchange you went the yc CLI route yc tokens no longer exchange for IAM tokens; use the OAuth app above
everything is read-only in Tracker the organisation's free period ended add a billing account in Tracker; reads keep working

Keep the token secret. It acts as you in Tracker. If it leaks (pasted into a chat, committed), revoke it in Yandex ID → Безопасность and issue a new one.

Variables

variable
TRACKER_TOKEN OAuth token. Or TRACKER_IAM_TOKEN (12 h, Yandex Cloud orgs, e.g. from a service account).
TRACKER_CLOUD_ORG_ID / TRACKER_ORG_ID organisation id, see step 3
TRACKER_READ_ONLY=1 optional: only whoami, search_issues, get_issue and GET-only call_api (≈ 600 tokens)

The names match aikts/yandex-tracker-mcp, so switching is a change of command.

Tools

tool what it does
whoami login, name, email; a quick check that the token works
search_issues Tracker query language or a preset (mine, created, following). One line per issue: key | status | assignee | updated | summary, with a next-page hint
get_issue all fields in one call; comments=N adds the last N comments, attachments=true downloads images to local files the agent can open, changelog=true adds field history
add_comment markdown comment, optionally summoning people
transition_issue without status: lists the transitions available now; with it: matches an id, a name or the target status
update_issue any fields: {"assignee": "me", "tags": {"add": ["x"]}, "deadline": "2026-12-01"}
create_issue new issue, any extra fields
link_issues relates, depends on, subtask, duplicates, epic
call_api any Tracker API v3 request: boards, sprints, worklogs, checklists, projects, queues

How it stays small

Following Anthropic's Writing effective tools for agents and the Claude Code MCP docs:

  • A few tools for whole workflows, one escape hatch for the rest. get_issue answers "what's going on with DEV-123" in one call instead of four. Rare operations go through call_api(method, path, body), which costs ~200 tokens and covers the whole API.
  • Server instructions that say when to look here. With tool search only tool names and server instructions load up front, so the instructions lead with the words people use: Yandex Tracker, Яндекс Трекер, задачи, тикеты, issue keys like DEV-123.
  • Help arrives with the error. The query-language cheat sheet is not in any schema. When Tracker rejects a query, the error comes back with it. 401/403/404 errors say what to check next, and a search that has more pages says how to get them.
  • Answers are shrunk, not dumped. Reference objects become their display text ("assignee": "Анна Петрова", "parent": "DEV-0 Auth epic"), bookkeeping fields (self, version, uids, counters) and empty values are dropped, timestamps lose their seconds, JSON has no indentation. call_api keeps ids and keys, because follow-up calls need them.
  • People by name. assignee, followers and summon take a login, an email, a display name or me. If a name matches several people the call fails with the candidates instead of guessing.
  • Annotations that clients act on. Read tools are readOnlyHint (Claude Code runs them in parallel), update_issue is idempotentHint (safe to retry after a dropped connection), creating tools are non-destructive.
  • Schemas without pydantic decoration. No auto-generated titles, no anyOf: [X, null].

Limitations

  • File upload is not supported yet (call_api sends JSON).
  • Name resolution loads the organisation's user list once per session (up to 1000 users).
  • Not affiliated with Yandex.

Development

uv run pytest                                      # offline tests
TRACKER_TEST_QUEUE=TEST uv run pytest -m live -s   # creates, edits, links and closes issues in TEST
uv run python bench/measure.py --issue TEST-1 --queue TEST [--aikts ~/src/yandex-tracker-mcp]

MIT licence.

Metadata

Release files for yandex-tracker-mcp-lite 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yandex-tracker-mcp-lite 0.1.0
File Size Uploaded Provenance Actions
yandex_tracker_mcp_lite-0.1.0.tar.gz 96.6 kB Without provenance Details for yandex_tracker_mcp_lite-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for yandex-tracker-mcp-lite 0.1.0
File Interpreter ABI Platform Actions
yandex_tracker_mcp_lite-0.1.0-py3-none-any.whl Python 3 none any Details for yandex_tracker_mcp_lite-0.1.0-py3-none-any.whl

Total release size: 115.8 kB

Release files / yandex_tracker_mcp_lite-0.1.0.tar.gz

Download URL yandex_tracker_mcp_lite-0.1.0.tar.gz
Size 96.6 kB
Tags Source
SHA-256 checksum
How to use checksums
223e736629a7d1c0add7094e5b491a62e02341a84eeaaa62f9219ddd9e11114e
BLAKE2b-256 checksum
How to use checksums
63ea8f0a7ea1b9177b31119568efb57d99769448ce6348119e39b8743848b39c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / yandex_tracker_mcp_lite-0.1.0-py3-none-any.whl

Download URL yandex_tracker_mcp_lite-0.1.0-py3-none-any.whl
Size 19.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d0357c61e86a1e50d92e1df2828b8a29e3528a5df5a5946f1ce80dcab8537b0
BLAKE2b-256 checksum
How to use checksums
732b7330ba5f44f39527729c628020a9b4c4abd0f2b511b45725efeb78b63b04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for yandex-tracker-mcp-lite 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page