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:
- Global (
~/.claude.json): loaded in every session - Project (
.mcp.jsonat 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 anywherealias claude-dev='claude'# SEO profile: loads SEO audit MCPsalias claude-seo='cd ~/projects/seo-audit && claude'# UX profile: loads UI/accessibility audit MCPsalias claude-ui='cd ~/projects/ui-audit && claude'# Security profile: loads cyber audit MCPsalias 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-auditmkdir -p ~/projects/ui-auditmkdir -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 profilecat > ~/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## RoleFull technical SEO audit. On-page analysis, performance,indexation and structured data.## Workflow1. Crawl the site (Playwright + Firecrawl)2. PageSpeed analysis on key pages3. Google Search Console verification4. Report with priorities and recommendations## Output formatStructured 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'" >> ~/.bashrcecho "alias claude-ui='cd ~/projects/ui-audit && claude'" >> ~/.bashrcecho "alias claude-sec='cd ~/projects/sec-audit && claude'" >> ~/.bashrcsource ~/.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
| Benefit | Detail |
|---|---|
| Focus | Claude only suggests tools relevant to the task. No Figma suggestions during a security audit |
| Faster startup | 3 MCPs instead of 15 = quicker launch, less memory |
| Reproducibility | A colleague clones the project directory and gets the exact same environment |
| Secret separation | Semgrep tokens stay in the security profile, Google keys in the SEO profile |
| Adapted CLAUDE.md | Claude'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.mdas a data analyst - Writing profile: Firecrawl MCP (research), Memory (style guide) and a
CLAUDE.mdas a writer - DevOps profile: GitHub MCP, Sentry, a
CLAUDE.mdwith your team's runbooks - Monitoring profile: Chrome DevTools MCP, Playwright and a
CLAUDE.mdas 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.