| name | mcp-server-installer |
| description | Add MCP servers to Claude Code configuration at user level (~/.claude). Supports stdio, HTTP, and SSE transports with environment variable prompting. Use when "add mcp server", "install mcp", "configure mcp server", "new mcp", or "setup mcp server". |
| allowed-tools | Read, Write, Bash, AskUserQuestion |
MCP Server Installer
Autonomously add MCP (Model Context Protocol) servers to Claude Code configuration at the user level (~/.claude/mcp.json).
When to Activate
- "add mcp server"
- "install mcp", "configure mcp"
- "new mcp server", "setup mcp"
- "add [server-name] mcp"
- User provides MCP server configuration JSON
Process
Step 1: Gather Server Information
Ask user for:
Server name (e.g., "mobile-mcp-server")
- Must be lowercase with hyphens
- Will be used as the key in mcpServers object
Transport type:
stdio- Local command execution (most common)http- Remote HTTP serversse- Server-Sent Events (deprecated but supported)
Based on transport type:
For stdio:
- Command (e.g., "npx", "node", "/usr/local/bin/server")
- Arguments array (e.g.,
["@daipham/mobile-mcp-server@latest"]) - Environment variables (if needed)
For http:
- URL (e.g., "https://api.example.com/mcp")
- Headers (optional, e.g.,
{"Authorization": "Bearer ${API_KEY}"})
For sse:
- URL (e.g., "https://api.example.com/sse")
- Headers (optional)
Step 2: Collect Environment Variables
Always ask user: "Does this MCP server require any environment variables?"
If yes, for each variable:
- Variable name (e.g., "API_KEY", "DATABASE_URL")
- Description/purpose
- Whether it's required or optional
- Default value (if optional)
Document in output: List all required environment variables with instructions on where to set them.
Step 3: Read Existing Configuration
Check for existing .mcp.json at user level:
cat ~/.claude/mcp.json
If file doesn't exist, create new structure. If exists, parse and merge.
Step 4: Generate Configuration
Use templates from templates.md to generate the server configuration based on transport type.
Apply environment variable syntax:
${VAR}- Required variable (will error if not set)${VAR:-default}- Optional variable with default value
Step 5: Update Configuration File
Merge strategy:
- Preserve existing servers
- Add new server to
mcpServersobject - Maintain JSON formatting (2-space indent)
- Validate JSON before writing
Write to ~/.claude/mcp.json.
Step 6: Create Environment File Reference
If environment variables are needed, inform user:
โ ๏ธ Environment Variables Required:
Set these in your shell profile (~/.zshrc or ~/.bashrc):
export VAR_NAME="value"
export ANOTHER_VAR="value"
Or create a project-specific .env file and reference it:
"envFile": "${workspaceFolder}/.env"
Step 7: Validate and Test
Run validation:
claude mcp list
Show the newly added server in the output.
Output Format
โ
MCP Server Added: [server-name]
๐ Configuration: ~/.claude/mcp.json
๐ง Transport: [stdio/http/sse]
๐ฆ Command: [command with args] (if stdio)
๐ URL: [url] (if http/sse)
๐ Configuration Added:
```json
{
"server-name": {
// configuration here
}
}
โ ๏ธ Environment Variables Required:
- VAR_NAME: [description]
- ANOTHER_VAR: [description]
๐ก Set environment variables:
Add to ~/.zshrc or ~/.bashrc: export VAR_NAME="your-value"
Or use project .env file: "envFile": "${workspaceFolder}/.env"
โ Restart Claude Code to activate the new MCP server.
๐งช Test with: claude mcp list
## Error Handling
- **Invalid JSON**: Show parsing error, ask user to verify configuration
- **Duplicate server name**: Ask if user wants to overwrite existing server
- **Missing required fields**: Prompt for missing information
- **File permission errors**: Suggest checking ~/.claude directory permissions
## Important Notes
1. **User-level scope**: Servers added at `~/.claude/mcp.json` are available across all projects
2. **Environment variables**: Always prompt for environment variables - many MCP servers require API keys or configuration
3. **Restart required**: Claude Code must be restarted after adding MCP servers
4. **Validation**: Use `claude mcp list` to verify the server was added successfully
5. **Security**: Never log or display actual environment variable values
## Reference
See `templates.md` for configuration templates for each transport type.