| name | setup-mcp-server |
| description | Add mcp-rubber-duck MCP server to an AI coding tool (Claude Desktop, Cursor, VS Code, Windsurf, etc.) |
| disable-model-invocation | true |
| argument-hint | [tool-name] |
| allowed-tools | Read, Write, Edit, Bash, AskUserQuestion |
Setup mcp-rubber-duck
You are setting up mcp-rubber-duck as an MCP server in an AI coding tool.
Reference
.claude/skills/setup-mcp-server/references/tool-configs.md — per-tool JSON/YAML config templates
.claude/skills/setup-mcp-server/references/provider-env-vars.md — env var reference
.claude/skills/setup-mcp-server/references/troubleshooting.md — common issues
Supported tools and config paths
| Tool | Config File (macOS) | Key | Notes |
|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json | mcpServers | Windows: %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code (user) | ~/.claude.json | mcpServers | Prefer claude mcp add CLI |
| Claude Code (project) | .mcp.json | mcpServers | Shared via VCS |
| Cursor (project) | .cursor/mcp.json | mcpServers | |
| Cursor (global) | ~/.cursor/mcp.json | mcpServers | |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | mcpServers | Supports ${env:VAR} |
| VS Code | .vscode/mcp.json | servers | Different key name! Uses ${env:VAR} |
| Continue | .continue/config.yaml | mcpServers (array) | YAML format |
ChatGPT supports MCP via UI only (Developer Mode > Add MCP Server), not a config file.
1. Determine target tool
If $ARGUMENTS specifies a tool name, use it. Otherwise ask the user:
Supported tools: claude-desktop, claude-code, cursor, windsurf, vscode, continue
2. Detect platform
Run uname -s to detect macOS / Linux / Windows (Git Bash). This affects config file paths.
3. Detect install method
Check in order:
which mcp-rubber-duck — if found, use mcp-rubber-duck as the command
- If we're inside the mcp-rubber-duck repo (check for
package.json with "name": "mcp-rubber-duck"), offer from-source via node dist/index.js
- Default to
npx -y mcp-rubber-duck
4. Ask about providers
Ask the user which providers to include. Offer these choices:
- OpenAI (
OPENAI_API_KEY) — most popular
- Google Gemini (
GEMINI_API_KEY)
- Groq (
GROQ_API_KEY) — fast inference
- Ollama (local, no key needed)
- CLI agents (Claude CLI, Codex, Gemini CLI, Aider)
Allow multiple selections.
5. Ask about API keys
For each selected HTTP provider that needs a key, ask: provide a real key now or use a placeholder to fill in later?
- If real key: validate it looks reasonable (starts with expected prefix like
sk- for OpenAI, gsk_ for Groq)
- If placeholder: use descriptive placeholders like
your-openai-api-key-here
6. Load reference templates
Read the config template from .claude/skills/setup-mcp-server/references/tool-configs.md to get the exact JSON/YAML structure for the target tool.
7. Write the configuration
For Claude Code (claude-code)
Use the claude mcp add CLI command — this is the idiomatic way:
claude mcp add --scope user rubber-duck -- mcp-rubber-duck
Then set env vars by editing ~/.claude.json to add the env block, or suggest the user set them in their shell profile.
If the user prefers project-scope, use --scope project (writes to .mcp.json).
For all other tools
- Determine the config file path (platform-aware) from the reference templates
- Read the existing config file if it exists
- If
rubber-duck entry already exists, warn the user and ask before overwriting
- If other MCP servers exist, merge — never overwrite the entire file
- If the file doesn't exist, create it (and parent directories with
mkdir -p)
- If existing JSON is invalid, warn and offer to backup the broken file before writing
- Write the final config
Important details
- Always include
"MCP_SERVER": "true" in the env block — this is required
- VS Code uses
"servers" key, not "mcpServers" — get this right
- Continue uses YAML with
mcpServers as an array of objects
- Windsurf & VS Code support
${env:VAR_NAME} syntax for env var interpolation
8. Print verification steps
After writing the config, tell the user:
- Restart the tool (fully quit and relaunch for desktop apps)
- Test by using the
list_ducks tool with check_health: true
- Troubleshoot — point them to
.claude/skills/setup-mcp-server/references/troubleshooting.md if anything goes wrong
Important rules
- Never overwrite existing MCP server entries for other servers
- Always create parent directories before writing config files
- Use the exact JSON structure from the reference templates
- For env var interpolation tools (VS Code, Windsurf), prefer
${env:VAR} syntax over hardcoded keys
- Include
DEFAULT_PROVIDER set to the first selected HTTP provider