Skip to content

Connectors · Work & projects

Gitea MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Gitea and the rest of your systems. It gives your agent 518 Gitea actions (248 reads, 177 writes and 93 that wait for a confirmation) and holds the Gitea credential itself, so the agent never does. It paces Gitea's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "gitea.admin_users.list",  intent: "check which Gitea account is connected"}# Search users according filter conditions · read · 1 upstream call
  • 518actionsin one signed file
  • 248readlook, never change
  • 177writecreate and update
  • 93wait for a yesdestructive, confirmed first

Set up

Connect Gitea in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Gitea.

    Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • access_tokenGitea access token (Settings > Applications > Generate New Token, or POST /api/v1/users/{username}/tokens), with the…
    • hostWhere your Gitea lives: your host
    account { op: "connections.requirements", service: "gitea" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "gitea.admin_users.list" }# search users according filter conditions · read · 1 upstream callcheck { action: "gitea.repo_issues.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Gitea at a glance

Sign-in
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
access_token
Setup fields
host
Limits we pace to
20 calls a second, per connection
API covered
Gitea API v1 (Swagger 2.0, 29.0.0+dev-160-g55186ca39b), at your Gitea instance's API base URL, which you enter when connecting (path /api/v1)
Built from
Gitea's documentation, read 22 October 2026gitea.comdocs.gitea.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
244 of 248 reads, for up to 5 minutes; a write clears what it affects
Shared entities
7, so ask can line Gitea up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Gitea.

518 actions in 242 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 248readlook, never change
  • 177writecreate and update
  • 93destructivewait for a confirmation
  1. Repo branches

    6

    2 read · 3 write · 1 destructive

    List a repository's branches · Create a branch · Retrieve a specific branch from a repository, including its effective branch protection · Delete a specific branch from a repository

  2. Repo contents

    6

    2 read · 3 write · 1 destructive

    Modify multiple files in a repository · Create a file in a repository · Gets the metadata of all the entries of the root dir. · Gets the metadata and contents (if a file) of an entry in a repository, or a list of entries if a dir.

  3. Repos

    6

    3 read · 2 write · 1 destructive

    Get a repository · Edit a repository's properties. Only fields that are set will be changed. · Search for issues across the repositories that the user has access to · Delete a repository

  4. Admin hooks

    5

    2 read · 2 write · 1 destructive

    Create a hook · List system's webhooks · Get a hook · Update a hook

  5. Me actions variables

    5

    2 read · 2 write · 1 destructive

    Create a user-level variable · Get the user-level list of variables which is created by current doer · Get a user-level variable which is created by current doer · Update a user-level variable which is created by current doer

  6. Me applications oauth2

    5

    2 read · 2 write · 1 destructive

    creates a new OAuth2 application · List the authenticated user's oauth2 applications · get an OAuth2 Application · update an OAuth2 Application, this includes regenerating the client secret

  7. Me hooks

    5

    2 read · 2 write · 1 destructive

    Create a hook · List the authenticated user's webhooks · Get a hook · Update a hook

  8. Me project columns

    5

    2 read · 2 write · 1 destructive

    Create a column in a project · List a project's columns · Get a project column · Edit a project column

