Skip to content

Connectors · Work & projects

Forgejo MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Forgejo and the rest of your systems. It gives your agent 485 Forgejo actions (249 reads, 150 writes and 86 that wait for a confirmation) and holds the Forgejo credential itself, so the agent never does. It paces Forgejo'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: "forgejo.admin_users.list",  intent: "check which Forgejo account is connected"}# Search users according filter conditions · read · 1 upstream call
  • 485actionsin one signed file
  • 249readlook, never change
  • 150writecreate and update
  • 86wait for a yesdestructive, confirmed first

Set up

Connect Forgejo 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 Forgejo.

    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_tokenForgejo access token (Settings > Applications > Generate New Token, or POST /api/v1/users/{username}/tokens), with…
    • hostWhere your Forgejo lives: your host
    account { op: "connections.requirements", service: "forgejo" }
    # 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: "forgejo.admin_users.list" }# search users according filter conditions · read · 1 upstream callcheck { action: "forgejo.repo_issues.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Forgejo 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
Forgejo API v1 (Swagger 2.0, 16.0.0-dev-785-465b60ef+gitea-1.22.0), at your Forgejo instance's API base URL, which you enter when connecting (path /api/v1)
Built from
Forgejo's documentation, read 23 October 2026codeberg.orgforgejo.org
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
240 of 249 reads, for up to 5 minutes; a write clears what it affects
Shared entities
7, so ask can line Forgejo up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Forgejo.

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

  • 249readlook, never change
  • 150writecreate and update
  • 86destructivewait for a confirmation
  1. 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

  2. Repo flags

    6

    2 read · 2 write · 2 destructive

    List a repository's flags · Add a flag to a repository · Check if a repository has a given flag · Replace all flags of a repository

  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 global (system) webhooks · Get a hook · Update a hook

  5. Admin quota rules

    5

    2 read · 2 write · 1 destructive

    Create a new quota rule · List the available quota rules · Get information about a quota rule · Change an existing quota rule

  6. 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

  7. 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

  8. Me hooks

    5

    2 read · 2 write · 1 destructive

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

112 more areas · 442 actions
  • Org actions variables 5
  • Org hooks 5
  • Org labels 5
  • Orgs 5
  • Repo actions variables 5
  • Repo branch protections 5
  • Repo branches 5
  • Repo hooks 5
  • Repo issue labels 5
  • Repo issues 5
  • Repo labels 5
  • Repo milestones 5
  • Repo pull reviews 5
  • Repo pulls 5
  • Repo releases 5
  • Repo tag protections 5
  • Admin actions runners 4
  • Admin quota groups 4
  • Admin users 4
  • Me actions runners 4
  • Me following 4
  • Me GPG keys 4
  • Me keys 4
  • Me starred 4
  • Org actions runners 4
  • Org public members 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 pull review comments 4
  • Repo push mirrors 4
  • Repo release assets 4
  • Repo sync fork 4
  • Repo tags 4
  • Repo teams 4
  • Repo topics 4
  • Team members 4
  • Team repos 4
  • Admin quota group users 3
  • Admin unadopted 3
  • Admin user tokens 3
  • Me emails 3
  • Org actions secrets 3
  • Org members 3
  • Org repos 3
  • Repo actions artifacts 3
  • Repo actions runs 3
  • Repo actions secrets 3
  • Repo git notes 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 pull merge 3
  • Repo subscription 3
  • Repo wiki page 3
  • Teams 3
  • User tokens 3
  • Admin cron 2
  • Admin quota group rules 2
  • Admin user emails 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
  • Package 2
  • Repo avatar 2
  • Repo forks 2
  • Repo git blobs 2
  • Repo git refs 2
  • Repo notifications 2
  • Repo pull requested reviewers 2
  • Repo releases tags 2
  • Repo statuses 2
  • Repo times 2
  • User following 2
  • Actions run 1
  • Activitypub actor 1
  • Activitypub actor outbox 1
  • Activitypub repository id 1
  • Activitypub repository id outbox 1
  • Activitypub user id 1
  • Activitypub user id activities 1
  • Activitypub user id activity activity 1
  • Activitypub user id outbox 1
  • Admin actions runners jobs 1
  • Admin actions runners registration token 1
  • Admin emails 1
  • Admin emails search 1
  • Admin orgs 1
  • Admin runners jobs 1
  • Admin runners registration token 1
  • Admin user orgs 1
  • Admin user quota 1
  • Admin user quota groups 1
  • 113 smaller areas 113

