58 lines
2.2 KiB
PowerShell
58 lines
2.2 KiB
PowerShell
$ErrorActionPreference = 'Stop'
|
|
|
|
$envFile = Join-Path (Split-Path -Parent $PSScriptRoot) 'gitea.env'
|
|
if (-not (Test-Path -LiteralPath $envFile -PathType Leaf)) {
|
|
throw "Gitea MCP configuration file not found: $envFile"
|
|
}
|
|
|
|
$values = @{}
|
|
foreach ($rawLine in Get-Content -LiteralPath $envFile) {
|
|
$line = $rawLine.Trim()
|
|
if (-not $line -or $line.StartsWith('#')) {
|
|
continue
|
|
}
|
|
|
|
$parts = $line -split '=', 2
|
|
if ($parts.Count -ne 2) {
|
|
throw "Invalid line in $envFile. Use KEY=VALUE format."
|
|
}
|
|
|
|
$values[$parts[0].Trim()] = $parts[1].Trim()
|
|
}
|
|
|
|
foreach ($name in @('GITEA_URL', 'GITEA_TOKEN')) {
|
|
if (-not $values.ContainsKey($name) -or [string]::IsNullOrWhiteSpace($values[$name])) {
|
|
throw "$name is missing or empty in $envFile"
|
|
}
|
|
Set-Item -Path "Env:$name" -Value $values[$name]
|
|
}
|
|
|
|
# This self-hosted Gitea instance must not be sent through the system SOCKS proxy.
|
|
$noProxyHost = 'ilaer.eicp.net'
|
|
$existingNoProxy = @($env:NO_PROXY, $env:no_proxy) |
|
|
Where-Object { -not [string]::IsNullOrWhiteSpace($_) } |
|
|
Select-Object -First 1
|
|
$noProxyEntries = @($existingNoProxy -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ })
|
|
if ($noProxyEntries -notcontains $noProxyHost) {
|
|
$noProxyEntries += $noProxyHost
|
|
}
|
|
$env:NO_PROXY = $noProxyEntries -join ','
|
|
$env:no_proxy = $env:NO_PROXY
|
|
|
|
# httpx initializes configured SOCKS transports before evaluating NO_PROXY.
|
|
# Clear proxy variables only for this MCP child process so it connects directly.
|
|
foreach ($proxyVariable in @('ALL_PROXY', 'all_proxy', 'HTTP_PROXY', 'http_proxy', 'HTTPS_PROXY', 'https_proxy')) {
|
|
Remove-Item -Path "Env:$proxyVariable" -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
# Run the locally maintained build so custom Wiki tools are not replaced by
|
|
# uvx resolving the latest published package on the next process start.
|
|
$giteaMcpExecutable = 'D:\chengma\gitea-mcp\.venv\Scripts\gitea-mcp.exe'
|
|
if (-not (Test-Path -LiteralPath $giteaMcpExecutable -PathType Leaf)) {
|
|
throw "Local Gitea MCP executable not found: $giteaMcpExecutable"
|
|
}
|
|
|
|
# Keep stdout exclusively for MCP JSON-RPC. FastMCP diagnostics are noisy on stderr.
|
|
& $giteaMcpExecutable 2>> (Join-Path $PSScriptRoot ("gitea-mcp-$PID.stderr.log"))
|
|
exit $LASTEXITCODE
|