Initial commit: Gitea MCP server with 62 tools

- Full Gitea REST API coverage for repos, issues, PRs, branches,
  files, releases, webhooks, orgs, notifications
- Multi-instance support via config.json
- pyproject.toml with pinned dependencies (mcp[cli], httpx)
- config.example.json as credentials template (config.json is gitignored)
This commit is contained in:
2026-06-02 08:31:39 +03:00
commit 781439bbdb
8 changed files with 889 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
---
name: gitea
description: >
Use this skill when the user asks to work with their Gitea server:
"покажи мои репозитории", "создай репозиторий", "открой issue", "закрой issue",
"создай pull request", "смерджи PR", "добавь вебхук", "покажи релизы",
"создай ветку", "покажи коммиты", "сравни ветки", "список организаций",
"переключись на work gitea", "gitea", "list repos", "create issue",
"open PR", "merge pull request", "create release", "add webhook",
"list branches", "gitea notifications", "check gitea connection".
metadata:
version: "0.2.0"
---
# Gitea Platform Assistant
Full Gitea REST API integration. All tools: `mcp__gitea__<tool_name>`.
## First Use
Always start by checking the connection and listing available instances:
```
mcp__gitea__list_instances() → shows configured instances + default
mcp__gitea__get_current_user() → verifies auth works
```
If these fail, tell the user to fill in `config.json` in the plugin folder.
## Instance Selection
Every tool has an optional `instance` parameter (defaults to `""` = use default from config).
When user says "на work" / "на home" / "on the work server" → pass `instance="work"` (or relevant name).
When no instance is specified → pass `instance=""` (uses config default).
## Tool Categories
### Meta & Health
- `list_instances()` — show all configured instances
- `get_server_info(instance)` — Gitea version
- `get_current_user(instance)` — authenticated user
### Repositories
- `list_my_repos(limit, page, instance)`
- `search_repos(query, instance)`
- `get_repo(owner, repo, instance)`
- `create_repo(name, description, private, auto_init, default_branch, instance)`
- `create_org_repo(org, name, ..., instance)`
- `update_repo(owner, repo, ..., instance)`
- `delete_repo(owner, repo, instance)` ⚠️ permanent
- `fork_repo(owner, repo, organization, new_repo_name, instance)`
- `set_repo_topics(owner, repo, topics, instance)`
### Branches & Tags
- `list_branches(owner, repo, instance)`
- `get_branch(owner, repo, branch, instance)`
- `create_branch(owner, repo, new_branch_name, old_branch_name, instance)`
- `delete_branch(owner, repo, branch, instance)` ⚠️
- `list_tags(owner, repo, instance)`
### Files
- `list_directory(owner, repo, path, ref, instance)` — browse repo tree
- `get_file(owner, repo, filepath, ref, instance)` — returns content + sha
- `create_file(owner, repo, filepath, content, message, branch, instance)` — plain text input, auto-encoded
- `update_file(owner, repo, filepath, content, message, sha, branch, instance)` — requires sha from get_file
- `delete_file(owner, repo, filepath, message, sha, branch, instance)` — requires sha
### Issues
- `list_issues(owner, repo, state, type, labels, assignee, limit, instance)`
- `get_issue(owner, repo, index, instance)`
- `create_issue(owner, repo, title, body, assignees, labels, instance)`
- `update_issue(owner, repo, index, title, body, state, instance)`
- `close_issue / reopen_issue(owner, repo, index, instance)`
- `list_issue_comments / add_issue_comment / edit_issue_comment / delete_issue_comment`
### Labels & Milestones
- `list_labels / create_label(name, color #rrggbb) / add_issue_labels`
- `list_milestones / create_milestone(title, due_on)`
### Pull Requests
- `list_pull_requests(owner, repo, state, instance)`
- `get_pull_request(owner, repo, index, instance)`
- `create_pull_request(owner, repo, title, head, base, body, instance)`
- `merge_pull_request(owner, repo, index, merge_style, instance)` — merge_style: merge|rebase|squash
- `get_pr_diff(owner, repo, index, instance)` — returns diff text
- `list_pr_reviews / create_pr_review(state: APPROVED|COMMENT|REQUEST_CHANGES)`
### Releases
- `list_releases / get_latest_release / create_release / delete_release`
### Webhooks
- `list_repo_webhooks / create_repo_webhook(url, events) / delete_repo_webhook`
### Users & Organizations
- `get_current_user / get_user(username) / search_users(query)`
- `list_my_orgs / get_org / list_org_repos / list_org_members / list_org_teams`
### Commits & Activity
- `list_commits(owner, repo, sha, path, limit)`
- `compare_branches(owner, repo, base, head)` — diff + commit list
- `list_repo_contributors`
### Notifications
- `list_notifications(all) / mark_all_notifications_read`