Features
- MCP endpoint (#478). Gitea Mirror now serves MCP at
/api/mcp, so Claude, Cursor and other MCP clients can check on your mirrors, find failures, add repositories and organizations, and start syncs and retries. It takes an API key inx-api-key. Eight tools:list_repositories,get_repository,list_failures,list_organizations,add_repository,add_organization,sync_repositoriesandretry_repositories. None of them delete, archive or change settings. Setup is on the MCP docs page. For Claude Code:claude mcp add --transport http gitea-mirror https://mirror.example.com/api/mcp --header "x-api-key: gm_..." - Read only API keys (#478). Create key in the API Keys card has an Access choice, and read only keys get a badge in the list. A read only key can call every
GETendpoint; anyPOST,PUT,PATCHorDELETE, and every/api/auth/*call exceptget-session, gets403with the codeAPI_KEY_READ_ONLY. The MCP tools go through the same check, so a read only key can look but not change anything. Existing keys keep full access.
Notes
- The MCP tools call the app's own REST API at the address it listens on (
HOSTandPORT, underBASE_URL). If that address is not reachable from inside the app, setMCP_INTERNAL_URL, for examplehttp://127.0.0.1:4321. gitea-mirror-mcp, the stdio bridge for Claude Desktop and Cursor inmcp/, is not on npm yet, so thenpx -y gitea-mirror-mcpcommand in the docs does not work for now. Until it is published, build it from a checkout (cd mcp && npm ci && npm run build, needs Bun) and usenode /path/to/gitea-mirror/mcp/dist/index.jsas the command.
No action needed. As always, back up your Gitea before upgrading.
Full Changelog: v3.45.0...v3.46.0