Skip to main content
Advanced

MCP Profiles: one Claude per mission

Create specialized profiles (SEO, UX, security, dev) by combining .mcp.json, CLAUDE.md and shell aliases. Each mission gets its own Claude, ready in one command.

The problem: one generic Claude for everything

By default, Claude Code loads every MCP configured in ~/.claude.json. That works for daily development, but it causes three concrete issues:

  • Noise: 15+ MCP servers loaded when most are irrelevant for the current task
  • Startup time: each MCP spawns a process, even if you never use it during the session
  • Context confusion: Claude may reach for a design tool during a security audit, or suggest a dev tool when you're analyzing SEO

The solution: create specialized profiles that load only the tools relevant to a given mission.

The mechanism: .mcp.json + CLAUDE.md per project

Claude Code has a two-level configuration system:

  1. Global (~/.claude.json): loaded in every session
  2. Project (.mcp.json at the project root): loaded on top of global when you launch Claude from that directory

Combining these two levels with a CLAUDE.md that sets the role and mission-specific instructions gives you a specialized Claude per task.

Concrete example: 4 profiles in production

Here is a real-world configuration with 4 distinct profiles.

Profile 1: Fullstack dev (global)

The base profile, always active. Configured in ~/.claude.json:

{
"mcpServers": {
"sequential-thinking": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] },
"context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp"] },
"github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
"filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem"] },
"memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] },
"supabase": { "command": "npx", "args": ["-y", "@supabase/mcp-server-supabase"] },
"shadcn": { "type": "url", "url": "https://www.shadcn.io/api/mcp" },
"figma": { "type": "url", "url": "https://mcp.figma.com/mcp" }
}
}

This profile covers reasoning, docs, code, design and data. It handles 80% of daily work.

Profile 2: SEO audit

Directory: ~/projects/seo-audit/

.mcp.json:

{
"mcpServers": {
"seo-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "seo-mcp"]
},
"pagespeed": {
"type": "stdio",
"command": "npx",
"args": ["-y", "pagespeed-insights-mcp"],
"env": { "GOOGLE_API_KEY": "your-key" }
},
"gsc": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-server-gsc"],
"env": { "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json" }
},
"playwright": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"firecrawl": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-server-firecrawl"],
"env": { "FIRECRAWL_API_KEY": "your-key" }
}
}
}

Claude gets access to Google Search Console, PageSpeed Insights, page crawling and on-page SEO analysis. Combined with global MCPs (GitHub for repos, filesystem for configs), it covers a full technical SEO audit.

Profile 3: UI/UX audit

Directory: ~/projects/ui-audit/

.mcp.json:

{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"accesslint": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@accesslint/mcp"]
},
"pagespeed": {
"type": "stdio",
"command": "npx",
"args": ["-y", "pagespeed-insights-mcp"],
"env": { "GOOGLE_API_KEY": "your-key" }
},
"ui-expert": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@reallygood83/ui-expert-mcp"]
},
"seo-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "seo-mcp"]
}
}
}

The focus is on accessibility (AccessLint), real browser navigation (Playwright) and UX expertise. The SEO MCP is there to check semantic structure, not for a full SEO audit.

Profile 4: Security audit

Directory: ~/projects/sec-audit/

.mcp.json:

{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"semgrep": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@semgrep/mcp-server-semgrep"],
"env": { "SEMGREP_APP_TOKEN": "your-token" }
},
"snyk": {
"type": "stdio",
"command": "npx",
"args": ["-y", "snyk-mcp-server"],
"env": { "SNYK_TOKEN": "your-token" }
}
}
}

Three tools are enough here: Semgrep for static code analysis (SAST), Snyk for vulnerable dependencies (SCA), and Playwright for dynamic testing. A security audit does not need design or SEO MCPs.

The specialized CLAUDE.md: giving a role

The .mcp.json loads the tools. The CLAUDE.md provides context and behavior.

