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.
Best use case
mcp-config is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution.
Teams using mcp-config should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/mcp-config/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How mcp-config Compares
| Feature / Agent | mcp-config | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
ChatGPT vs Claude for Agent Skills
Compare ChatGPT and Claude for AI agent skills across coding, writing, research, and reusable workflow execution.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
SKILL.md Source
# MCP Configuration Management
## Overview
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.
## Critical Concepts
### Two Valid Configuration Locations
**ONLY these two locations are valid for MCP configuration:**
1. **User/Local scope**: `~/.claude.json`
- In the `mcpServers` field (global for all projects)
- Or under specific project paths (project-specific in user config)
2. **Project scope**: `.mcp.json` in your project root
- Checked into source control
- Only affects the current project
### ⚠️ Important Rules
- **DO NOT configure MCPs in `~/.claude.json` global `mcpServers`** - This loads MCPs in ALL sessions and wastes context space
- **DO configure MCPs in project-level `.mcp.json`** - This only loads MCPs when working in that specific project
- **Avoid `settings.json` for MCP control** - The `permissions.allow` field can override disabled settings and cause confusion
## When to Use This Skill
Invoke this skill when:
- Adding a new MCP server to a project
- Removing/disabling an MCP server
- MCP servers are loading when they shouldn't be
- Need to clean up MCP configuration
- Want to understand why an MCP is or isn't loading
## Quick Start
| 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 配置" |
---
## Configuration Workflow
### 1. Check Current MCP Status
First, understand what MCPs are currently loaded:
```bash
# 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"'
```
### 2. Add MCP to Current Project
**Best Practice**: Always add MCPs at project level
Create or edit `.mcp.json` in your project root:
```json
{
"mcpServers": {
"server-name": {
"type": "stdio",
"command": "npx",
"args": ["-y", "package-name"],
"env": {
"API_KEY": "your-key-here"
}
}
}
}
```
### 3. Remove MCP Configuration
**From global config** (`~/.claude.json`):
```python
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`):
```python
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")
```
### 4. Clean Up settings.json
Remove any MCP-related permissions that might override configuration:
```python
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)
```
---
## Common MCP Servers
### Pencil (Design Tool)
```json
{
"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"
}
}
}
```
### Shadcn Studio
```json
{
"mcpServers": {
"shadcn-studio-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"shadcn-studio-mcp",
"API_KEY=your-api-key",
"EMAIL=your-email"
],
"env": {}
}
}
}
```
### Unsplash
```json
{
"mcpServers": {
"unsplash": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@microlee666/unsplash-mcp-server"],
"env": {
"UNSPLASH_ACCESS_KEY": "your-access-key"
}
}
}
}
```
---
## Troubleshooting
### Problem: MCP loads in all sessions
**Cause**: MCP is configured in `~/.claude.json` global `mcpServers`
**Solution**:
1. Remove from `~/.claude.json` global config
2. Add to project-level `.mcp.json` instead
3. Restart Claude Code session
### Problem: MCP won't disable despite `"disabled": true`
**Cause**: `permissions.allow` in `settings.json` overrides disabled setting
**Solution**:
1. Remove MCP from `settings.json` permissions
2. Remove the entire `permissions` block if empty
3. Restart Claude Code session
### Problem: MCP configuration conflicts
**Cause**: MCP configured in multiple locations with different settings
**Solution**:
1. Check all three locations: `~/.claude.json`, `.mcp.json`, `settings.json`
2. Keep configuration in ONE place only (prefer `.mcp.json`)
3. Remove from other locations
### Problem: Can't find where MCP is configured
**Diagnostic commands**:
```bash
# 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"
```
---
## Best Practices
1. ✅ **Always use project-level `.mcp.json`** for project-specific MCPs
2. ✅ **Keep `~/.claude.json` global `mcpServers` empty** to avoid context pollution
3. ✅ **Avoid MCP configuration in `settings.json`** - use it only for permissions if needed
4. ✅ **Restart Claude Code after configuration changes** to ensure they take effect
5. ✅ **Check into source control** - Commit `.mcp.json` so team members get the same MCPs
6. ❌ **Never use `disabled: true`** - Just remove the MCP configuration entirely
7. ❌ **Don't mix configuration locations** - Pick one place and stick to it
---
## Configuration Priority
When Claude Code loads MCPs, it follows this priority:
1. Project-level `.mcp.json` (highest priority)
2. User-level `~/.claude.json` project-specific config
3. User-level `~/.claude.json` global `mcpServers`
4. `settings.json` permissions can override all of the above
**Recommendation**: Use only project-level `.mcp.json` to avoid confusion.
---
## Example: Complete Cleanup and Reconfiguration
```bash
# 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"
```
---
## Summary
- **Two valid locations**: `~/.claude.json` and `.mcp.json`
- **Best practice**: Use project-level `.mcp.json` only
- **Avoid**: Global `mcpServers` in `~/.claude.json` (wastes context)
- **Avoid**: MCP config in `settings.json` (causes conflicts)
- **Always restart** Claude Code after configuration changesRelated Skills
vscode-sftp-config
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.
vscode-port-monitor-config
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.
vscode-httpyac-config
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.
obsidian-to-x
发布内容和文章到 X (Twitter)。支持常规推文(文字/图片/视频)和 X Articles(长文 Markdown)。使用真实 Chrome 浏览器绕过反机器人检测。当用户说"发推"、"发到 X"、"发到 twitter"、"分享到 X"、"分享到 twitter"、"发 tweet"、"同步到 X"、"发布到 X"、提到"X Articles"、想从 Obsidian 笔记发布长文内容、或需要转换 Obsidian Markdown 到 X 格式时使用。适用于所有 X/Twitter 发布任务。
skill-creator-pro
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".
plugin-integration-checker
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/".
azure-appconfiguration-ts
Centralized configuration management with feature flags and dynamic refresh.
azure-appconfiguration-java
Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.
shellcheck-configuration
Master ShellCheck static analysis configuration and usage for shell script quality. Use when setting up linting infrastructure, fixing code issues, or ensuring script portability.
sast-configuration
Static Application Security Testing (SAST) tool setup, configuration, and custom rule creation for comprehensive security scanning across multiple programming languages.
prometheus-configuration
Complete guide to Prometheus setup, metric collection, scrape configuration, and recording rules.
odoo-ecommerce-configurator
Expert guide for Odoo eCommerce and Website: product catalog, payment providers, shipping methods, SEO, and order-to-fulfillment workflow.