with one click
mcp-config
// Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution.
// Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution.
ĺĺ¸ĺ 厚ĺćçŤ ĺ° X (Twitter)ăćŻć常č§ć¨ć(ćĺ/ĺžç/č§é˘)ĺ X Articles(éżć Markdown)ă使ç¨çĺŽ Chrome ćľč§ĺ¨çťčżĺćşĺ¨äşşćŁćľăĺ˝ç¨ćˇčŻ´"ĺć¨"ă"ĺĺ° X"ă"ĺĺ° twitter"ă"ĺäşŤĺ° X"ă"ĺäşŤĺ° twitter"ă"ĺ tweet"ă"ĺćĽĺ° X"ă"ĺĺ¸ĺ° X"ăćĺ°"X Articles"ăćłäť Obsidian çŹčްĺĺ¸éżćĺ 厚ăćéčŚč˝Źć˘ Obsidian Markdown ĺ° X ć źĺźćśä˝żç¨ăéç¨äşćć X/Twitter ĺĺ¸äťťĺĄă
Check if a skill is part of a plugin and verify its integration with commands and agents. Use after creating or modifying a skill to ensure proper plugin architecture. Triggers on "check plugin integration", "verify skill integration", "is this skill in a plugin", "check command-skill-agent integration", or after skill creation/modification when the skill path contains ".claude-plugins" or "plugins/".
Create new skills, modify and improve existing skills, and measure skill performance. Enhanced version with quick commands. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Triggers on phrases like "make a skill", "create a new skill", "build a skill for", "improve this skill", "optimize my skill", "test my skill", "turn this into a skill", "skill description optimization", or "help me create a skill".
Configure VSCode with httpYac for API testing and automation. This skill should be used specifically when converting API documentation to executable .http files (10+ endpoints), setting up authentication flows with pre-request scripts, implementing request chaining with response data, organizing multi-file collections with environment management, or establishing Git-based API testing workflows with CI/CD integration.
This skill should be used when configuring VS Code Port Monitor extension for development server monitoring. Use when the user asks to "set up port monitoring for Vite", "monitor my dev server ports", "configure port monitor for Next.js", "track which ports are running", "set up multi-port monitoring", "monitor frontend and backend ports", or "check port status in VS Code". Provides ready-to-use configuration templates for Vite (5173), Next.js (3000), and microservices architectures with troubleshooting guidance.
This skill should be used when setting up SFTP deployment for static websites to production servers, including converting projects from Docker/Express to static hosting, deploying Vue/React/Angular builds, setting up Slidev presentations, or configuring Hugo/Jekyll/Gatsby sites. Use this when the user asks to "setup SFTP deployment", "deploy static site to server", "configure Nginx for static files", "convert from Docker to static hosting", "deploy Vue build to production", "setup subdomain hosting", or "configure SFTP in VS Code". Provides SFTP configuration templates and production-ready Nginx configurations with security headers and caching.
| name | mcp-config |
| description | Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution. |
This skill helps you properly configure MCP servers in Claude Code. It ensures MCP servers are configured in the right location and scope to avoid unnecessary context pollution across all sessions.
ONLY these two locations are valid for MCP configuration:
User/Local scope: ~/.claude.json
mcpServers field (global for all projects)Project scope: .mcp.json in your project root
~/.claude.json global mcpServers - This loads MCPs in ALL sessions and wastes context space.mcp.json - This only loads MCPs when working in that specific projectsettings.json for MCP control - The permissions.allow field can override disabled settings and cause confusionInvoke this skill when:
| Task | Example |
|---|---|
| Add MCP to current project | "桝ĺ pencil MCP ĺ°ĺ˝ĺ饚çŽ" |
| Remove MCP from all projects | "äťćć饚çŽä¸ç§ťé¤ shadcn-studio-mcp" |
| Check MCP configuration | "ćŁćĽĺ˝ĺç MCP é 罎" |
| Clean up global MCPs | "㏠çĺ ¨ĺą MCP é 罎" |
First, understand what MCPs are currently loaded:
# Check user-level configuration
cat ~/.claude.json | grep -A 20 '"mcpServers"' | head -25
# Check project-level configuration
cat .mcp.json 2>/dev/null || echo "No project .mcp.json found"
# Check settings.json (should NOT have MCP config)
cat ~/.claude/settings.json | grep -A 5 '"permissions"'
Best Practice: Always add MCPs at project level
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"server-name": {
"type": "stdio",
"command": "npx",
"args": ["-y", "package-name"],
"env": {
"API_KEY": "your-key-here"
}
}
}
}
From global config (~/.claude.json):
import json
with open('/Users/likai/.claude.json', 'r') as f:
data = json.load(f)
# Remove from global mcpServers
if 'mcpServers' in data and 'server-name' in data['mcpServers']:
del data['mcpServers']['server-name']
print(f"Removed server-name from global config")
with open('/Users/likai/.claude.json', 'w') as f:
json.dump(data, f, indent=2)
From project config (.mcp.json):
import json
try:
with open('.mcp.json', 'r') as f:
data = json.load(f)
if 'mcpServers' in data and 'server-name' in data['mcpServers']:
del data['mcpServers']['server-name']
with open('.mcp.json', 'w') as f:
json.dump(data, f, indent=2)
print("Removed server-name from project config")
except FileNotFoundError:
print("No .mcp.json found in project")
Remove any MCP-related permissions that might override configuration:
import json
with open('/Users/likai/.claude/settings.json', 'r') as f:
data = json.load(f)
# Remove permissions block if it contains MCP references
if 'permissions' in data:
if 'allow' in data['permissions']:
data['permissions']['allow'] = [
item for item in data['permissions']['allow']
if not item.startswith('mcp__')
]
if not data['permissions']['allow']:
del data['permissions']
with open('/Users/likai/.claude/settings.json', 'w') as f:
json.dump(data, f, indent=2)
{
"mcpServers": {
"pencil": {
"command": "/Users/likai/.vscode/extensions/highagency.pencildev-0.6.29/out/mcp-server-darwin-arm64",
"args": ["--app", "visual_studio_code"],
"env": {},
"type": "stdio"
}
}
}
{
"mcpServers": {
"shadcn-studio-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"shadcn-studio-mcp",
"API_KEY=your-api-key",
"EMAIL=your-email"
],
"env": {}
}
}
}
{
"mcpServers": {
"unsplash": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@microlee666/unsplash-mcp-server"],
"env": {
"UNSPLASH_ACCESS_KEY": "your-access-key"
}
}
}
}
Cause: MCP is configured in ~/.claude.json global mcpServers
Solution:
~/.claude.json global config.mcp.json instead"disabled": trueCause: permissions.allow in settings.json overrides disabled setting
Solution:
settings.json permissionspermissions block if emptyCause: MCP configured in multiple locations with different settings
Solution:
~/.claude.json, .mcp.json, settings.json.mcp.json)Diagnostic commands:
# Search all possible locations
echo "=== Global Config ==="
grep -A 10 '"mcpServers"' ~/.claude.json | head -15
echo "=== Project Config ==="
cat .mcp.json 2>/dev/null || echo "No .mcp.json"
echo "=== Settings ==="
grep -A 5 '"permissions"' ~/.claude/settings.json 2>/dev/null || echo "No permissions"
echo "=== Project Settings ==="
grep -A 5 '"permissions"' .claude/settings.json 2>/dev/null || echo "No project settings"
.mcp.json for project-specific MCPs~/.claude.json global mcpServers empty to avoid context pollutionsettings.json - use it only for permissions if needed.mcp.json so team members get the same MCPsdisabled: true - Just remove the MCP configuration entirelyWhen Claude Code loads MCPs, it follows this priority:
.mcp.json (highest priority)~/.claude.json project-specific config~/.claude.json global mcpServerssettings.json permissions can override all of the aboveRecommendation: Use only project-level .mcp.json to avoid confusion.
# 1. Clean up global config
python3 << 'EOF'
import json
with open('/Users/likai/.claude.json', 'r') as f:
data = json.load(f)
data['mcpServers'] = {}
with open('/Users/likai/.claude.json', 'w') as f:
json.dump(data, f, indent=2)
print("â Cleaned global mcpServers")
EOF
# 2. Clean up settings.json
python3 << 'EOF'
import json
with open('/Users/likai/.claude/settings.json', 'r') as f:
data = json.load(f)
if 'permissions' in data:
del data['permissions']
with open('/Users/likai/.claude/settings.json', 'w') as f:
json.dump(data, f, indent=2)
print("â Cleaned settings.json permissions")
EOF
# 3. Create project-level config
cat > .mcp.json << 'EOF'
{
"mcpServers": {
"your-mcp-name": {
"type": "stdio",
"command": "your-command",
"args": [],
"env": {}
}
}
}
EOF
echo "â Created project .mcp.json"
# 4. Restart Claude Code
echo "â ď¸ Please restart Claude Code for changes to take effect"
~/.claude.json and .mcp.json.mcp.json onlymcpServers in ~/.claude.json (wastes context)settings.json (causes conflicts)