For the security profile for example, the CLAUDE.md defines:

  • The role: senior cybersecurity expert, Red/Blue/Purple Team
  • The frameworks: OWASP Top 10, MITRE ATT&CK, CIS Benchmarks, CVSS v3.1
  • The workflow: reconnaissance, static analysis, dynamic testing, report
  • The output format: findings with severity, CWE, reproducible PoC, remediation
  • The absolute rules: no destructive exploits, no false positives, always a concrete remediation

Without this CLAUDE.md, Claude would use Semgrep and Snyk generically. With it, Claude follows a structured audit methodology and produces professional reports.

Shell aliases: switch in one command

Last piece of the puzzle: aliases in your .bashrc (or .zshrc) to launch the right profile instantly:

# Dev profile: global profile, works anywhere
alias claude-dev='claude'
# SEO profile: loads SEO audit MCPs
alias claude-seo='cd ~/projects/seo-audit && claude'
# UX profile: loads UI/accessibility audit MCPs
alias claude-ui='cd ~/projects/ui-audit && claude'
# Security profile: loads cyber audit MCPs
alias claude-sec='cd ~/projects/sec-audit && claude'

After a source ~/.bashrc, type claude-sec and you get a security-specialized Claude with Semgrep, Snyk, Playwright and a pentester CLAUDE.md.

Step by step setup

Create the project directory

Create a dedicated directory for each profile. It does not need to contain code, just the Claude configuration:

mkdir -p ~/projects/seo-audit
mkdir -p ~/projects/ui-audit
mkdir -p ~/projects/sec-audit

Write the .mcp.json

In each directory, create a .mcp.json with only the MCPs needed for the mission. Refer to the examples above or browse the MCP pages of this guide to pick the right tools.

# Example for the SEO profile
cat > ~/projects/seo-audit/.mcp.json << 'EOF'
{
"mcpServers": {
"seo-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "seo-mcp"] },
"playwright": { "type": "stdio", "command": "npx", "args": ["-y", "@playwright/mcp@latest"] }
}
}
EOF

Write the CLAUDE.md

Write a CLAUDE.md at the project root. Define the role, methodology, output format and rules. The more specialized the profile, the more detailed the CLAUDE.md should be.

cat > ~/projects/seo-audit/CLAUDE.md << 'EOF'
# Claude Code - SEO Expert
## Role
Full technical SEO audit. On-page analysis, performance,
indexation and structured data.
## Workflow
1. Crawl the site (Playwright + Firecrawl)
2. PageSpeed analysis on key pages
3. Google Search Console verification
4. Report with priorities and recommendations
## Output format
Structured Markdown report with scores, screenshots and actions.
EOF

Add shell aliases

Add the aliases to your .bashrc or .zshrc:

echo "alias claude-seo='cd ~/projects/seo-audit && claude'" >> ~/.bashrc
echo "alias claude-ui='cd ~/projects/ui-audit && claude'" >> ~/.bashrc
echo "alias claude-sec='cd ~/projects/sec-audit && claude'" >> ~/.bashrc
source ~/.bashrc

Test each profile

Launch each alias and verify the right MCPs are loaded:

claude-seo
# In Claude, type /mcp to see active servers

You should see both global MCPs and the profile-specific MCPs.

Why it's worth it

BenefitDetail
FocusClaude only suggests tools relevant to the task. No Figma suggestions during a security audit
Faster startup3 MCPs instead of 15 = quicker launch, less memory
ReproducibilityA colleague clones the project directory and gets the exact same environment
Secret separationSemgrep tokens stay in the security profile, Google keys in the SEO profile
Adapted CLAUDE.mdClaude's behavior changes based on the mission, not just its tools

Going further

A few ideas to expand your profiles:

  • Data profile: PostgreSQL MCP, Supabase and a CLAUDE.md as a data analyst
  • Writing profile: Firecrawl MCP (research), Memory (style guide) and a CLAUDE.md as a writer
  • DevOps profile: GitHub MCP, Sentry, a CLAUDE.md with your team's runbooks
  • Monitoring profile: Chrome DevTools MCP, Playwright and a CLAUDE.md as an SRE watching performance

The .mcp.json + CLAUDE.md + shell alias combination turns Claude Code into a modular toolkit. Each profile is a ready-to-use expert.