Files
vasyanskandClaude Sonnet 5.5 04ce6ebdab feat: MCP-сервер для Gitea (Actions, packages, issues)
Просмотр и перезапуск пайплайнов, диагностика падений по логам,
проверка образов в Gitea Packages, создание issue для разбора.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 09:34:01 +07:00

4.4 KiB

gitea-mcp

MCP-сервер (stdio) для Gitea: подключается к репозиториям, смотрит и перезапускает пайплайны Gitea Actions, разбирает причины падений, проверяет сборку образов в Gitea Packages и заводит issue для разбора.

Работает с любым MCP-клиентом (Claude Code, Claude Desktop, Cursor и др.). Без внешних зависимостей, кроме MCP SDK и zod.

Возможности

Область Tools
Репозитории gitea_list_repos, gitea_get_repo, gitea_get_file
Просмотр пайплайнов gitea_list_runs, gitea_get_run, gitea_list_jobs, gitea_get_job_logs (tail / grep)
Диагностика gitea_diagnose_run — упавшие jobs и шаги, блоки ошибок из логов, вероятные причины и способы починки
Управление gitea_rerun_run, gitea_rerun_job, gitea_rerun_failed_jobs, gitea_cancel_run, gitea_dispatch_workflow
Образы и пакеты gitea_list_packages, gitea_check_image — есть ли тег, когда собран, digest, свежесть относительно built_after
Issues gitea_list_issues, gitea_get_issue, gitea_create_issue, gitea_comment_issue, gitea_create_issue_from_run

gitea_create_issue_from_run собирает диагностику упавшего run в issue и не создаёт дубликат, если открытый issue по этому run уже есть.

Требования

  • Node.js ≥ 20
  • Gitea ≥ 1.24 (REST API для Actions: runs, jobs, logs, rerun)
  • Токен доступа (Settings → Applications) со scope: repository (read/write), issue (read/write), package (read)

Установка

git clone <url этого репозитория> gitea-mcp
cd gitea-mcp
npm install
npm run build

Настройка

Переменная Описание
GITEA_URL Адрес инстанса, например https://gitea.example.com
GITEA_TOKEN Токен доступа
GITEA_READONLY true — отключить все изменяющие операции (rerun, cancel, dispatch, создание issue и комментариев)
GITEA_TIMEOUT_MS Таймаут запроса, по умолчанию 30000

Claude Code

claude mcp add gitea -s user \
  -e GITEA_URL=https://gitea.example.com \
  -e GITEA_TOKEN=<токен> \
  -- node /абсолютный/путь/к/gitea-mcp/dist/index.js

Другие клиенты (JSON-конфиг)

{
  "mcpServers": {
    "gitea": {
      "command": "node",
      "args": ["/абсолютный/путь/к/gitea-mcp/dist/index.js"],
      "env": {
        "GITEA_URL": "https://gitea.example.com",
        "GITEA_TOKEN": "<токен>"
      }
    }
  }
}

Безопасность

  • Токен берётся только из переменной окружения и никуда не логируется.
  • Для работы «только на просмотр» используйте GITEA_READONLY=true и токен без write-прав.
  • Логи перед выдачей модели и записью в issue проходят маскировку типовых секретов (пароли, токены, Bearer, приватные ключи, пароли в URL). Маскировка работает по шаблонам и может пропустить нестандартный секрет — просматривайте issue перед публикацией в открытых репозиториях.
  • Причины падений в gitea_diagnose_run — эвристика по тексту лога, а не точный диагноз; рядом всегда приводятся сами блоки ошибок для проверки.

Разработка

npm run dev     # tsc --watch
npm run build

Структура: src/client.ts — HTTP-клиент Gitea, src/diagnose.ts — анализ и маскировка логов, src/runs.ts — общая логика run/job, src/tools.ts, src/packages.ts, src/issues.ts — регистрация tools.

Лицензия

MIT