diff --git a/src/commands/mcp/add-impl.ts b/src/commands/mcp/add-impl.ts index 02d6792..644f2eb 100644 --- a/src/commands/mcp/add-impl.ts +++ b/src/commands/mcp/add-impl.ts @@ -1,5 +1,7 @@ import pc from "picocolors" import { fatal } from "../../lib/cli-error" +import { trackEvent } from "../../utils/analytics" +import { showDiscordInvite } from "../../utils/discord" import { outputDetail } from "../../utils/output" import { ConnectSession } from "./api" import { formatConnectionOutput } from "./format-connection" @@ -85,6 +87,9 @@ export async function addServer( data: output, tip: `Call tools: smithery tool call ${id} ''\nList tools: smithery tool list ${id}`, }) + + showDiscordInvite() + trackEvent("discord_invite_shown", { source: "mcp_add" }) } catch (error) { fatal("Failed to add connection", error) } diff --git a/src/commands/mcp/install.ts b/src/commands/mcp/install.ts index 467035f..7352b95 100644 --- a/src/commands/mcp/install.ts +++ b/src/commands/mcp/install.ts @@ -14,9 +14,10 @@ import { saveConfig } from "../../lib/keychain" import { verbose } from "../../lib/logger" import { resolveServer } from "../../lib/registry" import type { ServerConfig } from "../../types/registry" -import { checkAnalyticsConsent } from "../../utils/analytics" +import { checkAnalyticsConsent, trackEvent } from "../../utils/analytics" import { parseQualifiedName } from "../../utils/cli-utils" import { promptForRestart, showPostInstallHint } from "../../utils/client" +import { showDiscordInvite } from "../../utils/discord" import { resolveTransport } from "../../utils/install/transport" import { resolveUserConfig } from "../../utils/install/user-config" import { @@ -120,6 +121,8 @@ export async function installServer( console.log( pc.green(`✓ ${qualifiedName} successfully installed for ${client}`), ) + showDiscordInvite() + trackEvent("discord_invite_shown", { source: "mcp_install", client }) showPostInstallHint(client) await promptForRestart(client) process.exit(0) diff --git a/src/commands/skill/install.ts b/src/commands/skill/install.ts index 458f05e..19cc38e 100644 --- a/src/commands/skill/install.ts +++ b/src/commands/skill/install.ts @@ -1,5 +1,7 @@ import pc from "picocolors" import { fatal } from "../../lib/cli-error" +import { trackEvent } from "../../utils/analytics" +import { showDiscordInvite } from "../../utils/discord" import { createPublicSkillsClient, getSkillUrl, @@ -65,4 +67,7 @@ export async function installSkill( console.log(pc.cyan(`Running: ${command}`)) console.log() execSync(command, { stdio: "inherit" }) + + showDiscordInvite() + trackEvent("discord_invite_shown", { source: "skill_install" }) } diff --git a/src/utils/discord.ts b/src/utils/discord.ts new file mode 100644 index 0000000..850b26c --- /dev/null +++ b/src/utils/discord.ts @@ -0,0 +1,13 @@ +import pc from "picocolors" + +export const DISCORD_INVITE_URL = "https://discord.gg/sKd9uycgH9" + +// Discord brand color "blurple" (#5865F2) as ANSI 256-color escape +const blurple = (text: string) => `\x1b[38;2;88;101;242m${text}\x1b[39m` + +export function showDiscordInvite() { + console.log() + console.log( + pc.dim("Join the Smithery community: ") + blurple(DISCORD_INVITE_URL), + ) +}