forgejo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FORGEJO_URL | Yes | Base URL of the Forgejo instance, e.g. https://git.example.com (required) | |
| FORGEJO_TOKEN | No | Personal access token. Required for private repos and any write. | |
| FORGEJO_READ_ONLY | No | Set to 'true' to hide every write tool. Recommended until you trust your setup. Defaults to writes enabled when unset. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_meA | Get the user the configured token authenticates as. Call this first to verify the connection. |
| search_usersC | Search users by name. |
| list_organizationsB | List organizations the authenticated user belongs to. |
| search_repositoriesB | Search repositories on the Forgejo/Gitea instance by keyword. |
| get_repositoryC | Get details of a repository. |
| list_repositoriesA | List repositories owned by a user or organization. Omit owner to list the authenticated user's repositories. |
| create_repositoryB | Create a repository for the authenticated user, or for an organization if |
| fork_repositoryB | Fork a repository to the authenticated user or a given organization. |
| get_file_contentsA | Read a file (decoded to text) or list a directory. Use path '' for the repository root. File results include the blob |
| create_or_update_fileA | Create a file, or update an existing one (then |
| delete_fileC | Delete a file in a repository via a commit. |
| push_filesC | Create, update or delete several files in a single commit. |
| list_branchesC | List branches of a repository. |
| create_branchA | Create a branch from an existing branch (default: the repo's default branch). |
| delete_branchC | Delete a branch. |
| list_commitsB | List commits on a branch/ref, optionally limited to a file path. |
| get_commitB | Get a single commit by SHA, including changed files. |
| list_tagsB | List tags of a repository. |
| list_issuesB | List or search issues in a repository (pull requests excluded). |
| search_issuesC | Search issues/PRs across all repositories visible to the token. |
| get_issueC | Get an issue by number. |
| create_issueA | Create an issue. Labels are given as numeric IDs (see list_labels). |
| update_issueB | Edit an issue's title, body, state, assignees or milestone. |
| list_issue_commentsB | List comments on an issue or pull request. |
| add_issue_commentC | Add a comment to an issue or pull request. |
| list_labelsB | List labels of a repository (returns the IDs needed to label issues). |
| create_labelC | Create a label in a repository. |
| add_issue_labelsB | Add labels (by ID) to an issue or pull request. |
| remove_issue_labelB | Remove one label (by ID) from an issue or pull request. |
| list_milestonesC | List milestones of a repository. |
| list_pull_requestsC | List pull requests in a repository. |
| get_pull_requestB | Get a pull request, including mergeability. |
| create_pull_requestC | Open a pull request from |
| update_pull_requestC | Edit a pull request's title, body, base branch or state. |
| merge_pull_requestC | Merge a pull request using the chosen strategy. |
| get_pull_request_diffB | Get the unified diff (or patch) of a pull request. |
| list_pull_request_filesB | List files changed by a pull request. |
| list_pull_request_reviewsC | List reviews of a pull request. |
| list_pull_request_review_commentsB | List inline comments of a specific review. |
| create_pull_request_reviewA | Submit a review on a pull request, optionally with inline comments. Omit |
| request_pull_request_reviewersC | Request reviews from users on a pull request. |
| list_releasesC | List releases of a repository. |
| get_latest_releaseC | Get the latest published release. |
| get_release_by_tagC | Get the release for a tag name. |
| create_releaseC | Create a release (and its tag if it does not exist yet). |
| list_action_tasksB | List recent Actions (CI) task runs for a repository. |
| get_commit_statusA | Get the combined CI status (and individual statuses) for a ref/SHA. |
| list_workflowsA | List Actions workflows defined in a repository (Forgejo 11+/Gitea 1.24+). |
| dispatch_workflowC | Trigger a workflow_dispatch run (Forgejo 11+/Gitea 1.24+). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 49 tools
Most tools target a clear resource+action, but several list/search pairs overlap: search_issues vs list_issues, list_pull_requests vs search_issues (PRs are issues in Forgejo), and get_file_contents duplicating listing-directory semantics. Descriptions mostly disambiguate, though an agent could still misselect between list and search variants.
Overwhelmingly consistent verb_noun pattern (list_*, get_*, create_*, update_*, merge_*, add_*, remove_*). Minor deviations like create_or_update_file and dispatch_workflow are still readable and purposeful. The 'list_pull_request_*' long forms are consistent within their family.
49 tools is heavy for a single MCP server and exceeds the 25+ threshold. The surface spans repos, files, branches, commits, issues, PRs, reviews, labels, releases, milestones, and Actions CI—workable but burdened with granular tools that could be consolidated or grouped.
Broad, well-rounded coverage of the Forgejo/Gitea domain: full file CRUD, branches, commits, issues, PRs, reviews, labels, releases, and CI status/workflows. Some gaps remain (e.g., deleting/editing releases, managing milestones, listing PR reviewers/assignees, closing organizations), but core workflows are covered.