Lets an AI client manage Yandex Tracker, Wiki, Forms, and DataLens through read and write tools.
Also known as bim-ba/ycli, ycli, yandex-cli
- Stars
- 5
- Tools
- —
- Downloads, 30 days
- 3,009
- Latest version
- 0.142.0
- Last commit
- Oct 31, 2026
- License
- MIT
What is Yandex 360 MCP?
Yandex 360 lets an AI client manage Yandex Tracker, Wiki, Forms, and DataLens through read and write tools.
Summary generated from the project's README
About Yandex 360 MCP server
Yandex 360 (ycli) provides a bridge between AI agents and the Yandex ecosystem, specifically targeting Tracker, Wiki, Forms, and DataLens. It functions as an MCP server that allows clients like Claude Desktop, Cursor, or VS Code to interact with these services through specialized tools. Users can configure the server to operate in a read-only mode or use a core toolset to limit the number of available commands for the agent.
Setup requires a Yandex OAuth token and an organization ID, which can be managed via the command line using the auth login command. The server is designed with safety in mind, providing hints about whether a tool is destructive or idempotent, and it can be installed using uv or pipx. Developers can also use the included Python SDK with Pydantic models to integrate these capabilities into their own applications.
What you can do with it
- 1Manage project issuesAn AI agent can retrieve, create, or update specific issues within Yandex Tracker.
- 2Safe data modificationYou can use the dry-run feature to see what a write operation would do before executing it.
- 3Restrict agent permissionsConfigure the server to only allow read operations to prevent accidental data changes.
- 4Automate documentation tasksAn agent can interact with Wiki pages to manage organizational knowledge.
Written from the project's README. Every use case is checked against a quote from it.
How to install Yandex 360 MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Yandex 360 MCP in Claude Code
$ claude mcp add --env 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' --env 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' ycli -- uvx yandex-cliInstall Yandex 360 MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"ycli": {
"command": "uvx",
"args": [
"yandex-cli"
],
"env": {
"YANDEX_ID_OAUTH_TOKEN": "<YOUR_YANDEX_ID_OAUTH_TOKEN>",
"YANDEX_ID_ORGANIZATION_ID": "<YANDEX_ID_ORGANIZATION_ID>"
}
}
}
}Install Yandex 360 MCP in VS Code
.vscode/mcp.json
{
"servers": {
"ycli": {
"type": "stdio",
"command": "uvx",
"args": [
"yandex-cli"
],
"env": {
"YANDEX_ID_OAUTH_TOKEN": "<YOUR_YANDEX_ID_OAUTH_TOKEN>",
"YANDEX_ID_ORGANIZATION_ID": "<YANDEX_ID_ORGANIZATION_ID>"
}
}
}
}Install Yandex 360 MCP in VS Code CLI
$ code --add-mcp '{"name":"ycli","type":"stdio","command":"uvx","args":["yandex-cli"],"env":{"YANDEX_ID_OAUTH_TOKEN":"<YOUR_YANDEX_ID_OAUTH_TOKEN>","YANDEX_ID_ORGANIZATION_ID":"<YANDEX_ID_ORGANIZATION_ID>"}}'Install Yandex 360 MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"ycli": {
"command": "uvx",
"args": [
"yandex-cli"
],
"env": {
"YANDEX_ID_OAUTH_TOKEN": "<YOUR_YANDEX_ID_OAUTH_TOKEN>",
"YANDEX_ID_ORGANIZATION_ID": "<YANDEX_ID_ORGANIZATION_ID>"
}
}
}
}Install Yandex 360 MCP in Codex
$ codex mcp add ycli --env 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' --env 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' --env 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' --env 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' -- uvx yandex-cliInstall Yandex 360 MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.ycli] command = "uvx" args = ["yandex-cli"] [mcp_servers.ycli.env] YANDEX_ID_OAUTH_TOKEN = "<YOUR_YANDEX_ID_OAUTH_TOKEN>" YANDEX_ID_ORGANIZATION_ID = "<YANDEX_ID_ORGANIZATION_ID>"
Install Yandex 360 MCP in Gemini CLI
$ gemini mcp add -s user -e 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' -e 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' -e 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' -e 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' ycli uvx -- yandex-cliInstall Yandex 360 MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"ycli": {
"command": "uvx",
"args": [
"yandex-cli"
],
"env": {
"YANDEX_ID_OAUTH_TOKEN": "<YOUR_YANDEX_ID_OAUTH_TOKEN>",
"YANDEX_ID_ORGANIZATION_ID": "<YANDEX_ID_ORGANIZATION_ID>"
}
}
}
}Configuration
YANDEX_ID_OAUTH_TOKENRequiredSecretYandex OAuth token with Tracker, Wiki and Forms access.
YANDEX_ID_OAUTH_TOKENRequiredSecretYandex OAuth token with Tracker, Wiki and Forms access.
YANDEX_ID_ORGANIZATION_IDRequiredYandex 360 organization id (sent as X-Org-Id).
YANDEX_ID_ORGANIZATION_IDRequiredYandex 360 organization id (sent as X-Org-Id).
| Name | Description | |
|---|---|---|
| YANDEX_ID_OAUTH_TOKEN | Yandex OAuth token with Tracker, Wiki and Forms access. | RequiredSecret |
| YANDEX_ID_OAUTH_TOKEN | Yandex OAuth token with Tracker, Wiki and Forms access. | RequiredSecret |
| YANDEX_ID_ORGANIZATION_ID | Yandex 360 organization id (sent as X-Org-Id). | Required |
| YANDEX_ID_ORGANIZATION_ID | Yandex 360 organization id (sent as X-Org-Id). | Required |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubycli
Yandex 360 for people and for agents.
Tracker, Wiki and Forms from a command line, an MCP server and Python: one tool, and one name for each operation everywhere.
English · Русский
- A command line that scripts well. JSON when piped, ready for
jq,--dry-runfor every write, an exit code for each kind of failure. - An MCP server agents can trust. Every tool says whether it reads, writes or destroys; serve only reads, or a small everyday set.
- A typed Python SDK. Pydantic models for every answer, and examples the test suite runs.
- Careful with your data. A delete asks first, and your token goes only to Yandex's own hosts.
Documentation: ycli.savaznatnov.dev.
Install
uv tool install 'yandex-cli[mcp]' # the ycli command, with the MCP server
uvx yandex-cli --help # or run it once, without installing
pipx install 'yandex-cli[mcp]' # or with pipx
The command is ycli (also yandex-cli). Then sign in: ycli auth login (how).
Writing Python? Add the SDK to your project: uv add yandex-cli.
| Extra | Adds | Install |
|---|---|---|
mcp |
the MCP server, ycli mcp start |
uv tool install 'yandex-cli[mcp]' |
service-account |
the SDK's ServiceAccountAuth for a Yandex Cloud service-account key |
uv add 'yandex-cli[service-account]' |
Connect your AI client
Every client gets the same MCP server, uvx --from 'yandex-cli[mcp]' ycli mcp start, and the same two variables.
| Client | Fastest way |
|---|---|
| Claude Code | /plugin marketplace add bim-ba/ycli, then /plugin install yandex-360@ycli |
| Claude Desktop | open the .mcpb bundle from the latest release |
| Cursor | one-click install |
| VS Code | one-click install |
| Windsurf (Devin Desktop) | config file |
| Zed | config file |
| Codex | config file |
| Gemini CLI | config file |
| opencode | config file |
| Any other MCP client | three values to copy |
Also: a Docker image, ghcr.io/bim-ba/ycli (as a server or a plain CLI), pipelines, and the official MCP Registry entry io.github.bim-ba/ycli.
Something not working? If it does not work.
Use it
Command line
ycli tracker issues get TRACKER-1 # a table at a terminal
ycli tracker issues get TRACKER-1 | jq .summary # JSON when piped
ycli -o yaml wiki pages get onboarding # or pick: -o json | yaml | pretty | csv | markdown | ndjson | name
ycli tracker boards delete 7 --dry-run # print the request a write would send
ycli tracker boards delete 7 --yes # a delete asks first; --yes answers
ycli api issues/TRACKER-1 --service tracker # an endpoint ycli does not wrap
More: Script the CLI, Call an unwrapped endpoint, the CLI reference.
MCP server
ycli mcp start # every tool, reads and writes
ycli mcp start --read-only # reads only
ycli mcp start --toolsets core # about 40 everyday tools, for a client that caps the count
ycli mcp methods --toolsets core # list the tool names without starting the server
More: Serve the MCP server, Self-host over HTTP for a team, the tool reference.
Python
from ycli.yandex.tracker.client import TrackerClient
tracker = TrackerClient(oauth_token="…", organization_id="…")
print(tracker.issues.get("TRACKER-1").summary)
More: the SDK reference.
Claude Code plugin
/plugin marketplace add bim-ba/ycli
/plugin install yandex-360@ycli
It adds the MCP server and five skills (yandex-360, yandex-360-tracker, yandex-360-wiki, yandex-360-forms, yandex-360-datalens) that teach an agent the commands and the API's quirks. Source: plugins/yandex-360/.
Configure
ycli auth login # gets a token through Yandex ID, finds your organization, saves both to .env
ycli auth status # whose token it is, and whether each service accepts it
ycli doctor # something not working? every check in order, with the fix
ycli auth login needs a Yandex OAuth app of your own the first time: Authenticate walks you through it. ycli reads two variables, from the environment or a .env file:
YANDEX_ID_OAUTH_TOKEN=... # a Yandex OAuth token with Tracker, Wiki and Forms access
YANDEX_ID_ORGANIZATION_ID=... # your Yandex 360 organization id
Timeouts, retries, limits, logging and the exit codes are in the configuration reference.
Coverage
ycli wraps 468 operations across 88 resources of the Tracker, Wiki, Forms, and DataLens API. Every one is reachable from the Python SDK and the CLI, and 458 MCP tools serve them to agents (456 per service plus schema_get, status_get).
Legend. ✅ in CLI or MCP means the resource is reachable on that surface; MCP tools carry honest hints (reads are
readOnlyHint, writes say whether they are destructive or idempotent), andycli mcp start --read-onlyserves only the reads. Resource and operation names link to the official Yandex API reference. An operation has one of three states against what Yandex publishes. Covered (no mark): ycli sends every published parameter and reads every published field. Partial (◐): ycli wraps it and differs somewhere; the mark links to the row that says where and why. Not covered (○): Yandex publishes it and ycli does not wrap it; these are listed under each service. Wiki, Forms and DataLens are measured against their OpenAPI documents; Tracker publishes none, so its state is measured against the reference pages (operations, and query parameters where a page lists them). DataLens is in progress, wrapped section by section: the operations of a section ycli has not begun are pending, not missing. Generated from the code byscripts/gen_coverage.py; do not edit by hand.
Tracker
Issues & work items
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| issues | get · search · count · create · update · move · suggest · scroll_clear · update_bulk · move_bulk · transition_bulk · import_ | ✅ | ✅ |
| comments | list · get · create · update · delete · reactions_create · import_ | ✅ | ✅ |
| links | list · list_filtered · create · delete · import_ | ✅ | ✅ |
| transitions | list · execute | ✅ | ✅ |
| worklog | list · search · list_global · create · update · delete · import_ | ✅ | ✅ |
| changelog | list | ✅ | ✅ |
| checklists | list · create · update · delete · clear | ✅ | ✅ |
| attachments | list · download · thumbnails_download · get · delete · upload · upload_temp · import_ · import_for_comment | ✅ | ✅ |
| remotelinks | list · create · delete | ✅ | ✅ |
Agile boards
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| boards | list · get · create · update · delete | ✅ | ✅ |
| sprints | list · get · create · update · delete · start · archive | ✅ | ✅ |
| columns | list · get · create · update · delete | ✅ | ✅ |
Dictionaries
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| priorities | list · create · update | ✅ | ✅ |
| statuses | list · create · update | ✅ | ✅ |
| resolutions | list · create · update | ✅ | ✅ |
| issuetypes | list · create · update | ✅ | ✅ |
| linktypes | list | ✅ | ✅ |
Fields, queues & structure
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| fields | list · get · create · update · categories_create · categories_update | ✅ | ✅ |
| localfields | list · get · create · update | ✅ | ✅ |
| components | list · create · update · list_for_queue · get · delete · user_permissions_get · group_permissions_get | ✅ | ✅ |
| queues | list · get · tags_list · versions_list · fields_list · create · delete · restore · permissions_update · tags_delete · versions_create · versions_get · versions_update · versions_delete · user_permissions_get · group_permissions_get | ✅ | ✅ |
| workflows | list · get · list_for_queue · create · update · actions_update · delete | ✅ | ✅ |
| projects | list · get · queues_list · create · update · delete | ✅ | ✅ |
Automation & bulk
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| macros | list · get · create · update · delete | ✅ | ✅ |
| triggers | list · get · create · update · webhook_log_list | ✅ | ✅ |
| autoactions | get · create · logs_list · logs_get | ✅ | ✅ |
| dashboards | create · widgets_create_cycle_time | ✅ | ✅ |
| bulk | get · issues_list | ✅ | ✅ |
Entities, users & search
| Resource | Operations | CLI | MCP |
|---|---|---|---|
| entities | create · get · update · delete · search · events_list · permissions_get · permissions_update · permissions_get_direct · [permissions_update_direct](https://yandex.ru/support/tracker/en/api/entitie |
Yandex 360 MCP questions
How do I add Yandex 360 MCP to Claude Code?
Run claude mcp add --env 'YANDEX_ID_OAUTH_TOKEN=<YOUR_YANDEX_ID_OAUTH_TOKEN>' --env 'YANDEX_ID_ORGANIZATION_ID=<YANDEX_ID_ORGANIZATION_ID>' ycli -- uvx yandex-cli in your terminal. Add --scope user to make it available in every project.
How do I add Yandex 360 MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
How do I connect my AI client to Yandex 360?
You can use the command uvx --from 'yandex-cli[mcp]' ycli mcp start and provide the required environment variables to your client.
Can I run the MCP server in read-only mode?
Yes, you can start the server with the --read-only flag to serve only read operations.
What services does ycli support?
The tool wraps operations for Yandex Tracker, Wiki, Forms, and DataLens.
How do I authenticate with the CLI?
Use the command ycli auth login to sign in via Yandex ID and find your organization.