81af30e8bb31ab89855b252d9a6862135ffca4d8
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
Languages
TypeScript
97.5%
JavaScript
2.5%