Top actions

The Forgejo API, shaped for agents.

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

ActionWhat it doesEffectSame name in
forgejo.repo_issues.listList a repository's issuesList a repository's issues.readwork.task.list122 connectors
forgejo.admin_users.listSearch users according filter conditionsSearch users according filter conditions.readidentity.user.list474 connectors
forgejo.me_repos.listList the repos that the authenticated user ownsList the repos that the authenticated user owns.readdevops.repository.list28 connectors
forgejo.org_teams.listList an organization's teamsList an organization's teams.readidentity.group.list262 connectors
forgejo.orgs.listList all organizationsList all organizations.readwork.workspace.list50 connectors
forgejo.repo_pulls.listList a repo's pull requests. If a pull request is selected but fails to be retrieved for any reason, it will be a null value in the list of results.List a repo's pull requests. If a pull request is selected but fails to be retrieved for any reason, it will be a null value in the list of results.readdevops.pull_request.list12 connectors
forgejo.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
forgejo.me_repos.createCreate a repositoryCreate a repository.writedevops.repository.create18 connectors
forgejo.admin_users.createCreate a user accountCreate a user account.writeidentity.user.create262 connectors
forgejo.org_teams.createCreate a teamCreate a team.writeidentity.group.create205 connectors
forgejo.orgs.createCreate an organizationCreate an organization.writework.workspace.create36 connectors
forgejo.repo_issues.deleteDelete an issueDelete an issue.destructivework.task.delete107 connectors

Try it

Prompts to paste into Claude.

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

  1. Readread

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

    callsforgejo.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 Forgejo. Show me exactly what you will send before you save it.

    callsforgejo.repo_issues.create

Governance for Forgejo

Destructive actions wait for a yes.

86 Forgejo actions are destructive. The first 10:

  • Delete an issueforgejo.repo_issues.delete
  • Delete a repositoryforgejo.repos.delete
  • Delete user accountforgejo.admin_users.delete
  • Delete a teamforgejo.teams.delete
  • Delete an organizationforgejo.orgs.delete
  • Delete a repo-level variableforgejo.repo_actions_variables.delete
  • Mark an artifact for deletionforgejo.repo_actions_artifacts.delete
  • Delete a repository's tag by nameforgejo.repo_tags.delete
  • Delete a specific branch from a repositoryforgejo.repo_branches.delete
  • Delete a particular runner that belongs to a repositoryforgejo.repo_actions_runners.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.

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

Cost

What Forgejo costs on actionlake.

Every Forgejo action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Forgejo 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 485 Forgejo actions
  • 485actions pageeach page of a long list is one call
  • 240reads 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 Forgejo action.

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

Repo contents6
  • forgejo.repo_contents.change_filesModify multiple files in a repositorywrite
  • forgejo.repo_contents.createCreate a file in a repositorywrite
  • and 4 more in this area
Repo flags6
  • forgejo.repo_flags.addAdd a flag to a repositorywrite
  • forgejo.repo_flags.getCheck if a repository has a given flagread
  • and 4 more in this area
Repos6
  • forgejo.issues.searchSearch for issues across the repositories that the user has access toread
  • forgejo.repos.deleteDelete a repositorydestructive
  • and 4 more in this area
