mirror of
				https://gitea.com/gitea/gitea-mcp.git
				synced 2025-10-30 09:51:50 +00:00 
			
		
		
		
	fix(cmd): ensure GITEA_HOST can be read (#23)
## Why
With the following configuration:
```bash
docker run -i --rm -e GITEA_HOST=<gitea_host> -e GITEA_ACCESS_TOKEN=<gitea_access_token_for_host> docker.gitea.com/gitea-mcp-server:latest
```
after mcp-client calling a tool, the gitea client will encounter the following fatal error:
```
FATAL gitea/gitea.go:47 create gitea client err: user does not exist [uid: 0, name: ]
  gitea.com/gitea/gitea-mcp/pkg/gitea.Client.func1
    /app/pkg/gitea/gitea.go:47
  sync.(*Once).doSlow
    /usr/local/go/src/sync/once.go:78
  sync.(*Once).Do
    /usr/local/go/src/sync/once.go:69
  gitea.com/gitea/gitea-mcp/pkg/gitea.Client
    /app/pkg/gitea/gitea.go:21
  gitea.com/gitea/gitea-mcp/operation/search.SearchReposFn
    /app/operation/search/search.go:161
  github.com/mark3labs/mcp-go/server.(*MCPServer).handleToolCall
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/server.go:717
  github.com/mark3labs/mcp-go/server.(*MCPServer).HandleMessage
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/request_handler.go:264
  github.com/mark3labs/mcp-go/server.(*StdioServer).processMessage
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/stdio.go:228
  github.com/mark3labs/mcp-go/server.(*StdioServer).processInputStream
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/stdio.go:143
  github.com/mark3labs/mcp-go/server.(*StdioServer).Listen
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/stdio.go:209
  github.com/mark3labs/mcp-go/server.ServeStdio
    /go/pkg/mod/github.com/mark3labs/mcp-go@v0.18.0/server/stdio.go:282
  gitea.com/gitea/gitea-mcp/operation.Run
    /app/operation/operation.go:48
  gitea.com/gitea/gitea-mcp/cmd.Execute
    /app/cmd/cmd.go:119
  main.main
    /app/main.go:12
  runtime.main
    /usr/local/go/src/runtime/proc.go:283
```
Turns out the root cause was because the `GITEA_HOST` environment variable wasn't overriding the default flag value, resulting in mismatch of host and access token.
The if statement won't be entered
7cfa1fa218/cmd/cmd.go (L74-L77)
Due to `host` could never be evaluated as an empty string from the default value `"http://gitea.com"`
7cfa1fa218/cmd/cmd.go (L35-L40)
Unless user specify `gitea-mcp ... --host <empty_string> ...` with environment `GITEA_HOST=<non_empty_string>` at the same time, which is very unlikely IMHO.
## How
- Set `host` flag default value from `GITEA_HOST` environment variable value
- Remove possible dead code if-statement
Co-authored-by: hiifong <i@hiif.ong>
Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/23
Reviewed-by: hiifong <i@hiif.ong>
Co-authored-by: Flynn Hou <flynnhou7@gmail.com>
Co-committed-by: Flynn Hou <flynnhou7@gmail.com>
			
			
This commit is contained in:
		| @@ -35,7 +35,7 @@ func init() { | |||||||
| 	flag.StringVar( | 	flag.StringVar( | ||||||
| 		&host, | 		&host, | ||||||
| 		"host", | 		"host", | ||||||
| 		"https://gitea.com", | 		os.Getenv("GITEA_HOST"), | ||||||
| 		"Gitea host", | 		"Gitea host", | ||||||
| 	) | 	) | ||||||
| 	flag.IntVar( | 	flag.IntVar( | ||||||
| @@ -72,9 +72,6 @@ func init() { | |||||||
| 	flag.Parse() | 	flag.Parse() | ||||||
|  |  | ||||||
| 	flagPkg.Host = host | 	flagPkg.Host = host | ||||||
| 	if flagPkg.Host == "" { |  | ||||||
| 		flagPkg.Host = os.Getenv("GITEA_HOST") |  | ||||||
| 	} |  | ||||||
| 	if flagPkg.Host == "" { | 	if flagPkg.Host == "" { | ||||||
| 		flagPkg.Host = "https://gitea.com" | 		flagPkg.Host = "https://gitea.com" | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user