feat(mcp): expose server version and project team tools #138

Merged
Claude-Run merged 1 commit from feat/YT-84-mcp-server-team-tools into main 2026-08-01 20:59:23 +02:00
Member

The MCP mirrored the CLI's project surface up to list_vcs_processors, so once yt server version (YT-82) and yt project team (YT-83) landed, an MCP client could no longer reach either. This adds six tools over the client functions those two issues already shipped: no new REST code.

get_server_version (new tools/server.rs) returns the connected server's version and build. list_project_team returns the same document as yt project team list --json (team entity, member rows, project-scoped roles), with all: true standing in for the CLI's --all. add_project_team_member, remove_project_team_member, grant_project_role and revoke_project_role take a holder as exactly one of user (login) or group (name).

The two read tools reject dry_run and the four write tools accept it, both through the existing central gate in dispatch, so the four are listed in MUTATING_TOOLS and the schema tests cover them without new plumbing. Every new args struct implements LogArgs, logging only the scalar identifiers of the call. Each new description names the YouTrack 2026.1 requirement, so a client pointed at an older instance reads a reason instead of a bare 404.

The join that turns the team and assignedRoles collections into holder rows moved from the CLI into youtrack_client::project_access, with its tests, so both front ends report project access from one implementation rather than two that can drift.

#YT-84

The MCP mirrored the CLI's project surface up to `list_vcs_processors`, so once `yt server version` (YT-82) and `yt project team` (YT-83) landed, an MCP client could no longer reach either. This adds six tools over the client functions those two issues already shipped: no new REST code. `get_server_version` (new `tools/server.rs`) returns the connected server's version and build. `list_project_team` returns the same document as `yt project team list --json` (team entity, member rows, project-scoped roles), with `all: true` standing in for the CLI's `--all`. `add_project_team_member`, `remove_project_team_member`, `grant_project_role` and `revoke_project_role` take a holder as exactly one of `user` (login) or `group` (name). The two read tools reject `dry_run` and the four write tools accept it, both through the existing central gate in `dispatch`, so the four are listed in `MUTATING_TOOLS` and the schema tests cover them without new plumbing. Every new args struct implements `LogArgs`, logging only the scalar identifiers of the call. Each new description names the YouTrack 2026.1 requirement, so a client pointed at an older instance reads a reason instead of a bare 404. The join that turns the team and assignedRoles collections into holder rows moved from the CLI into `youtrack_client::project_access`, with its tests, so both front ends report project access from one implementation rather than two that can drift. #YT-84
feat(mcp): expose server version and project team tools
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 35s
Create release / Create release from merged PR (pull_request) Has been skipped
7ae3a62c43
The MCP mirrored the CLI's project surface up to `list_vcs_processors`, so once `yt server version` (YT-82) and `yt project team` (YT-83) landed, an MCP client could no longer reach either. This adds six tools over the client functions those two issues already shipped: no new REST code.

`get_server_version` (new `tools/server.rs`) returns the connected server's version and build. `list_project_team` returns the same document as `yt project team list --json` (team entity, member rows, project-scoped roles), with `all: true` standing in for the CLI's `--all`. `add_project_team_member`, `remove_project_team_member`, `grant_project_role` and `revoke_project_role` take a holder as exactly one of `user` (login) or `group` (name).

The two read tools reject `dry_run` and the four write tools accept it, both through the existing central gate in `dispatch`, so the four are listed in `MUTATING_TOOLS` and the schema tests cover them without new plumbing. Every new args struct implements `LogArgs`, logging only the scalar identifiers of the call. Each new description names the YouTrack 2026.1 requirement, so a client pointed at an older instance reads a reason instead of a bare 404.

The join that turns the team and assignedRoles collections into holder rows moved from the CLI into `youtrack_client::project_access`, with its tests, so both front ends report project access from one implementation rather than two that can drift.

#YT-84
Claude-Run deleted branch feat/YT-84-mcp-server-team-tools 2026-08-01 20:59:23 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pandoras-box/youtrack-cli!138
No description provided.