MCP server for Forgejo API operations over stdio
Find a file
Simon Cornet 30b96a44f7
All checks were successful
ci/woodpecker/push/lint-test-release Pipeline was successful
refactor: hardened HTTP client, safe type assertions, retry logic
- forgejo.go: custom HTTP client with 30s timeout (was DefaultClient)
- forgejo.go: ctx propagation via NewRequestWithContext
- forgejo.go: retry up to 3x with exponential backoff on 5xx/transport err
- forgejo.go: parseRepoList helper normalizes array + search response formats
- forgejo.go: log body close errors via slog instead of silent discard
- forgejo.go: requireString helper for safe type assertions
- tools.go: all handlers use requireString for required args (no more panic)
- tools.go: CreateRepo tries org POST first, fallback to user repos (saves 1 API call)
- tools.go: GetRepoAll uses parseRepoList for unified response parsing
2026-06-03 09:25:43 +02:00
.woodpecker feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
.gitignore feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
.goreleaser.yaml feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
.markdownlint-cli2.jsonc feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
forgejo.go refactor: hardened HTTP client, safe type assertions, retry logic 2026-06-03 09:25:43 +02:00
go.mod feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
go.sum feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
main.go feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
readme.md docs: add missing tools to readme 2026-06-02 09:27:53 +02:00
renovate.json feat: initial MCP server with create_repo, get_repo_settings, and set_repo_settings tools 2026-06-01 18:05:00 +02:00
tools.go refactor: hardened HTTP client, safe type assertions, retry logic 2026-06-03 09:25:43 +02:00

mcp-forgejo

MCP server for Forgejo API operations over stdio.

Environment Variables

Variable Description
FORGEJO_URL Forgejo instance URL (default: https://git.simoncor.net)
FORGEJO_TOKEN Forgejo API token (required)

Tools

Tool Description
create_repo Create a new repo with sensible defaults (squash-only, issues+PRs+releases)
get_repo_all List all accessible repositories, optionally filtered by owner
get_repo_settings Get full repo configuration
set_repo_settings Update repo settings via JSON
delete_repo Delete a repository (irreversible)
set_repo_avatar Set repo avatar from a local image file
delete_repo_avatar Delete a repo avatar

Build

go build -o mcp-forgejo .

Usage

Add to your MCP client config:

{
  "mcpServers": {
    "mcp-forgejo": {
      "command": "/path/to/mcp-forgejo",
      "env": {
        "FORGEJO_URL": "https://git.simoncor.net",
        "FORGEJO_TOKEN": "your-token-here"
      }
    }
  }
}

The server communicates over stdio using the MCP protocol.