omc-mcp-extension Setup
Complete setup for MCP servers with behavior guides.
What This Does
- Backs up
~/.claude.jsonand~/.claude/CLAUDE.md - Updates
~/.claude.jsonmcpServers (skips duplicates) - Copies MCP guide files to
~/.claude/directory - Adds
@importreferences to~/.claude/CLAUDE.md
Execution Steps
Step 1: Backup Existing Files
BACKUP_DIR="$HOME/.claude/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# Backup ~/.claude.json
if [[ -f "$HOME/.claude.json" ]]; then
cp "$HOME/.claude.json" "$BACKUP_DIR/claude.json.backup_$TIMESTAMP"
echo "✅ Backup: ~/.claude.json"
fi
# Backup CLAUDE.md
if [[ -f "$HOME/.claude/CLAUDE.md" ]]; then
cp "$HOME/.claude/CLAUDE.md" "$BACKUP_DIR/CLAUDE.md.backup_$TIMESTAMP"
echo "✅ Backup: CLAUDE.md"
fi
Step 2: Update ~/.claude.json mcpServers (Skip Duplicates)
Add MCP servers to ~/.claude.json mcpServers field. Skip if already exists.
Ask user: "Enter your MORPH_API_KEY (from https://morphllm.com) or press Enter to skip Morphllm:"
CLAUDE_JSON="$HOME/.claude.json"
# MORPH_API_KEY from user input
# Ensure mcpServers exists as object
if ! jq -e '.mcpServers | type == "object"' "$CLAUDE_JSON" > /dev/null 2>&1; then
jq '.mcpServers = {}' "$CLAUDE_JSON" > tmp.json && mv tmp.json "$CLAUDE_JSON"
fi
# Add context7 (skip if exists)
if ! jq -e '.mcpServers.context7' "$CLAUDE_JSON" > /dev/null 2>&1; then
jq '.mcpServers.context7 = {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}' "$CLAUDE_JSON" > tmp.json && mv tmp.json "$CLAUDE_JSON"
echo "✅ Added: context7"
else
echo "⏭️ Skipped: context7 (already exists)"
fi
# Add serena (skip if exists)
if ! jq -e '.mcpServers.serena' "$CLAUDE_JSON" > /dev/null 2>&1; then
jq '.mcpServers.serena = {
"command": "uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant"]
}' "$CLAUDE_JSON" > tmp.json && mv tmp.json "$CLAUDE_JSON"
echo "✅ Added: serena"
else
echo "⏭️ Skipped: serena (already exists)"
fi
# Add sequential-thinking (skip if exists)
if ! jq -e '.mcpServers["sequential-thinking"]' "$CLAUDE_JSON" > /dev/null 2>&1; then
jq '.mcpServers["sequential-thinking"] = {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}' "$CLAUDE_JSON" > tmp.json && mv tmp.json "$CLAUDE_JSON"
echo "✅ Added: sequential-thinking"
else
echo "⏭️ Skipped: sequential-thinking (already exists)"
fi
# Add morphllm-fast-apply (skip if exists, include API key in env)
if ! jq -e '.mcpServers["morphllm-fast-apply"]' "$CLAUDE_JSON" > /dev/null 2>&1; then
if [[ -n "$MORPH_API_KEY" && "$MORPH_API_KEY" != "" ]]; then
jq --arg apikey "$MORPH_API_KEY" '.mcpServers["morphllm-fast-apply"] = {
"command": "npx",
"args": ["@morph-llm/morph-fast-apply"],
"env": {
"MORPH_API_KEY": $apikey
}
}' "$CLAUDE_JSON" > tmp.json && mv tmp.json "$CLAUDE_JSON"
echo "✅ Added: morphllm-fast-apply (with API key)"
else
echo "⏭️ Skipped: morphllm-fast-apply (no API key provided)"
fi
else
echo "⏭️ Skipped: morphllm-fast-apply (already exists)"
fi
Step 3: Copy MCP Guide Files
PLUGIN_DIR="${CLAUDE_PLUGIN_ROOT:-$(pwd)}"
CLAUDE_DIR="$HOME/.claude"
for md_file in "$PLUGIN_DIR/mcp/MCP_"*.md; do
if [[ -f "$md_file" ]]; then
filename=$(basename "$md_file")
cp "$md_file" "$CLAUDE_DIR/$filename"
echo "✅ Copied: $filename"
fi
done
Step 4: Add @import References to CLAUDE.md
CLAUDE_MD="$HOME/.claude/CLAUDE.md"
START_MARKER="<!-- OMC-MCP-EXT:START -->"
END_MARKER="<!-- OMC-MCP-EXT:END -->"
build_content() {
cat << 'EOF'
<!-- OMC-MCP-EXT:START -->
# MCP Server Guides (omc-mcp-extension)
@MCP_Context7.md
@MCP_Serena.md
@MCP_Sequential.md
@MCP_Morphllm.md
<!-- OMC-MCP-EXT:END -->
EOF
}
# Create CLAUDE.md if not exists
if [[ ! -f "$CLAUDE_MD" ]]; then
mkdir -p "$(dirname "$CLAUDE_MD")"
echo "# User Instructions" > "$CLAUDE_MD"
fi
# Remove existing markers if present
if grep -q "$START_MARKER" "$CLAUDE_MD"; then
temp_file=$(mktemp)
awk -v start="$START_MARKER" -v end="$END_MARKER" '
$0 ~ start { skip=1; next }
$0 ~ end { skip=0; next }
!skip { print }
' "$CLAUDE_MD" > "$temp_file"
mv "$temp_file" "$CLAUDE_MD"
fi
# Append new content
echo "" >> "$CLAUDE_MD"
build_content >> "$CLAUDE_MD"
echo "✅ Added @import references to CLAUDE.md"
Step 5: Completion Message
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ omc-mcp-extension Setup Complete!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BACKUPS:
~/.claude/backups/claude.json.backup_[timestamp]
~/.claude/backups/CLAUDE.md.backup_[timestamp]
MCP SERVERS (in ~/.claude.json → mcpServers):
• context7 (official library documentation)
• serena (semantic code analysis + memory)
• sequential-thinking (structured reasoning)
• morphllm-fast-apply (bulk code editing) - if API key provided
MCP GUIDE FILES:
~/.claude/MCP_Context7.md
~/.claude/MCP_Serena.md
~/.claude/MCP_Sequential.md
~/.claude/MCP_Morphllm.md
CLAUDE.MD IMPORTS:
@MCP_Context7.md
@MCP_Serena.md
@MCP_Sequential.md
@MCP_Morphllm.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ Restart Claude Code to apply MCP changes!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ADD MORPHLLM LATER (if skipped):
Edit ~/.claude.json and add to mcpServers:
"morphllm-fast-apply": {
"command": "npx",
"args": ["@morph-llm/morph-fast-apply"],
"env": { "MORPH_API_KEY": "your-key-here" }
}
RESTORE:
cp ~/.claude/backups/claude.json.backup_[timestamp] ~/.claude.json
cp ~/.claude/backups/CLAUDE.md.backup_[timestamp] ~/.claude/CLAUDE.md
Uninstall
# Remove MCP servers from ~/.claude.json
jq 'del(.mcpServers.context7, .mcpServers.serena, .mcpServers["sequential-thinking"], .mcpServers["morphllm-fast-apply"])' \
~/.claude.json > tmp.json && mv tmp.json ~/.claude.json
# Remove from CLAUDE.md
sed -i '' '/<!-- OMC-MCP-EXT:START -->/,/<!-- OMC-MCP-EXT:END -->/d' ~/.claude/CLAUDE.md
# Remove MCP guide files
rm -f ~/.claude/MCP_Context7.md ~/.claude/MCP_Serena.md ~/.claude/MCP_Sequential.md ~/.claude/MCP_Morphllm.md
Restore from Backup
# List backups
ls -la ~/.claude/backups/
# Restore
cp ~/.claude/backups/claude.json.backup_[timestamp] ~/.claude.json
cp ~/.claude/backups/CLAUDE.md.backup_[timestamp] ~/.claude/CLAUDE.md
