setup-mcp-server
Skill179 starsChanged 55 days agoMITView on GitHub
Add mcp-rubber-duck MCP server to an AI coding tool (Claude Desktop, Cursor, VS Code, Windsurf, etc.)
- Reads credentials
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 9 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
If $ARGUMENTS specifies a tool name, use it.
- Very specific: line 42
Run uname -s to detect macOS / Linux / Windows (Git Bash).
- Very specific: line 48
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
- Distinctive: line 53
Ask the user which providers to include.
- Very specific: line 66
If real key: validate it looks reasonable (starts with expected prefix like sk- for OpenAI, gsk_ for Groq)
- Very specific: line 67
If placeholder: use descriptive placeholders like your-openai-api-key-here
- Very specific: line 71
Read the config template from .claude/skills/setup-mcp-server/references/tool-configs.md to get the exact JSON/YAML structure for the …
- Very specific: line 77
Use the claude mcp add CLI command — this is the idiomatic way:
- Very specific: line 85
If the user prefers project-scope, use --scope project (writes to .mcp.json).
- Distinctive: line 90
Read the existing config file if it exists
- Very specific: line 91
If rubber-duck entry already exists, warn the user and ask before overwriting
- Distinctive: line 92
If other MCP servers exist, merge — never overwrite the entire file
- Very specific: line 93
If the file doesn't exist, create it (and parent directories with mkdir -p)
- Distinctive: line 94
If existing JSON is invalid, warn and offer to backup the broken file before writing
- Distinctive: line 95
Write the final config
- Distinctive: line 106
After writing the config, tell the user:
- Distinctive: line 114
Never overwrite existing MCP server entries for other servers
- Distinctive: line 115
Always create parent directories before writing config files
- Distinctive: line 116
Use the exact JSON structure from the reference templates
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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, usemcp-rubber-duckas the command- If we're inside the mcp-rubber-duck repo (check for
package.jsonwith"name": "mcp-rubber-duck"), offer from-source vianode 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-duckThen 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-duckentry 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
mcpServersas 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_duckstool withcheck_health: true - Troubleshoot — point them to
.claude/skills/setup-mcp-server/references/troubleshooting.mdif 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_PROVIDERset to the first selected HTTP provider
In this repository3 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- tool-reviewSkill
- update-pricingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

