Skip to main content
Glama
kmosoti

github-projects

by kmosoti

github-projects

Плагин для Claude Code и Codex: модели Pydantic v2, протоколы PEP 544 и MCP-сервер для управления досками GitHub Projects v2 (например, 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, поэтому бэкенды взаимозаменяемы, а тесты структурно подставляют фейки.

  • QueryClient отправляет QUERY оптимистично, фиксирует анонсы Accept-Query, повторяет попытку один раз при транспортных ошибках (QUERY безопасен и идемпотентен) и навсегда переключается на POST для каждого origin при 405/501 — так что он работает с GitHub уже сегодня и сам переключается на QUERY, когда GitHub добавит его поддержку.

Related MCP server: GitHub Project MCP Server

Настройка

Основная среда выполнения — CPython 3.14.7 free-threaded (3.14.7t). Также требуется, чтобы CLI gh был аутентифицирован с областью project:

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

Добавить issue/PR по URL

add_draft_issue

Добавить черновик issue

update_field_value

Установить поле; значения — строки, приводимые к типу поля — одиночный выбор и итерации сопоставляются по имени (Status → "Done")

clear_field_value

Очистить поле

archive_item / delete_item

Архивировать или удалить элемент

plan_project / apply_project

Идемпотентное приведение к желаемому состоянию: поля и псевдонимы вариантов, семантически проверенные листовые/контейнерные представления, упорядоченные колонки, явные выводы из эксплуатации, метаданные элементов, иерархия эпик/под-issue, нативные зависимости issue и очистка устаревших текстовых описаний зависимостей

sprint_board

Представление статусной колонки для одной итерации (или всех элементов + незапланированного бакета)

epic_breakdown

Сводка завершённости по эпикам из нативной иерархии под-issue

list_views

Сохранённые представления с названием, макетом, фильтром и упорядоченными видимыми полями

post_status_update / list_status_updates

Долгосрочная контекстная история проекта

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers