feat: implement team management #10

Open
opened 2026-06-02 06:56:59 +00:00 by a-limasov · 0 comments
Owner

Context

Teams are the access-control mechanism inside organizations. Currently the MCP server
can only list teams. Full team management means creating teams, adding/removing members
and repositories, enabling fine-grained permissions across an organization.

Endpoints to implement

Method Path Tool name Description
GET /teams/{id} get_team Get team details
PATCH /teams/{id} update_team Update team name/permission
DELETE /teams/{id} delete_team Delete a team
GET /teams/{id}/members list_team_members List team members
PUT /teams/{id}/members/{username} add_team_member Add member to team
DELETE /teams/{id}/members/{username} remove_team_member Remove member from team
GET /teams/{id}/repos list_team_repos List repos accessible to team
PUT /teams/{id}/repos/{org}/{repo} add_team_repo Add repo to team
DELETE /teams/{id}/repos/{org}/{repo} remove_team_repo Remove repo from team
GET /orgs/{org}/teams/search search_org_teams Search teams in org

Acceptance Criteria

  • get_team(id) returns team object with name, permission, units, members_count, repos_count
  • update_team(id, name, permission, description, units) via PATCH
  • delete_team(id) returns {"success": true} on 204
  • add_team_member / remove_team_member return {"success": true} on 204
  • add_team_repo / remove_team_repo return {"success": true} on 204
  • search_org_teams(org, query, limit) returns matching teams

Technical Notes

  • PATCH /teams/{id} body: {"name": "...", "description": "...", "permission": "write", "units": ["repo.code", "repo.issues"]}
  • PUT /teams/{id}/members/{username} and PUT /teams/{id}/repos/{org}/{repo} have no request body
  • Team units controls which repo sections the team can access: repo.code, repo.issues, repo.pulls, repo.releases, repo.wiki, repo.projects, repo.packages
  • id is an integer (team ID), not a name
## Context Teams are the access-control mechanism inside organizations. Currently the MCP server can only list teams. Full team management means creating teams, adding/removing members and repositories, enabling fine-grained permissions across an organization. ## Endpoints to implement | Method | Path | Tool name | Description | |--------|------|-----------|-------------| | GET | `/teams/{id}` | `get_team` | Get team details | | PATCH | `/teams/{id}` | `update_team` | Update team name/permission | | DELETE | `/teams/{id}` | `delete_team` | Delete a team | | GET | `/teams/{id}/members` | `list_team_members` | List team members | | PUT | `/teams/{id}/members/{username}` | `add_team_member` | Add member to team | | DELETE | `/teams/{id}/members/{username}` | `remove_team_member` | Remove member from team | | GET | `/teams/{id}/repos` | `list_team_repos` | List repos accessible to team | | PUT | `/teams/{id}/repos/{org}/{repo}` | `add_team_repo` | Add repo to team | | DELETE | `/teams/{id}/repos/{org}/{repo}` | `remove_team_repo` | Remove repo from team | | GET | `/orgs/{org}/teams/search` | `search_org_teams` | Search teams in org | ## Acceptance Criteria - [ ] `get_team(id)` returns team object with `name`, `permission`, `units`, `members_count`, `repos_count` - [ ] `update_team(id, name, permission, description, units)` via PATCH - [ ] `delete_team(id)` returns `{"success": true}` on 204 - [ ] `add_team_member` / `remove_team_member` return `{"success": true}` on 204 - [ ] `add_team_repo` / `remove_team_repo` return `{"success": true}` on 204 - [ ] `search_org_teams(org, query, limit)` returns matching teams ## Technical Notes - `PATCH /teams/{id}` body: `{"name": "...", "description": "...", "permission": "write", "units": ["repo.code", "repo.issues"]}` - `PUT /teams/{id}/members/{username}` and `PUT /teams/{id}/repos/{org}/{repo}` have no request body - Team `units` controls which repo sections the team can access: `repo.code`, `repo.issues`, `repo.pulls`, `repo.releases`, `repo.wiki`, `repo.projects`, `repo.packages` - `id` is an integer (team ID), not a name
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: a-limasov/gitea-platform-mcp#10