112 more areas · 475 actions
  • Me projects 5
  • Org actions variables 5
  • Org hooks 5
  • Org labels 5
  • Org project columns 5
  • Org projects 5
  • Orgs 5
  • Repo actions variables 5
  • Repo branch protections 5
  • Repo hooks 5
  • Repo issue labels 5
  • Repo issues 5
  • Repo labels 5
  • Repo milestones 5
  • Repo project columns 5
  • Repo projects 5
  • Repo pull reviews 5
  • Repo pulls 5
  • Repo releases 5
  • Repo tag protections 5
  • Admin actions runners 4
  • Admin users 4
  • Me actions runners 4
  • Me blocks 4
  • Me following 4
  • Me GPG keys 4
  • Me keys 4
  • Me starred 4
  • Org actions runners 4
  • Org blocks 4
  • Org public members 4
  • Org repos 4
  • Package 4
  • Repo actions runners 4
  • Repo collaborators 4
  • Repo hooks git 4
  • Repo issue assets 4
  • Repo issue comments 4
  • Repo issue times 4
  • Repo issues comment assets 4
  • Repo issues comments 4
  • Repo keys 4
  • Repo push mirrors 4
  • Repo release assets 4
  • Repo tags 4
  • Repo teams 4
  • Repo topics 4
  • Team members 4
  • Team repos 4
  • Admin unadopted 3
  • Admin user badges 3
  • Me emails 3
  • Me project column issues 3
  • Org actions secrets 3
  • Org members 3
  • Org project column issues 3
  • Repo actions artifacts 3
  • Repo actions runs 3
  • Repo actions secrets 3
  • Repo issue assignees 3
  • Repo issue blocks 3
  • Repo issue dependencies 3
  • Repo issue pin 3
  • Repo issue reactions 3
  • Repo issue subscriptions 3
  • Repo issues comment reactions 3
  • Repo project column issues 3
  • Repo pull merge 3
  • Repo subscription 3
  • Repo wiki page 3
  • Teams 3
  • User tokens 3
  • Admin cron 2
  • Admin user keys 2
  • Gitignore templates 2
  • Label templates 2
  • Licenses 2
  • Me actions secrets 2
  • Me avatar 2
  • Me repos 2
  • Me settings 2
  • Notifications 2
  • Notifications threads 2
  • Org avatar 2
  • Org teams 2
  • Repo actions jobs 2
  • Repo actions workflows 2
  • Repo assignees 2
  • Repo avatar 2
  • Repo file contents 2
  • Repo forks 2
  • Repo git refs 2
  • Repo issue lock 2
  • Repo notifications 2
  • Repo pull requested reviewers 2
  • Repo releases tags 2
  • Repo statuses 2
  • Repo times 2
  • Token 2
  • User following 2
  • Admin actions jobs 1
  • Admin actions runners registration token 1
  • Admin actions runs 1
  • Admin emails 1
  • Admin emails search 1
  • Admin orgs 1
  • Admin packages 1
  • Admin user orgs 1
  • Admin user rename 1
  • Admin user repos 1
  • Me 1
  • 123 smaller areas 123

Top actions

The Gitea API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 106 of Gitea's 106 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
gitea.repo_issues.listList a repository's issuesList a repository's issues.readwork.task.list122 connectors
gitea.admin_users.listSearch users according filter conditionsSearch users according filter conditions.readidentity.user.list474 connectors
gitea.me_repos.listList the repos that the authenticated user ownsList the repos that the authenticated user owns.readdevops.repository.list28 connectors
gitea.org_teams.listList an organization's teamsList an organization's teams.readidentity.group.list262 connectors
gitea.orgs.listGet list of organizationsGet list of organizations.readwork.workspace.list50 connectors
gitea.repo_pulls.listList a repo's pull requestsList a repo's pull requests.readdevops.pull_request.list12 connectors
gitea.repo_issues.createCreate an issue. If using deadline only the date will be taken into account, and time of day ignored.Create an issue. If using deadline only the date will be taken into account, and time of day ignored.writework.task.create127 connectors
gitea.me_repos.createCreate a repositoryCreate a repository.writedevops.repository.create18 connectors
gitea.admin_users.createCreate a userCreate a user.writeidentity.user.create262 connectors
gitea.org_teams.createCreate a teamCreate a team.writeidentity.group.create205 connectors
gitea.orgs.createCreate an organizationCreate an organization.writework.workspace.create36 connectors
gitea.repo_issues.deleteDelete an issueDelete an issue.destructivework.task.delete107 connectors

Try it

Prompts to paste into Claude.

Each one names the Gitea actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Gitea tasks are overdue, and who owns each one?

    callsgitea.repo_issues.list

  2. Writewrite

    Create an issue. If using deadline only the date will be taken into account, and time of day ignored in Gitea. Show me exactly what you will send before you save it.

    callsgitea.repo_issues.create

Governance for Gitea

Destructive actions wait for a yes.

93 Gitea actions are destructive. The first 10:

  • Delete an issuegitea.repo_issues.delete
  • Delete a repositorygitea.repos.delete
  • Delete a usergitea.admin_users.delete
  • Delete a teamgitea.teams.delete
  • Delete an organizationgitea.orgs.delete
  • Delete a projectgitea.org_projects.delete
  • Delete a repo-level variablegitea.repo_actions_variables.delete
  • Deletes a specific artifact for a workflow rungitea.repo_actions_artifacts.delete
  • Delete a repository's tag by namegitea.repo_tags.delete
  • Delete a specific branch from a repositorygitea.repo_branches.delete

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dogitea.repo_issues.deleteconfirm_policy: human

Delete an issue?

intent: the user asked me to delete an issue

