Skip to content

Issue Tracker MCP: GitHub milestone op 추가 #81

@hagyutae

Description

@hagyutae

배경

mcp/issue-tracker/ 의 GitHub adapter 에 milestone 관련 op 가 누락. 현재 ABC + adapter + MCP tool 의 메타 entity 가 status / type / field 셋만 있고 milestone 은 빠져 있음.

GitHub 의 milestone 은 Project V2 의 field option 이 아닌 repo-level entity (REST /repos/{owner}/{repo}/milestones 또는 GraphQL Milestone). status / type 의 Project field option 패턴과 책임이 달라 별 ops 가 필요.

작업 항목

  • shared/issue_tracker/schemas/refs.pyMilestoneRef 추가 (id / number / title / state / due_on)
  • mcp/issue-tracker/adapters/base.pyMilestoneOps ABC — list / create / update / close / delete
  • IssueTracker 컴포지트에 milestones property
  • mcp/issue-tracker/adapters/github/milestone.py — REST 또는 GraphQL 구현체
  • mcp/issue-tracker/adapters/github/adapter.py 에 wiring
  • mcp/issue-tracker/tools/milestone.py — MCP 도구 노출 (milestone.list / milestone.create / milestone.update / milestone.close / milestone.delete)
  • dev_team_shared.issue_tracker.IssueTrackerClientmilestones sub-client
  • shared/issue_tracker/schemas/issue.pyIssueCreate / IssueUpdatemilestone_id 필드 (issue ↔ milestone 연결)
  • adapter 의 issue.create / update 가 milestone_id 처리
  • 단위 테스트 (mock GitHub API) + 통합 검증

컨벤션

mcp/CLAUDE.md §0 의 thin bridge 원칙 — GitHub milestone 의 사실을 그대로 노출 (id + title + state). 호출자 (LLM) 가 직접 결정 / create 호출.

관련

  • mcp/issue-tracker/adapters/base.py — 4 ops 분리 (ISP) 패턴
  • mcp/issue-tracker/adapters/github/status.py — Project field option 패턴 참조 (단 milestone 은 다른 구조)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions