From 50c5705d87523715ee1e34d58faa00c926c2aa47 Mon Sep 17 00:00:00 2001 From: Alex Hancock Date: Mon, 24 Mar 2025 12:48:37 -0400 Subject: [PATCH] fix: correct deep link install link format (#1830) --- documentation/src/utils/install-links.ts | 27 +++++++++++++++++++- documentation/src/utils/install-links.tsx | 30 ----------------------- 2 files changed, 26 insertions(+), 31 deletions(-) delete mode 100644 documentation/src/utils/install-links.tsx diff --git a/documentation/src/utils/install-links.ts b/documentation/src/utils/install-links.ts index e5b27dad..156fee79 100644 --- a/documentation/src/utils/install-links.ts +++ b/documentation/src/utils/install-links.ts @@ -1,5 +1,30 @@ import type { MCPServer } from "../types/server"; export function getGooseInstallLink(server: MCPServer): string { - return `goose://install/${encodeURIComponent(server.command)}`; + if (server.is_builtin) { + const queryParams = [ + 'cmd=goosed', + 'arg=mcp', + `arg=${encodeURIComponent(server.id)}`, + `description=${encodeURIComponent(server.id)}` + ].join('&'); + return `goose://extension?${queryParams}`; + } + const parts = server.command.split(" "); + const baseCmd = parts[0]; // npx or uvx + const args = parts.slice(1); // remaining arguments + const queryParams = [ + `cmd=${encodeURIComponent(baseCmd)}`, + ...args.map((arg) => `arg=${encodeURIComponent(arg)}`), + `id=${encodeURIComponent(server.id)}`, + `name=${encodeURIComponent(server.name)}`, + `description=${encodeURIComponent(server.description)}`, + ...server.environmentVariables + .filter((env) => env.required) + .map( + (env) => `env=${encodeURIComponent(`${env.name}=${env.description}`)}` + ), + ].join("&"); + + return `goose://extension?${queryParams}`; } \ No newline at end of file diff --git a/documentation/src/utils/install-links.tsx b/documentation/src/utils/install-links.tsx deleted file mode 100644 index 156fee79..00000000 --- a/documentation/src/utils/install-links.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import type { MCPServer } from "../types/server"; - -export function getGooseInstallLink(server: MCPServer): string { - if (server.is_builtin) { - const queryParams = [ - 'cmd=goosed', - 'arg=mcp', - `arg=${encodeURIComponent(server.id)}`, - `description=${encodeURIComponent(server.id)}` - ].join('&'); - return `goose://extension?${queryParams}`; - } - const parts = server.command.split(" "); - const baseCmd = parts[0]; // npx or uvx - const args = parts.slice(1); // remaining arguments - const queryParams = [ - `cmd=${encodeURIComponent(baseCmd)}`, - ...args.map((arg) => `arg=${encodeURIComponent(arg)}`), - `id=${encodeURIComponent(server.id)}`, - `name=${encodeURIComponent(server.name)}`, - `description=${encodeURIComponent(server.description)}`, - ...server.environmentVariables - .filter((env) => env.required) - .map( - (env) => `env=${encodeURIComponent(`${env.name}=${env.description}`)}` - ), - ].join("&"); - - return `goose://extension?${queryParams}`; -} \ No newline at end of file