Admin hooks5
  • forgejo.admin_hooks.createCreate a hookwrite
  • forgejo.admin_hooks.getGet a hookread
  • and 3 more in this area
Admin quota rules5
  • forgejo.admin_quota_rules.createCreate a new quota rulewrite
  • forgejo.admin_quota_rules.getGet information about a quota ruleread
  • and 3 more in this area
Me actions variables5
  • forgejo.me_actions_variables.createCreate a user-level variablewrite
  • forgejo.me_actions_variables.getGet a user-level variable which is created by current doerread
  • and 3 more in this area
Me applications oauth25
  • forgejo.me_applications_oauth2.createCreates a new OAuth2 applicationwrite
  • forgejo.me_applications_oauth2.getGet an OAuth2 applicationread
  • and 3 more in this area
Me hooks5
  • forgejo.me_hooks.createCreate a hookwrite
  • forgejo.me_hooks.getGet a hookread
  • and 3 more in this area
Org actions variables5
  • forgejo.org_actions_variables.createCreate a new variable in organizationwrite
  • forgejo.org_actions_variables.getGet organization's variable by nameread
  • and 3 more in this area
Org hooks5
  • forgejo.org_hooks.createCreate a hookwrite
  • forgejo.org_hooks.getGet a hookread
  • and 3 more in this area
Org labels5
  • forgejo.org_labels.createCreate a label for an organizationwrite
  • forgejo.org_labels.getGet a single labelread
  • and 3 more in this area
Orgs5
  • forgejo.orgs.createCreate an organizationwrite
  • forgejo.orgs.getGet an organizationread
  • and 3 more in this area
Repo actions variables5
  • forgejo.repo_actions_variables.createCreate a repo-level variablewrite
  • forgejo.repo_actions_variables.getGet a repo-level variableread
  • and 3 more in this area
Repo branch protections5
  • forgejo.repo_branch_protections.createCreate a branch protections for a repositorywrite
  • forgejo.repo_branch_protections.getGet a specific branch protection for the repositoryread
  • and 3 more in this area
Repo branches5
  • forgejo.repo_branches.createCreate a branchwrite
  • forgejo.repo_branches.deleteDelete a specific branch from a repositorydestructive
  • and 3 more in this area
Repo hooks5
  • forgejo.repo_hooks.createCreate a hookwrite
  • forgejo.repo_hooks.getGet a hookread
  • and 3 more in this area
Repo issue labels5
  • forgejo.repo_issue_labels.clearRemove all labels from an issuedestructive
  • forgejo.repo_issue_labels.createAdd a label to an issuewrite
  • and 3 more in this area
Repo issues5
  • forgejo.repo_issues.createCreate an issue. If using deadline only the date will be taken into account, and time of day ignored.write
  • forgejo.repo_issues.getGet an issueread
  • and 3 more in this area
Repo labels5
  • forgejo.repo_labels.createCreate a labelwrite
  • forgejo.repo_labels.getGet a single labelread
  • and 3 more in this area
Repo milestones5
  • forgejo.repo_milestones.createCreate a milestonewrite
  • forgejo.repo_milestones.getGet a milestoneread
  • and 3 more in this area
Repo pull reviews5
  • forgejo.repo_pull_reviews.createCreate a review to an pull requestwrite
  • forgejo.repo_pull_reviews.deleteDelete a specific review from a pull requestdestructive
  • and 3 more in this area
Repo pulls5
  • forgejo.repo_pulls.createCreate a pull requestwrite
  • forgejo.repo_pulls.getGet a pull requestread
  • and 3 more in this area
Repo releases5
  • forgejo.repo_releases.createCreate a releasewrite
  • forgejo.repo_releases.getGet a releaseread
  • and 3 more in this area
Repo tag protections5
  • forgejo.repo_tag_protections.createCreate a tag protections for a repositorywrite
  • forgejo.repo_tag_protections.getGet a specific tag protection for the repositoryread
  • and 3 more in this area
