Skip to main content
Glama
burkeholland

VS Code MCP Button Generator

by burkeholland

make_install_buttons

Generate VS Code Stable and Insiders MCP install button markdown for NPX-based servers to simplify setup instructions.

Instructions

Generate VS Code Stable and Insiders MCP install button markdown for an NPX-based server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesServer display name (e.g., 'supabase').
inputsNo
configNo

Implementation Reference

  • src/index.ts:106-130 (registration)
    Registers the 'make_install_buttons' tool with the MCP server, providing title, description, input schema, and an async handler that generates button markdown by calling generateButtonsMarkdown.
    server.registerTool( "make_install_buttons", { title: "Generate install buttons", description: "Generate VS Code Stable and Insiders MCP install button markdown for an NPX-based server.", inputSchema: { name: z.string().describe("Server display name (e.g., 'supabase')."), inputs: z.array(z.object({ type: z.string(), id: z.string(), description: z.string().optional(), password: z.boolean().optional(), })).default([]), config: z.object({ command: z.string().default("npx"), args: z.array(z.string()).default([]), env: z.record(z.string()).optional(), }).default({ command: "npx", args: [] }), } }, async ({ name, inputs, config }) => { const markdown = generateButtonsMarkdown(name, inputs, config); return { content: [{ type: "text", text: markdown }] }; } );
  • Core handler logic that generates the markdown for VS Code Stable and Insiders install buttons using the provided server name, inputs, and config.
    export function generateButtonsMarkdown(name: string, inputs: MCPInput[], config: CommandConfig): string { const base = "https://insiders.vscode.dev/redirect/mcp/install"; const stableBadge = makeBadge("0098FF", "VS_Code"); const insidersBadge = makeBadge("24bfa5", "VS_Code_Insiders"); const stableLink = buildInstallLink(base, name, inputs, config, false); const insidersLink = buildInstallLink(base, name, inputs, config, true); const stable = `[![Install with NPX in VS Code](${stableBadge})](${stableLink})`; const insiders = `[![Install with NPX in VS Code Insiders](${insidersBadge})](${insidersLink})`; return `${stable}\n${insiders}`; }
  • Zod schema definitions for the tool inputs: InputSchema for individual inputs, ConfigSchema for command config, and MakeButtonsParams combining them with name.
    const InputSchema = z.object({ type: z.string(), // "promptString" supported for now id: z.string(), description: z.string().optional(), password: z.boolean().optional(), }); const ConfigSchema = z.object({ command: z.string().default("npx"), args: z.array(z.string()).default([]), env: z.record(z.string()).optional(), }); const MakeButtonsParams = z.object({ name: z.string().min(1, "name is required"), inputs: z.array(InputSchema).default([]), config: ConfigSchema.default({ command: "npx", args: [] }), });
  • Helper function to build the install link URL parameters for both stable and insiders VS Code versions.
    function buildInstallLink(base: string, name: string, inputs: MCPInput[], config: CommandConfig, insiders = false) { const parts: string[] = []; parts.push(`name=${encodeURIComponent(name)}`); if (inputs && inputs.length) { parts.push(`inputs=${encodeURIComponent(JSON.stringify(inputs))}`); } parts.push(`config=${encodeURIComponent(JSON.stringify(config))}`); if (insiders) parts.push(`quality=insiders`); return `${base}?${parts.join('&')}`; }
  • Helper function to generate the badge image URL for VS Code install buttons.
    function makeBadge(color: string, label: string) { return `https://img.shields.io/badge/${encodeURIComponent(label)}-NPM-${color}?style=flat-square&logo=visualstudiocode&logoColor=white`; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/burkeholland/mcp-vsc-button-gen'

If you have feedback or need assistance with the MCP directory API, please join our Discord server