Initial commit of akmon project
This commit is contained in:
103
scripts/install-supabase-mcp.ps1
Normal file
103
scripts/install-supabase-mcp.ps1
Normal file
@@ -0,0 +1,103 @@
|
||||
param(
|
||||
[string]$ConnectionString,
|
||||
[string]$Tenant = "chat-local",
|
||||
[switch]$IncludeRestServer,
|
||||
[string]$ServiceRoleKey,
|
||||
[string]$RestUrl = "http://192.168.0.150:8000/rest/v1",
|
||||
[string]$OpenApiSpec
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Set-PersistentEnvVar {
|
||||
param(
|
||||
[Parameter(Mandatory)] [string]$Name,
|
||||
[Parameter(Mandatory)] [string]$Value
|
||||
)
|
||||
|
||||
if (-not $Value) {
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "Setting persistent environment variable $Name" -ForegroundColor Cyan
|
||||
$result = setx $Name $Value
|
||||
Write-Verbose ($result -join [Environment]::NewLine)
|
||||
}
|
||||
|
||||
$globalStorage = Join-Path $env:APPDATA 'Code\User\globalStorage\GitHub.copilot'
|
||||
$mcpPath = Join-Path $globalStorage 'mcp.json'
|
||||
|
||||
if (-not (Test-Path $globalStorage)) {
|
||||
Write-Host "Creating Copilot global storage directory at $globalStorage" -ForegroundColor Cyan
|
||||
New-Item -ItemType Directory -Force -Path $globalStorage | Out-Null
|
||||
}
|
||||
|
||||
$workspaceMcpPath = Join-Path $PSScriptRoot '..\.github\copilot\mcp.json'
|
||||
if (-not (Test-Path $workspaceMcpPath)) {
|
||||
throw "Cannot locate workspace MCP template at $workspaceMcpPath"
|
||||
}
|
||||
|
||||
if (-not $ConnectionString) {
|
||||
$ConnectionString = Read-Host 'Enter SUPABASE_DB_URL (e.g. postgresql://postgres.chat-local:password@192.168.0.150:6543/postgres)'
|
||||
}
|
||||
|
||||
Set-PersistentEnvVar -Name 'SUPABASE_DB_URL' -Value $ConnectionString
|
||||
Set-PersistentEnvVar -Name 'SUPABASE_TENANT' -Value $Tenant
|
||||
|
||||
if ($IncludeRestServer) {
|
||||
if (-not $ServiceRoleKey) {
|
||||
$ServiceRoleKey = Read-Host 'Enter SUPABASE_SERVICE_ROLE_KEY'
|
||||
}
|
||||
if (-not $OpenApiSpec) {
|
||||
$OpenApiSpec = Read-Host 'Enter absolute path to supabase-rest-openapi.json'
|
||||
}
|
||||
|
||||
Set-PersistentEnvVar -Name 'SUPABASE_SERVICE_ROLE_KEY' -Value $ServiceRoleKey
|
||||
Set-PersistentEnvVar -Name 'SUPABASE_REST_URL' -Value $RestUrl
|
||||
Set-PersistentEnvVar -Name 'SUPABASE_OPENAPI_SPEC' -Value $OpenApiSpec
|
||||
}
|
||||
|
||||
$workspaceConfig = Get-Content -Raw -Path $workspaceMcpPath | ConvertFrom-Json
|
||||
$workspaceHasMcpServers = $workspaceConfig.PSObject.Properties.Name -contains 'mcpServers'
|
||||
$workspaceHasLegacyServers = $workspaceConfig.PSObject.Properties.Name -contains 'servers'
|
||||
if (-not $workspaceHasMcpServers) {
|
||||
$serversValue = if ($workspaceHasLegacyServers) { $workspaceConfig.servers } else { @{} }
|
||||
$workspaceConfig | Add-Member -NotePropertyName mcpServers -NotePropertyValue $serversValue
|
||||
}
|
||||
|
||||
$targetConfig = if (Test-Path $mcpPath) {
|
||||
Get-Content -Raw -Path $mcpPath | ConvertFrom-Json
|
||||
} else {
|
||||
[pscustomobject]@{
|
||||
version = 1
|
||||
mcpServers = @{}
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $targetConfig.version) {
|
||||
$targetConfig | Add-Member -NotePropertyName version -NotePropertyValue 1
|
||||
}
|
||||
$targetHasMcpServers = $targetConfig.PSObject.Properties.Name -contains 'mcpServers'
|
||||
$targetHasLegacyServers = $targetConfig.PSObject.Properties.Name -contains 'servers'
|
||||
if (-not $targetHasMcpServers -and $targetHasLegacyServers) {
|
||||
$targetConfig | Add-Member -NotePropertyName mcpServers -NotePropertyValue $targetConfig.servers
|
||||
$targetConfig.PSObject.Properties.Remove('servers') | Out-Null
|
||||
}
|
||||
if (-not ($targetConfig.PSObject.Properties.Name -contains 'mcpServers')) {
|
||||
$targetConfig | Add-Member -NotePropertyName mcpServers -NotePropertyValue @{}
|
||||
}
|
||||
|
||||
$targetConfig.mcpServers.'supabase-local' = $workspaceConfig.mcpServers.'supabase-local'
|
||||
|
||||
if ($IncludeRestServer) {
|
||||
$targetConfig.mcpServers.'supabase-rest' = $workspaceConfig.mcpServers.'supabase-rest'
|
||||
} else {
|
||||
$targetConfig.mcpServers.PSObject.Properties.Remove('supabase-rest') | Out-Null
|
||||
}
|
||||
|
||||
$targetJson = $targetConfig | ConvertTo-Json -Depth 10
|
||||
Set-Content -Path $mcpPath -Value $targetJson -Encoding UTF8
|
||||
|
||||
Write-Host "Updated global Copilot MCP configuration at $mcpPath" -ForegroundColor Green
|
||||
Write-Host "Restart VS Code (Developer: Reload Window) to load the new Supabase servers." -ForegroundColor Yellow
|
||||
Reference in New Issue
Block a user