Admin actions runners4
  • forgejo.admin_actions_runners.createRegister a new global runnerwrite
  • forgejo.admin_actions_runners.deleteDelete a particular runner, no matter whether it is a global runner or scoped to an organization, user, or repositorydestructive
  • and 2 more in this area
Admin quota groups4
  • forgejo.admin_quota_groups.createCreate a new quota groupwrite
  • forgejo.admin_quota_groups.deleteDelete a quota groupdestructive
  • and 2 more in this area
Admin users4
  • forgejo.admin_users.createCreate a user accountwrite
  • forgejo.admin_users.deleteDelete user accountdestructive
  • and 2 more in this area
Me actions runners4
  • forgejo.me_actions_runners.createRegister a new user-level runnerwrite
  • forgejo.me_actions_runners.deleteDelete a particular user-level runnerdestructive
  • and 2 more in this area
Me following4
  • forgejo.me_following.addFollow a userwrite
  • forgejo.me_following.deleteUnfollow a userdestructive
  • and 2 more in this area
Me GPG keys4
  • forgejo.me_gpg_keys.createAdd a GPG public key to current user's accountwrite
  • forgejo.me_gpg_keys.deleteRemove a GPG public key from current user's accountdestructive
  • and 2 more in this area

Me keys 4Me starred 4Org actions runners 4Org public members 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 pull review comments 4Repo push mirrors 4Repo release assets 4Repo sync fork 4Repo tags 4Repo teams 4Repo topics 4Team members 4Team repos 4Admin quota group users 3Admin unadopted 3Admin user tokens 3Me emails 3Org actions secrets 3Org members 3Org repos 3Repo actions artifacts 3Repo actions runs 3Repo actions secrets 3Repo git notes 3Repo issue blocks 3Repo issue dependencies 3Repo issue pin 3Repo issue reactions 3Repo issue subscriptions 3Repo issues comment reactions 3Repo pull merge 3Repo subscription 3Repo wiki page 3Teams 3User tokens 3Admin cron 2Admin quota group rules 2Admin user emails 2Admin user keys 2Gitignore templates 2Label templates 2Licenses 2Me actions secrets 2Me avatar 2Me repos 2Me settings 2Notifications 2Notifications threads 2Org avatar 2Org teams 2Package 2Repo avatar 2Repo forks 2Repo git blobs 2Repo git refs 2Repo notifications 2Repo pull requested reviewers 2Repo releases tags 2Repo statuses 2Repo times 2User following 2Actions run 1Activitypub actor 1Activitypub actor outbox 1Activitypub repository id 1Activitypub repository id outbox 1Activitypub user id 1Activitypub user id activities 1Activitypub user id activity activity 1Activitypub user id outbox 1Admin actions runners jobs 1Admin actions runners registration token 1Admin emails 1Admin emails search 1Admin orgs 1Admin runners jobs 1Admin runners registration token 1Admin user orgs 1Admin user quota 1Admin user quota groups 1113 smaller areas 113

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

Questions

The Forgejo MCP server, answered.

Is there a Forgejo MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 485 Forgejo actions across repo contents, repo flags, 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 Forgejo.

What do I need to connect Forgejo?

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

Can an AI agent delete or change things in Forgejo?

Only if its key allows it, and only with an explicit confirmation. 86 Forgejo actions are destructive, including delete an issue, delete a repository and delete user account. 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 Forgejo API limit?

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

What does a Forgejo action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (485 Forgejo actions page). Cache hits, searches, dry runs and calls Forgejo 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 Forgejo API does it cover?

The Forgejo API v1 (Swagger 2.0, 16.0.0-dev-785-465b60ef+gitea-1.22.0) at your Forgejo instance's API base URL, which you enter when connecting (path /api/v1). It is built from Forgejo's documentation as read on 23 October 2026. 485 actions in 232 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Forgejo 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 Forgejo 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 Forgejo today.

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