Gitea MCP Multitenant Proxy Server
Provides a multi-tenant MCP proxy to the Gitea API, exposing 257 tools across 22 resource domains for repository management, branches and tags, file contents and commits, issues, comments, labels, milestones, reactions, subscriptions, time tracking, and related CRUD/search operations.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Gitea MCP Multitenant Proxy Server
This repository contains a Model Context Protocol (MCP) server that acts as a secure, multi-tenant proxy between an AI Assistant and the Gitea backend API. It exposes 317 MCP tools covering 23 resource domains with full CRUD, search, and repository management.
โจ Features
๐ Identity Passthrough โ Extracts the
Authorization: Bearer <token>header from incoming HTTP requests and forwards it to the Gitea API without server-side authentication.๐ฅ Multi-Tenancy โ Uses Python
contextvarsto maintain thread-safe user identity isolation, ensuring all AI-driven actions are scoped to the authenticated user's permissions.๐ Full Gitea Coverage โ 317 text-only tools mapped to Gitea API endpoints across 23 resource domains.
โก TOON Optimization โ Bulk list responses are automatically compressed using TOON (Token-Optimized Object Notation) to reduce token consumption and maximize context window efficiency.
๐ Efficient Gets โ GET responses return only commonly used fields by default. Full objects are available via an
include_all_fieldsflag.๐งช Comprehensive Testing โ 364 automated tests covering all tool domains, run via the test runner pipeline.
๐ท๏ธ Tool Annotations โ All tools expose standard MCP ToolAnnotations hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). The tags field carries grouping metadata (basic/primary/advanced + gitea).
Related MCP server: gitea-mcp
๐ง Environment Variables
Variable | Required | Description |
| Yes | Docker-internal URL of the Gitea API (e.g. |
| Yes | Port number the MCP server listens on |
| No | When |
| No | When |
๐ฆ Installation & Local Development
Ensure you have Python 3.12+ installed.
Install dependencies:
pip install fastmcp httpx pydantic uvicorn toon-mcp-serverRun the server:
export GITEA_BASE_URL=http://gitea-app:3000/api/v1 export MCP_SERVER_PORT=80 python -m src.main
๐ณ Docker Deployment
Build and run the server using Docker:
docker build -t gitea-mcp:latest .
docker run -d --name gitea-mcp \
-e GITEA_BASE_URL="http://gitea-app:3000/api/v1" \
-e MCP_SERVER_PORT=80 \
gitea-mcp:latestThe MCP server serves at http://gitea-mcp:80/mcp (Streamable HTTP).
โ ๏ธ Important Notes
๐
include_all_fieldsโ Theinclude_all_fieldsparameter (available on allget_*andlist_*tools) controls whether all available fields are included in responses. Defaults toFalsefor performance; set toTrueonly when additional fields are needed.๐
ALLOW_ALL_AGGREGATEโ Controls whether aggregate listing tools respect theinclude_all_fieldsparameter. When set tofalse(default), all aggregate list operations silently return only default fields regardless of the caller's request.โก TOON Compression โ All bulk list responses are automatically compressed using TOON to reduce token consumption by 30โ60%.
๐ Required Fields & Defaults โ Each
create_*tool requires specific key fields.descriptionis mandatory on create tools that expose it, andbodyis mandatory for issue, pull request, release, and comment creation. All other fields default to empty strings or reasonable values. Datetime values use ISO 8601 with an explicit offset.
๐ ๏ธ API Tool Mapping
The server implements 257 MCP tools organized into the following categories:
๐๏ธ Repositories (23 tools)
get_versionโ Get the Gitea server versioncreate_current_user_repoโ Create a repository for the authenticated usercreate_org_repoโ Create a repository in an organizationcreate_org_repo_deprecatedโ Create a repository in an organization using the deprecated /org routerepo_getโ Get a repositoryrepo_get_by_idโ Get a repository by IDrepo_searchโ Search for repositoriesrepo_editโ Edit a repository's propertiesrepo_deleteโ Delete a repositoryrepo_migrateโ Migrate a remote git repositorygenerate_repoโ Create a repository using a templatecreate_forkโ Fork a repositorylist_forksโ List a repository's forksrepo_merge_upstreamโ Merge a branch from upstreamrepo_get_assigneesโ List users who can be assigned to issues in a repositoryrepo_get_reviewersโ List users who can be requested as reviewersrepo_get_languagesโ Get repository language statisticsrepo_get_licensesโ Get repository licensesrepo_list_activity_feedsโ List a repository's activity feedsrepo_get_issue_templatesโ Get available issue templates for a repositoryrepo_list_pinned_issuesโ List pinned issuesrepo_list_pinned_pull_requestsโ List pinned pull requestsrepo_check_assigneeโ Check whether a user can be assigned to issues in a repository
๐ฟ Branches & Tags (10 tools)
repo_list_branchesโ List repository branchesrepo_create_branchโ Create a branchrepo_delete_branchโ Delete a branchrepo_get_branchโ Get a repository branch, including effective branch protectionrepo_rename_branchโ Rename a branchrepo_list_tagsโ List repository tagsrepo_create_tagโ Create a git tagrepo_delete_tagโ Delete a tag by namerepo_get_tagโ Get a repository tag by namerepo_update_branchโ Update a branch reference to a new commit
๐ Contents, Commits & Git (19 tools)
repo_get_contents_listโ Get metadata for all entries in the repository rootrepo_get_contentsโ Get repository file or directory contentsrepo_create_fileโ Create a file in a repositoryrepo_update_fileโ Update a file in a repository if SHA is set, or create the file if SHA is not setrepo_delete_fileโ Delete a file in a repositoryrepo_change_filesโ Modify multiple files in a repositoryrepo_apply_diff_patchโ Apply diff patch to repositoryrepo_get_all_commitsโ Get a list of all commits from a repositoryrepo_get_single_commitโ Get a single commit from a repository, it has a GitHub-compatible alias "/repos/{owner}/{repo}/commits/{ref}"repo_compare_diffโ Get commit comparison informationrepo_get_combined_status_by_refโ Get a commit's combined status, by branch/tag/commit referencerepo_list_statuses_by_refโ Get a commit's statuses, by branch/tag/commit referencerepo_list_statusesโ Get a commit's statusesrepo_create_statusโ Create a commit statusget_blobโ Get a repository blobget_treeโ Get a repository treerepo_list_all_git_refsโ List all git refsrepo_list_git_refsโ List git refs matching a referenceget_annotated_tagโ Get an annotated tag object
๐ Issues (9 tools)
issue_search_issuesโ Search for issues across the repositories that the user has access toissue_list_issuesโ List a repository's issuesissue_create_issueโ Create an issueissue_get_issueโ Get an issueissue_edit_issueโ Edit an issueissue_deleteโ Delete an issueissue_add_assigneesโ Add assignees to an issueissue_remove_assigneesโ Remove assignees from an issueissue_check_assigneeโ Check whether a user is assigned to an issue
๐ฌ Issue Comments & Timeline (9 tools)
issue_get_repo_commentsโ List issue comments across a repositoryissue_get_commentsโ List comments on an issueissue_get_commentโ Get an issue comment by comment IDissue_create_commentโ Create a comment on an issueissue_edit_commentโ Edit a repository issue comment by comment IDissue_delete_commentโ Delete a repository issue comment by comment IDissue_edit_comment_deprecatedโ Edit an issue comment by issue number and comment ID using the deprecated routeissue_delete_comment_deprecatedโ Delete an issue comment by issue number and comment ID using the deprecated routeissue_get_comments_and_timelineโ List comments and timeline events for an issue
๐ท๏ธ Labels (15 tools)
org_list_labelsโ List organization labelsorg_create_labelโ Create an organization labelorg_delete_labelโ Delete an organization labelorg_get_labelโ Get an organization labelorg_edit_labelโ Update an organization labelissue_clear_labelsโ Remove all labels from an issueissue_get_labelsโ List labels on an issueissue_add_labelโ Add labels to an issueissue_replace_labelsโ Replace labels on an issueissue_remove_labelโ Remove a label from an issueissue_list_labelsโ List repository labelsissue_create_labelโ Create a repository labelissue_delete_labelโ Delete a repository labelissue_get_labelโ Get a repository labelissue_edit_labelโ Update a repository label
๐ฏ Milestones (5 tools)
issue_get_milestones_listโ Get all of a repository's opened milestonesissue_create_milestoneโ Create a milestoneissue_delete_milestoneโ Delete a milestoneissue_get_milestoneโ Get a milestoneissue_edit_milestoneโ Update a milestone
๐ Issue Reactions & Subscriptions (10 tools)
issue_delete_comment_reactionโ Remove a reaction from a comment of an issueissue_get_comment_reactionsโ Get a list of reactions from a comment of an issueissue_post_comment_reactionโ Add a reaction to a comment of an issueissue_delete_issue_reactionโ Remove a reaction from an issueissue_get_issue_reactionsโ Get a list reactions of an issueissue_post_issue_reactionโ Add a reaction to an issueissue_subscriptionsโ Get users who subscribed on an issueissue_check_subscriptionโ Check if user is subscribed to an issueissue_delete_subscriptionโ Unsubscribe user from issueissue_add_subscriptionโ Subscribe user to issue
โฑ๏ธ Time Tracking & Stopwatches (11 tools)
issue_reset_timeโ Reset a tracked time of an issueissue_tracked_timesโ List an issue's tracked timesissue_add_timeโ Add tracked time to a issueissue_delete_timeโ Delete specific tracked timeissue_delete_stop_watchโ Delete an issue's existing stopwatchissue_start_stop_watchโ Start stopwatch on an issueissue_stop_stop_watchโ Stop an issue's existing stopwatchrepo_tracked_timesโ List a repo's tracked timesuser_tracked_timesโ List a user's tracked times in a repouser_current_tracked_timesโ List the current user's tracked timesuser_get_stop_watchesโ Get list of all existing stopwatches
๐ Issue Relationships & Workflow (12 tools)
issue_remove_issue_blockingโ Unblock the issue given in the body by the issue in pathissue_list_blocksโ List issues that are blocked by this issueissue_create_issue_blockingโ Block the issue given in the body by the issue in pathissue_edit_issue_deadlineโ Set an issue deadlineissue_remove_issue_dependenciesโ Remove an issue dependencyissue_list_issue_dependenciesโ List an issue's dependencies, i.e all issues that block this issueissue_create_issue_dependenciesโ Make the issue in the url depend on the issue in the formissue_unlock_issueโ Unlock an issueissue_lock_issueโ Lock an issueunpin_issueโ Unpin an Issuepin_issueโ Pin an Issuemove_issue_pinโ Moves the Pin to the given Position
๐ Pull Requests (12 tools)
repo_get_commit_pull_requestโ Get the merged pull request of the commitrepo_list_pull_requestsโ List a repo's pull requestsrepo_create_pull_requestโ Create a pull requestrepo_get_pull_request_by_base_headโ Get a pull request by base and headrepo_get_pull_requestโ Get a pull requestrepo_edit_pull_requestโ Update a pull requestrepo_pull_request_is_mergedโ Check if a pull request has been mergedrepo_merge_pull_requestโ Merge a pull requestrepo_update_pull_requestโ Merge PR's baseBranch into headBranchrepo_get_pull_request_commitsโ Get commits for a pull requestrepo_get_pull_request_filesโ Get changed files for a pull requestrepo_cancel_scheduled_auto_mergeโ Cancel the scheduled auto merge for the given pull request
๐ Pull Request Reviews (13 tools)
repo_delete_pull_review_requestsโ Cancel review requests for a pull requestrepo_create_pull_review_requestsโ Create review requests for a pull requestrepo_list_pull_reviewsโ List all reviews for a pull requestrepo_create_pull_reviewโ Create a review to a pull requestrepo_delete_pull_reviewโ Delete a specific review from a pull requestrepo_get_pull_reviewโ Get a specific review for a pull requestrepo_submit_pull_reviewโ Submit a pending review to a pull requestrepo_get_pull_review_commentsโ List comments for a specific pull request reviewrepo_dismiss_pull_reviewโ Dismiss a review for a pull requestrepo_un_dismiss_pull_reviewโ Cancel to dismiss a review for a pull requestrepo_resolve_pull_review_commentโ Resolve a pull request review commentrepo_unresolve_pull_review_commentโ Unresolve a pull request review commentrepo_create_pull_review_comment_replyโ Reply to a pull request review comment
๐ Releases (8 tools)
repo_list_releasesโ List a repo's releasesrepo_create_releaseโ Create a releaserepo_get_latest_releaseโ Get the most recent non-prerelease, non-draft release of a repository, sorted by created_atrepo_delete_release_by_tagโ Delete a release by tag namerepo_get_release_by_tagโ Get a release by tag namerepo_delete_releaseโ Delete a releaserepo_get_releaseโ Get a releaserepo_edit_releaseโ Update a release
๐ Wiki & Topics (11 tools)
repo_list_topicsโ Get list of topics that a repository hasrepo_update_topicsโ Replace list of topics for a repositoryrepo_delete_topicโ Delete a topic from a repositoryrepo_add_topicโ Add a topic to a repositoryrepo_create_wiki_pageโ Create a wiki pagerepo_delete_wiki_pageโ Delete a wiki pagerepo_get_wiki_pageโ Get a wiki pagerepo_edit_wiki_pageโ Edit a wiki pagerepo_get_wiki_pagesโ Get all wiki pagesrepo_get_wiki_page_revisionsโ Get revisions of a wiki pagetopic_searchโ Search topics via keyword
๐ Branch & Tag Protection (11 tools)
repo_list_branch_protectionโ List branch protections for a repositoryrepo_create_branch_protectionโ Create a branch protections for a repositoryrepo_update_branch_protection_prioritiesโ Update the priorities of branch protections for a repositoryrepo_delete_branch_protectionโ Delete a specific branch protection for the repositoryrepo_get_branch_protectionโ Get a specific branch protection for the repositoryrepo_edit_branch_protectionโ Edit a branch protections for a repositoryrepo_list_tag_protectionโ List tag protections for a repositoryrepo_create_tag_protectionโ Create a tag protections for a repositoryrepo_delete_tag_protectionโ Delete a specific tag protection for the repositoryrepo_get_tag_protectionโ Get a specific tag protection for the repositoryrepo_edit_tag_protectionโ Edit a tag protections for a repository
๐ฅ Collaborators, Keys & Repo Teams (14 tools)
repo_list_collaboratorsโ List a repository's collaboratorsrepo_delete_collaboratorโ Delete a collaborator from a repositoryrepo_check_collaboratorโ Check if a user is a collaborator of a repositoryrepo_add_collaboratorโ Add or Update a collaborator to a repositoryrepo_get_repo_permissionsโ Get repository permissions for a userrepo_list_keysโ List a repository's keysrepo_create_keyโ Add a key to a repositoryrepo_delete_keyโ Delete a key from a repositoryrepo_get_keyโ Get a repository deploy key by IDrepo_create_deploy_tokenโ Add a deploy token to a repository, it authenticates git over HTTPSrepo_list_teamsโ List teams assigned to a repositoryrepo_delete_teamโ Remove a team from a repositoryrepo_check_teamโ Check whether a team is assigned to a repositoryrepo_add_teamโ Assign a team to a repository
๐ข Organizations (16 tools)
org_get_allโ Get list of organizationsorg_createโ Create an organizationorg_deleteโ Delete an organizationorg_getโ Get an organizationorg_editโ Edit an organizationorg_list_activity_feedsโ List an organization's activity feedsorg_list_membersโ List an organization's membersorg_delete_memberโ Remove a member from an organizationorg_is_memberโ Check if a user is a member of an organizationorg_list_public_membersโ List an organization's public membersorg_conceal_memberโ Conceal a user's membershiporg_is_public_memberโ Check if a user is a public member of an organizationorg_publicize_memberโ Publicize a user's membershiprename_orgโ Rename an organizationorg_list_reposโ List repositories in an organizationorg_delete_reposโ Delete all repositories in an organization
๐จโ๐ฉโ๐งโ๐ฆ Teams (15 tools)
org_list_teamsโ List teams in an organizationorg_create_teamโ Create a team in an organizationteam_searchโ Search for teams in an organizationorg_delete_teamโ Delete an organization teamorg_get_teamโ Get an organization teamorg_edit_teamโ Edit an organization teamorg_list_team_activity_feedsโ List activity feeds for an organization teamorg_list_team_membersโ List members of an organization teamorg_remove_team_memberโ Remove a member from an organization teamorg_list_team_memberโ Get an organization team memberorg_add_team_memberโ Add a member to an organization teamorg_list_team_reposโ List repositories assigned to an organization teamorg_remove_team_repositoryโ Remove a repository from an organization teamorg_list_team_repoโ Get a repository assigned to an organization teamorg_add_team_repositoryโ Assign a repository to an organization team
๐ค Users (19 tools)
user_get_currentโ Get the authenticated useruser_current_list_followersโ List followers of the authenticated useruser_current_list_followingโ List users followed by the authenticated useruser_current_delete_followโ Unfollow a useruser_current_check_followingโ Check whether a user is followed by the authenticated useruser_current_put_followโ Follow a useruser_searchโ Search for usersuser_getโ Get a user by usernameuser_list_activity_feedsโ List activity feeds for a specified useruser_list_followersโ List followers of a specified useruser_list_followingโ List users followed by a specified useruser_check_followingโ Check if one user is following another useruser_list_gpg_keysโ List GPG keys for a specified useruser_get_heatmap_dataโ Get contribution heatmap data for a specified useruser_list_keysโ List public SSH keys for a specified useruser_list_teamsโ List teams for the authenticated userorg_list_current_user_orgsโ List organizations for the authenticated userorg_list_user_orgsโ List organizations for a specified userorg_get_user_permissionsโ Get a user's permissions in an organization
๐ User Repositories & Subscriptions (9 tools)
user_current_list_reposโ List repositories owned by the authenticated useruser_list_reposโ List repositories owned by a specified useruser_current_list_starredโ List repositories starred by the authenticated useruser_list_starredโ List repositories starred by a specified useruser_current_list_subscriptionsโ List repository subscriptions for the authenticated useruser_list_subscriptionsโ List repository subscriptions for a specified useruser_current_check_subscriptionโ Check if the current user is watching a repouser_current_put_subscriptionโ Watch a repouser_current_delete_subscriptionโ Unwatch a repo
๐ Projects (49 tools)
org_list_projectsโ List projects owned by an organizationorg_create_projectโ Create a project owned by an organizationorg_delete_projectโ Delete a project owned by an organizationorg_get_projectโ Get a project owned by an organizationorg_edit_projectโ Edit a project owned by an organizationorg_list_project_columnsโ List columns in an organization projectorg_create_project_columnโ Create a column in an organization projectorg_move_project_columnsโ Reorder columns in an organization projectorg_delete_project_columnโ Delete a column in an organization projectorg_get_project_columnโ Get a column in an organization projectorg_edit_project_columnโ Edit a column in an organization projectorg_set_default_project_columnโ Set the default column for an organization projectorg_list_project_column_issuesโ List issues in an organization project columnorg_remove_issue_from_project_columnโ Remove an issue from an organization project columnorg_add_issue_to_project_columnโ Add an issue to an organization project columnorg_move_project_issueโ Move an issue between columns in an organization projectrepo_list_projectsโ List projects owned by a repositoryrepo_create_projectโ Create a project owned by a repositoryrepo_delete_projectโ Delete a project owned by a repositoryrepo_get_projectโ Get a project owned by a repositoryrepo_edit_projectโ Edit a project owned by a repositoryrepo_list_project_columnsโ List columns in a repository projectrepo_create_project_columnโ Create a column in a repository projectrepo_move_project_columnsโ Reorder columns in a repository projectrepo_delete_project_columnโ Delete a column in a repository projectrepo_get_project_columnโ Get a column in a repository projectrepo_edit_project_columnโ Edit a column in a repository projectrepo_set_default_project_columnโ Set the default column for a repository projectrepo_list_project_column_issuesโ List issues in a repository project columnrepo_remove_issue_from_project_columnโ Remove an issue from a repository project columnrepo_add_issue_to_project_columnโ Add an issue to a repository project columnrepo_move_project_issueโ Move an issue between columns in a repository projectuser_current_list_projectsโ List projects owned by the authenticated useruser_current_create_projectโ Create a project owned by the authenticated useruser_current_delete_projectโ Delete a project owned by the authenticated useruser_current_get_projectโ Get a project owned by the authenticated useruser_current_edit_projectโ Edit a project owned by the authenticated useruser_current_list_project_columnsโ List columns in the authenticated user's projectuser_current_create_project_columnโ Create a column in the authenticated user's projectuser_current_move_project_columnsโ Reorder columns in the authenticated user's projectuser_current_delete_project_columnโ Delete a column in the authenticated user's projectuser_current_get_project_columnโ Get a column in the authenticated user's projectuser_current_edit_project_columnโ Edit a column in the authenticated user's projectuser_current_set_default_project_columnโ Set the default column for the authenticated user's projectuser_current_list_project_column_issuesโ List issues in the authenticated user's project columnuser_current_remove_issue_from_project_columnโ Remove an issue from the authenticated user's project columnuser_current_add_issue_to_project_columnโ Add an issue to the authenticated user's project columnuser_current_move_project_issueโ Move an issue between columns in the authenticated user's projectuser_list_projectsโ List projects owned by a specified user
๐ Notifications (7 tools)
notify_get_listโ List notification threads for the authenticated usernotify_read_listโ Mark notification threads as read, pinned, or unreadnotify_new_availableโ Check if unread notifications existnotify_get_threadโ Get notification thread by IDnotify_read_threadโ Mark notification thread as read by IDnotify_get_repo_listโ List notification threads for a repositorynotify_read_repo_listโ Mark repository notification threads as read, pinned, or unread
๐ฆ Packages (10 tools)
list_packagesโ List all packages for an ownerlist_package_versionsโ List all versions of a packageget_latest_package_versionโ Get the latest version of a packagelink_packageโ Link a package to a repositoryunlink_packageโ Unlink a package from a repositorydelete_packageโ Delete a packagedelete_package_versionโ Delete a package versionget_packageโ Get a packagelist_package_filesโ List all files of a packageupload_generic_packageโ Upload a text file as a Gitea generic package
This server cannot be deployed
Maintenance
Related MCP Connectors
Operate GitHub from your AI assistant: repos, PRs, issues, Actions. Previews and read-only mode.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
AI-native git hosting โ repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Gitea repositories through intelligent tools for issue/PR management, workflow analysis, compliance checking, and content generation, plus 200+ CLI commands for complete CRUD operations.2284 npm6MIT
- AlicenseAqualityAmaintenanceAn MCP server providing comprehensive Gitea API coverage with 186 tools for managing repositories, issues, pull requests, and CI/CD workflows. It enables autonomous AI agents to perform complex development and administrative tasks directly through a Gitea instance.7MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with a Forgejo instance as an authenticated user, supporting issues, pull requests, repositories, and notifications.387 npmMIT
- AlicenseBqualityBmaintenanceEnables AI assistants to manage GitVerse repositories, pull requests, code reviews with inline comments and approval verdicts, assignees, labels, and CI runs through 25 semantic tools.2570 npm1MIT