Files
redmine-mcp/app/entities/members.py
T
2026-03-20 14:09:28 +02:00

42 lines
1.2 KiB
Python

import json
from ..mcp import mcp
from ..client import _get, _put
@mcp.tool()
def get_project_members(project_id: str) -> str:
"""
Get members of a Redmine project (useful for finding user IDs for assignment).
Args:
project_id: Project ID or identifier (slug)
"""
data = _get(f"/projects/{project_id}/memberships.json")
members = [
{
"id": m.get("user", {}).get("id"),
"name": m.get("user", {}).get("name"),
"roles": [r["name"] for r in m.get("roles", [])],
}
for m in data.get("memberships", [])
if "user" in m
]
return json.dumps(members, ensure_ascii=False, indent=2)
@mcp.tool()
def assign_issue(issue_id: int, assigned_to_id: int, comment: str = "") -> str:
"""
Assign a Redmine issue to a user.
Args:
issue_id: Redmine issue ID
assigned_to_id: User ID to assign to (use get_project_members to find IDs)
comment: Optional comment to add with the assignment
"""
body: dict = {"issue": {"assigned_to_id": assigned_to_id}}
if comment:
body["issue"]["notes"] = comment
_put(f"/issues/{issue_id}.json", body)
return f"Issue #{issue_id} assigned to user_id={assigned_to_id}."