Skip to main content
Glama

forgejo-mcp

Mozilla Public License 2.0
9
features.md•9.65 kB
# Feature List ## Implementation Strategy - 🟢 **SDK**: Implementation using official SDK - 🟔 **Custom**: Custom HTTP request implementation (reusing SDK authentication) - šŸ”“ **Mixed**: Some features using SDK, some requiring custom implementation ### Label Features Labels available for a specific repository - **List Labels** 🟢 - `GET /repos/{owner}/{repo}/labels` - SDK: `ListRepoLabels(owner, repo string, opt ListLabelsOptions) ([]*Label, *Response, error)` - **Modify label name, description, and color** 🟢 - `PATCH /repos/{owner}/{repo}/labels/{id}` - SDK: `EditLabel(owner, repo string, id int64, opt EditLabelOption) (*Label, *Response, error)` - **Create or delete labels** 🟢 - `POST /repos/{owner}/{repo}/labels` - SDK: `CreateLabel(owner, repo string, opt CreateLabelOption) (*Label, *Response, error)` - `DELETE /repos/{owner}/{repo}/labels/{id}` - SDK: `DeleteLabel(owner, repo string, id int64) (*Response, error)` ### Milestone Features 🟢 - **List Milestones** - `GET /repos/{owner}/{repo}/milestones` - SDK: `ListRepoMilestones(owner, repo string, opt ListMilestoneOption) ([]*Milestone, *Response, error)` - **Create, delete, and modify milestones (including title, due date, and description)** - `POST /repos/{owner}/{repo}/milestones` - SDK: `CreateMilestone(owner, repo string, opt CreateMilestoneOption) (*Milestone, *Response, error)` - `DELETE /repos/{owner}/{repo}/milestones/{id}` - SDK: `DeleteMilestone(owner, repo string, id int64) (*Response, error)` - `PATCH /repos/{owner}/{repo}/milestones/{id}` - SDK: `EditMilestone(owner, repo string, id int64, opt EditMilestoneOption) (*Milestone, *Response, error)` ### Issue Features šŸ”“ - **List Repository Issues** 🟢 - `GET /repos/{owner}/{repo}/issues` - SDK: `ListRepoIssues(owner, repo string, opt ListIssueOption) ([]*Issue, *Response, error)` - Supports filters: state, labels, milestones, assignees, search, date filters - **Get Specific Issue Details** 🟢 - `GET /repos/{owner}/{repo}/issues/{index}` - SDK: `GetIssue(owner, repo string, index int64) (*Issue, *Response, error)` - **List Issue Comments** 🟢 - `GET /repos/{owner}/{repo}/issues/{index}/comments` - SDK: `ListIssueComments(owner, repo string, index int64, opt ListIssueCommentOptions) ([]*Comment, *Response, error)` - **Create new issue** 🟢 - `POST /repos/{owner}/{repo}/issues` - SDK: `CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue, *Response, error)` - **Comment on existing issue** 🟢 - `POST /repos/{owner}/{repo}/issues/{index}/comments` - SDK: `CreateIssueComment(owner, repo string, index int64, opt CreateIssueCommentOption) (*Comment, *Response, error)` - **Close issue** 🟢 - `PATCH /repos/{owner}/{repo}/issues/{index}` (set `state` to `closed`) - SDK: `EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)` - **Modify issue data** 🟢 - **Description:** `PATCH /repos/{owner}/{repo}/issues/{index}` (modify `body`) - SDK: `EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)` - **Labels:** 🟢 - `POST /repos/{owner}/{repo}/issues/{index}/labels` (add) - SDK: `AddIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error)` - `DELETE /repos/{owner}/{repo}/issues/{index}/labels/{id}` (remove) - SDK: `DeleteIssueLabel(owner, repo string, index, label int64) (*Response, error)` - `PUT /repos/{owner}/{repo}/issues/{index}/labels` (replace) - SDK: `ReplaceIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, *Response, error)` - **Assignees:** 🟢 `PATCH /repos/{owner}/{repo}/issues/{index}` (modify `assignees`) - SDK: `EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)` - **Milestone:** 🟢 `PATCH /repos/{owner}/{repo}/issues/{index}` (modify `milestone`) - SDK: `EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)` - **Due date:** 🟢 `PATCH /repos/{owner}/{repo}/issues/{index}` (modify `due_date`) - SDK: `EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, *Response, error)` - **Dependency management:** 🟔 - **Dependencies (issues that block this issue):** - **Add dependency:** `POST /repos/{owner}/{repo}/issues/{index}/dependencies` - Custom: Not supported by SDK, requires custom HTTP request - **List dependencies:** `GET /repos/{owner}/{repo}/issues/{index}/dependencies` - Custom: Not supported by SDK, requires custom HTTP request - **Remove dependency:** `DELETE /repos/{owner}/{repo}/issues/{index}/dependencies` (via request body) - Custom: Not supported by SDK, requires custom HTTP request - **Blocking (issues blocked by this issue):** - **Add blocking:** `POST /repos/{owner}/{repo}/issues/{index}/blocks` - Custom: Not supported by SDK, requires custom HTTP request - **List blocking:** `GET /repos/{owner}/{repo}/issues/{index}/blocks` - Custom: Not supported by SDK, requires custom HTTP request - **Remove blocking:** `DELETE /repos/{owner}/{repo}/issues/{index}/blocks` (via request body) - Custom: Not supported by SDK, requires custom HTTP request - **Edit Issue Comments** 🟢 - `PATCH /repos/{owner}/{repo}/issues/comments/{id}` - SDK: `EditIssueComment(owner, repo string, commentID int64, opt EditIssueCommentOption) (*Comment, *Response, error)` - **Delete Issue Comments** 🟢 - `DELETE /repos/{owner}/{repo}/issues/comments/{id}` - SDK: `DeleteIssueComment(owner, repo string, commentID int64) (*Response, error)` - **Attachment management** 🟔 - **List attachments:** `GET /repos/{owner}/{repo}/issues/{index}/assets` - Custom: Not supported by SDK, requires custom HTTP request - **Delete attachment:** `DELETE /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id}` - Custom: Not supported by SDK, requires custom HTTP request - **Modify attachment:** `PATCH /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id}` - Custom: Not supported by SDK, requires custom HTTP request ### Wiki Features 🟔 - **Query pages** - `GET /repos/{owner}/{repo}/wiki/page/{pageName}` - Custom: Not supported by SDK, requires custom HTTP request - **List pages** - `GET /repos/{owner}/{repo}/wiki/pages` - Custom: Not supported by SDK, requires custom HTTP request - **Create, delete, and modify pages** - `POST /repos/{owner}/{repo}/wiki/new` - Custom: Not supported by SDK, requires custom HTTP request - `DELETE /repos/{owner}/{repo}/wiki/page/{pageName}` - Custom: Not supported by SDK, requires custom HTTP request - `PATCH /repos/{owner}/{repo}/wiki/page/{pageName}` - Custom: Not supported by SDK, requires custom HTTP request ### Release Management 🟢 - **List Releases** - `GET /repos/{owner}/{repo}/releases` - SDK: `ListReleases(owner, repo string, opt ListReleasesOptions) ([]*Release, *Response, error)` - **Create, delete, and modify releases** - `POST /repos/{owner}/{repo}/releases` - SDK: `CreateRelease(owner, repo string, opt CreateReleaseOption) (*Release, *Response, error)` - `DELETE /repos/{owner}/{repo}/releases/{id}` - SDK: `DeleteRelease(user, repo string, id int64) (*Response, error)` - `PATCH /repos/{owner}/{repo}/releases/{id}` - SDK: `EditRelease(owner, repo string, id int64, form EditReleaseOption) (*Release, *Response, error)` - **Attachment management** - **List attachments:** `GET /repos/{owner}/{repo}/releases/{id}/assets` - SDK: `ListReleaseAttachments(user, repo string, release int64, opt ListReleaseAttachmentsOptions) ([]*Attachment, *Response, error)` - **Delete attachment:** `DELETE /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id}` - SDK: `DeleteReleaseAttachment(user, repo string, release, id int64) (*Response, error)` - **Modify attachment:** `PATCH /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id}` - SDK: `EditReleaseAttachment(user, repo string, release, attachment int64, form EditAttachmentOptions) (*Attachment, *Response, error)` ### PR Management 🟢 - **List and query PRs** - `GET /repos/{owner}/{repo}/pulls` - SDK: `ListRepoPullRequests(owner, repo string, opt ListPullRequestsOptions) ([]*PullRequest, *Response, error)` - `GET /repos/{owner}/{repo}/pulls/{index}` - SDK: `GetPullRequest(owner, repo string, index int64) (*PullRequest, *Response, error)` ### Repository Management 🟢 - **List and query repositories** - `GET /repos/search` - SDK: `SearchRepos(opt SearchRepoOptions) ([]*Repository, *Response, error)` - `GET /user/repos` - SDK: `ListMyRepos(opt ListReposOptions) ([]*Repository, *Response, error)` - `GET /orgs/{org}/repos` - SDK: `ListOrgRepos(org string, opt ListOrgReposOptions) ([]*Repository, *Response, error)` - **Get Specific Repository Information** 🟢 - `GET /repos/{owner}/{repo}` - SDK: `GetRepo(owner, repo string) (*Repository, *Response, error)` ### Forgejo Actions (CI/CD) 🟔 - **List Action execution tasks** - `GET /repos/{owner}/{repo}/actions/tasks` - Custom: Not supported by SDK, requires custom HTTP request ## Summary - 🟢 **Fully supported (5/7)**: Label, Milestone, Release, PR, Repository management - šŸ”“ **Partially supported (1/7)**: Issue features (attachments and dependencies require custom implementation) - 🟔 **Requires custom implementation (2/7)**: Wiki, Forgejo Actions **Recommended Hybrid approach**: Approximately 71% of features can use SDK, remaining features require custom HTTP requests.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/raohwork/forgejo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server