forgejo-projects-mcp¶
forgejo-projects-mcp gives an MCP-capable agent access to Forgejo Projects / Kanban boards, including operations that Forgejo does not currently expose through its REST API.
It can:
- authenticate with a Forgejo username and password;
- discover repositories the authenticated user can access;
- create, inspect, update, close, reopen, and delete projects;
- create and manage project columns;
- create, attach, detach, move, read, and delete issue cards;
- create and manage milestones; and
- expose the same operations through a generated command-line interface.
Important: this is a best-effort automation layer over undocumented Forgejo web routes. It was verified against Forgejo v15.0.7, not a versioned Projects API. Test it against a disposable repository before using it for important data. Read Architecture and the security policy before deploying it.
Choose a path¶
| I want to… | Start here |
|---|---|
| Install and try the tool for the first time | Getting started |
| Choose an installation method or develop from source | Installation |
| Set credentials, logging, throttling, or session storage | Configuration |
| Use MCP tools or the command-line interface | Usage |
| Understand the modules and request lifecycle | Architecture |
| Look up a Python module | Python API reference |
| Inspect the Forgejo web routes behind the client | Automation reference |
| Cut a release | Release procedure |
Requirements¶
- Python 3.14 or newer;
- uv for installation and execution; and
- a Forgejo account with permission to manage the target repository.
The client uses Playwright's HTTP-only APIRequestContext; it does not launch a browser and does not require a browser binary download.
Two interfaces, one tool surface¶
The normal entry point is the stdio MCP server:
forgejo-projects-mcp
For scripts, test harnesses, or environments without an MCP transport, use:
forgejo-projects-cli --help
The CLI discovers the registered MCP tools at startup, generates one subcommand per tool, and dispatches through the same server layer. The two interfaces therefore share authentication, validation, error handling, and behavior.
Documentation conventions¶
ownerandrepoidentify a repository such asteam/platform.project_id,column_id, andmilestone_idare Forgejo internal numeric IDs.numberandissue_numbersare repository issue numbers, the values shown as#123in Forgejo. The client resolves them to internal issue IDs when a web route needs those IDs.stateaccepts onlyopen,closed, orallwhere documented.- Operations marked expensive fetch full issue pages and can consume substantially more network traffic and context than summary operations.