Skip to main content
Glama
burkeholland

VS Code MCP Button Generator

by burkeholland
README.md
# mcp-vsc-button-gen

A tiny MCP server that generates VS Code MCP install buttons (Stable + Insiders) for NPX-based servers.

- Runtime: Node (stdio transport)
- Command: npx mcp-vsc-button-gen

You can run it directly via NPX (no install):

```sh
npx mcp-vsc-button-gen
```

## Install in VS Code

[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=vsc-buttons&config=%7B%22command%22%3A%22node%22%2C%22args%22%3A%5B%22dist%2Findex.js%22%5D%7D)
[![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=vsc-buttons&config=%7B%22command%22%3A%22node%22%2C%22args%22%3A%5B%22dist%2Findex.js%22%5D%7D&quality=insiders)

## Tools

- make_install_buttons
  - Input: { name: string, inputs?: MCPInput[], config?: CommandConfig }
  - Output: Markdown string with two badges/links.
- from_mcp_config
  - Input: { name: string, mcp: { inputs?: MCPInput[], config?: CommandConfig } }
  - Output: Markdown string with two badges/links.
- copilot_buttons_from_raw
  - Input: { kind: 'chat-instructions' | 'chat-prompt' | 'chat-mode', url: string }
  - Output: Markdown with two badges linking to vscode.dev/insiders redirect for Install
- copilot_buttons_from_github
  - Input: { kind: 'chat-instructions' | 'chat-prompt' | 'chat-mode', owner: string, repo: string, path: string, branch?: string }
  - Output: Markdown with two badges as above

Types:
- MCPInput: { type: 'promptString', id: string, description?: string, password?: boolean }
- CommandConfig: { command: 'npx', args?: string[], env?: Record<string,string> }

## Example

Input:
```json
{
  "name": "supabase",
  "inputs": [
    { "type": "promptString", "id": "supabase-access-token", "description": "Supabase personal access token", "password": true }
  ],
  "config": {
    "command": "npx",
    "args": ["-y", "@supabase/mcp-server-supabase@latest", "--readonly", "--project-ref=$SUPABASE_MCP_PROJECT_REF"],
    "env": {
      "SUPABASE_ACCESS_TOKEN": "${input:supabase-access-token}",
      "SUPABASE_MCP_PROJECT_REF": "${input:supabase-project-ref}"
    }
  }
}
```

Output: two markdown buttons for Stable and Insiders.

## Local dev

- Install deps
- Build
- Run via stdio (for manual testing)

### Quickstart

```sh
npm i
npm run build
node dist/index.js
```

You can also run in dev:

```sh
npm run dev
```

This server speaks MCP stdio; integrate with an MCP client to call tools.

TDQS

B3.2/5.0

Scored across 4 tools

Disambiguation4/5

The tools are mostly distinct, each targeting a different source for generating VS Code install buttons: GitHub files, raw URLs, MCP config objects, and NPX-based servers. However, 'copilot_buttons_from_github' and 'copilot_buttons_from_raw' share a similar prefix and purpose (generating buttons from external sources), which could cause minor confusion in selection, but their descriptions clarify the specific input types.

Naming Consistency2/5

The naming is inconsistent with mixed conventions: 'copilot_buttons_from_github' and 'copilot_buttons_from_raw' use snake_case with a 'from' preposition, while 'from_mcp_config' starts with 'from' and uses snake_case, and 'make_install_buttons' uses snake_case but with a 'make' verb. This lack of a predictable pattern (e.g., all starting with 'generate' or using consistent verb styles) reduces clarity and coherence.

Tool Count5/5

With 4 tools, the count is well-scoped and appropriate for the server's purpose of generating VS Code install buttons from various sources. Each tool earns its place by covering distinct input methods, avoiding bloat while providing comprehensive coverage for the domain.

Completeness5/5

The tool set is complete for the inferred domain of generating VS Code MCP install buttons, covering all likely input sources: GitHub repositories, raw URLs, MCP config objects, and NPX-based servers. There are no obvious gaps, as this provides full lifecycle coverage for creating buttons from different data origins.

Maintenance

ActivityInactive
ResponsivenessNo issues