Skip to main content
Glama
kmosoti

github-projects

by kmosoti

github-projects

Claude Code 및 Codex용 플러그인: Pydantic v2 모델, PEP 544 프로토콜, 그리고 GitHub Projects v2 보드를 관리하는 MCP 서버(예: github.com/users/<owner>/projects/<n>) — 초안 HTTP QUERY 메서드에 대한 일급 지원 포함.

아키텍처

server.py      MCP server (mcp SDK v2, stdio) — 19 tools, structured output
   │  depends on
protocols.py   ProjectsBackend / GraphQLTransport (runtime-checkable Protocols)
   │  implemented by
service.py     GitHubProjectsService — GraphQL over the transport,
               project-id + field caching, string→typed field-value coercion
graphql.py     GraphQL documents (works for both user and org owners)
http.py        QueryClient — HTTP QUERY (draft-ietf-httpbis-safe-method-w-body)
               with per-origin capability memory and POST fallback
models.py      Frozen Pydantic v2 models, __typename-discriminated unions
  • MCP 계층은 오직 ProjectsBackend 프로토콜에만 의존하므로 백엔드를 교체할 수 있고, 테스트에서는 구조적으로 페이크(fake)를 대체물로 사용합니다.

  • QueryClient는 QUERY를 낙관적으로 전송하고, Accept-Query 광고를 기록하며, 전송 오류 시 한 번 재시도하고(QUERY는 안전하고 멱등적임), 405/501 응답 시 오리진(origin)별로 영구히 POST로 폴백합니다. 따라서 현재 GitHub에서도 동작하며, GitHub가 QUERY를 지원하게 되면 스스로 업그레이드됩니다.

Related MCP server: GitHub Project MCP Server

설정

기본 런타임은 free-threaded CPython 3.14.7 (3.14.7t)입니다. 또한 gh CLI가 project 범위(scope)로 인증되어 있어야 합니다.

gh auth refresh -s project      # grants read + write for Projects v2

토큰은 GITHUB_TOKEN / GH_TOKEN에서 확인되며, 그 외에는 gh auth token을 사용합니다.

uv sync
uv run pytest             # 32 tests
uv run gh-projects-mcp    # run the server on stdio

Claude Code 및 Codex에서 사용하기

리포지토리 루트에서:

# Claude Code (registered user-wide)
claude mcp add --scope user github-projects -- uv --directory "$PWD" run gh-projects-mcp

# Codex
codex mcp add github-projects -- uv --directory "$PWD" run gh-projects-mcp

플러그인 매니페스트는 .claude-plugin/plugin.json(MCP 서버는 ${CLAUDE_PLUGIN_ROOT}를 통해 선언됨)과 .codex-plugin/plugin.json에 있으며, 두 호스트 모두를 위한 사용법 스킬은 skills/github-projects/SKILL.md에 있습니다.

도구

도구

용도

list_projects

사용자/조직의 보드를 나열합니다(선택적 검색).

get_project

소유자 + 번호로 보드를 가져옵니다.

list_fields

단일 선택 옵션 및 이터레이션을 포함한 필드를 나열합니다.

list_items

콘텐츠와 필드 값을 포함한 항목을 나열합니다. 선택적으로 저장된 보기 필터 쿼리로 평가할 수 있습니다.

create_project / update_project

보드를 생성하고, 제목/readme/공개 범위/닫힘 상태를 편집합니다.

add_item

URL로 이슈/PR을 추가합니다.

add_draft_issue

초안 이슈를 추가합니다.

update_field_value

필드를 설정합니다. 값은 필드 유형에 따라 강제 변환되는 문자열이며, 단일 선택 및 이터레이션은 이름으로 일치합니다(Status → "Done").

clear_field_value

필드 값을 지웁니다.

archive_item / delete_item

항목을 보관하거나 삭제합니다.

plan_project / apply_project

원하는 상태를 멱등적으로 동기화합니다: 필드 및 옵션 별칭, 의미론적으로 검증된 리프/컨테이너 뷰, 순서가 지정된 열, 명시적 폐기, 항목 메타데이터, 에픽/하위 이슈 계층 구조, 네이티브 이슈 종속성, 레거시 의존성 문구 정리.

sprint_board

한 이터레이션(또는 모든 항목 + 미계획 버킷)의 상태 열 뷰입니다.

epic_breakdown

네이티브 하위 이슈 계층에서 에픽별 완료 현황을 집계합니다.

list_views

저장된 보기의 이름, 레이아웃, 필터, 순서가 지정된 표시 필드를 나열합니다.

post_status_update / list_status_updates

프로젝트의 장기적인 컨텍스트 이력입니다.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers