fix(plugins): detect Context7 managed by MCPorter
CI / Capabilities and shell quality (push) Successful in 12s
CI / Python tests and compilation (push) Successful in 22s
CI / CI configuration security checks (push) Successful in 4s
CI / Build and inspect generated packages (push) Successful in 13s
CI / PowerShell tests on Ubuntu (push) Successful in 1m10s
CI / Bash integration and installation guards (push) Successful in 1m38s
CI / Installed client configuration smoke tests (push) Successful in 13s
CI / Qwen retrieval integration (push) Successful in 14m24s
CI / Capabilities and shell quality (push) Successful in 12s
CI / Python tests and compilation (push) Successful in 22s
CI / CI configuration security checks (push) Successful in 4s
CI / Build and inspect generated packages (push) Successful in 13s
CI / PowerShell tests on Ubuntu (push) Successful in 1m10s
CI / Bash integration and installation guards (push) Successful in 1m38s
CI / Installed client configuration smoke tests (push) Successful in 13s
CI / Qwen retrieval integration (push) Successful in 14m24s
This commit is contained in:
1 parent
728d72312f
commit
280292d72e
4 files changed
+85
-7
No files matched your search
+21
-1
@@ -65,6 +65,24 @@ function Get-InstalledPlugins {
|
||||
}
|
||||
}
|
||||
|
||||
function Test-InstalledMCPServer {
|
||||
param([string]$HomePath, [string]$Name, [string]$Url)
|
||||
$path = Join-Path $HomePath '.mcporter/mcporter.json'
|
||||
foreach ($candidate in @((Split-Path $path), $path)) {
|
||||
if ((Test-Path -LiteralPath $candidate) -and ((Get-Item -LiteralPath $candidate -Force).Attributes -band [System.IO.FileAttributes]::ReparsePoint)) { throw 'MCPorter configuration path contains a link.' }
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath $path -PathType Leaf)) { return $false }
|
||||
$config = Get-Content -LiteralPath $path -Raw | ConvertFrom-Json
|
||||
if ($config -isnot [pscustomobject]) { throw 'Invalid MCPorter server configuration.' }
|
||||
$servers = $config.PSObject.Properties['mcpServers']
|
||||
if ($null -eq $servers) { return $false }
|
||||
if ($servers.Value -isnot [pscustomobject]) { throw 'Invalid MCPorter server configuration.' }
|
||||
$server = $servers.Value.PSObject.Properties[$Name]
|
||||
if ($null -eq $server) { return $false }
|
||||
if ($server.Value -isnot [pscustomobject]) { throw 'Invalid MCPorter server entry.' }
|
||||
return $server.Value.baseUrl -eq $Url
|
||||
}
|
||||
|
||||
function Read-PluginToggleSelection {
|
||||
param(
|
||||
[Parameter(Mandatory=$true)][string[]]$Names,
|
||||
@@ -102,7 +120,9 @@ function Select-ConfiguredPlugins {
|
||||
if ($Mode -eq 'Install') { $true; return }
|
||||
if ($_.codex_method -eq 'cli') { return $null -ne (Get-Command $_.codex_source -ErrorAction SilentlyContinue) }
|
||||
$entry = $_
|
||||
$found = $false
|
||||
$found = if ($entry.mcporter_name -and $entry.mcporter_url) {
|
||||
Test-InstalledMCPServer -HomePath $HomePath -Name $entry.mcporter_name -Url $entry.mcporter_url
|
||||
} else { $false }
|
||||
foreach ($referenceClient in $referenceClients) {
|
||||
$selector = if ($referenceClient -eq 'Claude') { $entry.claude_plugin } else { $entry.codex_plugin }
|
||||
if ($referenceClient -eq 'Codex' -and $entry.codex_method -eq 'qmd') {
|
||||
|
||||
Reference in new issue
Block a user