run suspended · waiting for a named person · key gitea-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "gitea-agent",  allowed_actions: ["gitea.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "gitea.repo_issues.delete", approver: "[email protected]" },    { match: "gitea.repos.delete", approver: "[email protected]" },    { match: "gitea.admin_users.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Gitea only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Gitea costs on actionlake.

Every Gitea action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Gitea refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 518 Gitea actions
  • 518actions pageeach page of a long list is one call
  • 244reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Gitea action.

518 actions by area: the id your agent calls, what it does, and its effect.

Repo branches6
  • gitea.repo_branches.createCreate a branchwrite
  • gitea.repo_branches.deleteDelete a specific branch from a repositorydestructive
  • and 4 more in this area
Repo contents6
  • gitea.repo_contents.change_filesModify multiple files in a repositorywrite
  • gitea.repo_contents.createCreate a file in a repositorywrite
  • and 4 more in this area
Repos6
  • gitea.issues.searchSearch for issues across the repositories that the user has access toread
  • gitea.repos.deleteDelete a repositorydestructive
  • and 4 more in this area
Admin hooks5
  • gitea.admin_hooks.createCreate a hookwrite
  • gitea.admin_hooks.getGet a hookread
  • and 3 more in this area
Me actions variables5
  • gitea.me_actions_variables.createCreate a user-level variablewrite
  • gitea.me_actions_variables.getGet a user-level variable which is created by current doerread
  • and 3 more in this area
Me applications oauth25
  • gitea.me_applications_oauth2.createcreates a new OAuth2 applicationwrite
  • gitea.me_applications_oauth2.getget an OAuth2 Applicationread
  • and 3 more in this area
Me hooks5
  • gitea.me_hooks.createCreate a hookwrite
  • gitea.me_hooks.getGet a hookread
  • and 3 more in this area
Me project columns5
  • gitea.me_project_columns.createCreate a column in a projectwrite
  • gitea.me_project_columns.getGet a project columnread
  • and 3 more in this area
Me projects5
  • gitea.me_projects.createCreate a project owned by the authenticated userwrite
  • gitea.me_projects.getGet a projectread
  • and 3 more in this area
Org actions variables5
  • gitea.org_actions_variables.createCreate an org-level variablewrite
  • gitea.org_actions_variables.getGet an org-level variableread
  • and 3 more in this area
Org hooks5
  • gitea.org_hooks.createCreate a hookwrite
  • gitea.org_hooks.getGet a hookread
  • and 3 more in this area
Org labels5
  • gitea.org_labels.createCreate a label for an organizationwrite
  • gitea.org_labels.getGet a single labelread
  • and 3 more in this area
Org project columns5
  • gitea.org_project_columns.createCreate a column in a projectwrite
  • gitea.org_project_columns.getGet a project columnread
  • and 3 more in this area
Org projects5
  • gitea.org_projects.createCreate a project owned by an organizationwrite
  • gitea.org_projects.getGet a projectread
  • and 3 more in this area
Orgs5
  • gitea.orgs.createCreate an organizationwrite
  • gitea.orgs.getGet an organizationread
  • and 3 more in this area
Repo actions variables5
  • gitea.repo_actions_variables.createCreate a repo-level variablewrite
  • gitea.repo_actions_variables.getGet a repo-level variableread
  • and 3 more in this area
Repo branch protections5
  • gitea.repo_branch_protections.createCreate a branch protections for a repositorywrite
  • gitea.repo_branch_protections.getGet a specific branch protection for the repositoryread
  • and 3 more in this area
Repo hooks5
  • gitea.repo_hooks.createCreate a hookwrite
  • gitea.repo_hooks.getGet a hookread
  • and 3 more in this area
Repo issue labels5
  • gitea.repo_issue_labels.clearRemove all labels from an issuedestructive
  • gitea.repo_issue_labels.createAdd a label to an issuewrite
  • and 3 more in this area
Repo issues5
  • gitea.repo_issues.createCreate an issue. If using deadline only the date will be taken into account, and time of day ignored.write
  • gitea.repo_issues.getGet an issueread
  • and 3 more in this area
Repo labels5
  • gitea.repo_labels.createCreate a labelwrite
  • gitea.repo_labels.getGet a single labelread
  • and 3 more in this area
Repo milestones5
  • gitea.repo_milestones.createCreate a milestonewrite
  • gitea.repo_milestones.getGet a milestoneread
  • and 3 more in this area
Repo project columns5
  • gitea.repo_project_columns.createCreate a column in a projectwrite
  • gitea.repo_project_columns.getGet a project columnread
  • and 3 more in this area
Repo projects5
  • gitea.repo_projects.createCreate a project owned by a repositorywrite
  • gitea.repo_projects.getGet a projectread
  • and 3 more in this area
Repo pull reviews5
  • gitea.repo_pull_reviews.createCreate a review to a pull requestwrite
  • gitea.repo_pull_reviews.deleteDelete a specific review from a pull requestdestructive
  • and 3 more in this area
Repo pulls5
  • gitea.repo_pulls.createCreate a pull requestwrite
  • gitea.repo_pulls.getGet a pull requestread
  • and 3 more in this area
Repo releases5
  • gitea.repo_releases.createCreate a releasewrite
  • gitea.repo_releases.getGet a releaseread
  • and 3 more in this area
Repo tag protections5
  • gitea.repo_tag_protections.createCreate a tag protections for a repositorywrite
  • gitea.repo_tag_protections.getGet a specific tag protection for the repositoryread
  • and 3 more in this area
Admin actions runners4
  • gitea.admin_actions_runners.deleteDelete a global runnerdestructive
  • gitea.admin_actions_runners.getGet a global runnerread
  • and 2 more in this area
Admin users4
  • gitea.admin_users.createCreate a userwrite
  • gitea.admin_users.deleteDelete a userdestructive
  • and 2 more in this area

Me actions runners 4Me blocks 4Me following 4Me GPG keys 4Me keys 4Me starred 4Org actions runners 4Org blocks 4Org public members 4Org repos 4Package 4Repo actions runners 4Repo collaborators 4Repo hooks git 4Repo issue assets 4Repo issue comments 4Repo issue times 4Repo issues comment assets 4Repo issues comments 4Repo keys 4Repo push mirrors 4Repo release assets 4Repo tags 4Repo teams 4Repo topics 4Team members 4Team repos 4Admin unadopted 3Admin user badges 3Me emails 3Me project column issues 3Org actions secrets 3Org members 3Org project column issues 3Repo actions artifacts 3Repo actions runs 3Repo actions secrets 3Repo issue assignees 3Repo issue blocks 3Repo issue dependencies 3Repo issue pin 3Repo issue reactions 3Repo issue subscriptions 3Repo issues comment reactions 3Repo project column issues 3Repo pull merge 3Repo subscription 3Repo wiki page 3Teams 3User tokens 3Admin cron 2Admin user keys 2Gitignore templates 2Label templates 2Licenses 2Me actions secrets 2Me avatar 2Me repos 2Me settings 2Notifications 2Notifications threads 2Org avatar 2Org teams 2Repo actions jobs 2Repo actions workflows 2Repo assignees 2Repo avatar 2Repo file contents 2Repo forks 2Repo git refs 2Repo issue lock 2Repo notifications 2Repo pull requested reviewers 2Repo releases tags 2Repo statuses 2Repo times 2Token 2User following 2Admin actions jobs 1Admin actions runners registration token 1Admin actions runs 1Admin emails 1Admin emails search 1Admin orgs 1Admin packages 1Admin user orgs 1Admin user rename 1Admin user repos 1Me 1123 smaller areas 123

This index shows a sample of each area. All 518 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.

Questions

The Gitea MCP server, answered.

Is there a Gitea MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 518 Gitea actions across repo branches, repo contents, repos and admin hooks, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Gitea.

What do I need to connect Gitea?

Gitea access token (Settings > Applications > Generate New Token, or POST /api/v1/users/{username}/tokens), with the…. Plus your host. The free call account { op: "connections.requirements", service: "gitea" } lists exactly what to paste.

Can an AI agent delete or change things in Gitea?

Only if its key allows it, and only with an explicit confirmation. 93 Gitea actions are destructive, including delete an issue, delete a repository and delete a user. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Gitea API limit?

actionlake paces every call to the limits in the Gitea service file: 20 calls a second per connection. Repeated reads are answered from cache (244 Gitea actions can be), which never reaches Gitea.

What does a Gitea action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (518 Gitea actions page). Cache hits, searches, dry runs and calls Gitea refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Gitea API does it cover?

The Gitea API v1 (Swagger 2.0, 29.0.0+dev-160-g55186ca39b) at your Gitea instance's API base URL, which you enter when connecting (path /api/v1). It is built from Gitea's documentation as read on 22 October 2026. 518 actions in 242 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Gitea data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Gitea credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Gitea today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.