13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code で Context7、Serena、Cipher を同時使用する際の注意事項

Last updated at Posted at 2025-08-07

結論を先に ... 同時使用は可能だが注意が必要

Context7、Serena、Cipherの3つのMCPツールを同時使用することは技術的に可能ですが、以下の点に注意が必要です:

  1. 条件付き対応:Context7をHTTPモードで起動する場合のみ、Cipherのポートを3001に変更(stdioモードではポート競合なし)
  2. 推奨メモリ:最低16GB、推奨32GB(実測で使用言語と規模により1-4GB)
  3. パフォーマンス:起動時間3-4倍、レスポンス遅延1-2秒
  4. 安定性:定期的な再起動とモニタリングが必要

実用的な推奨事項

  • 2つのツールの組み合わせが最も安定
  • 作業内容に応じてツールを切り替えて使用
  • フル機能同時使用は32GB以上のメモリがある場合のみ

ポート競合の注意事項(HTTPモード使用時のみ)

Context7をHTTPモード(--transport http)で起動する場合、Cipherとポート3000が競合します。

# HTTPモードの場合のみ競合
Context7 (HTTPモード): http://localhost:3000/health
Cipher:                 http://localhost:3000/health  ← 競合!

# stdioモード(デフォルト)ではポート不使用
Context7 (stdioモード): ポート不使用

stdioモード(デフォルト)を使用する場合はポート競合は発生しません。

はじめに

前回の記事 Claude CodeでMCPツール(Context7、Serena、Cipher)を活用してAIコーディングを次のレベルへ では、各ツールの個別のインストールと使用方法をご紹介しました。

本記事は続編として、これら3つのツールを同時使用する際の重要な注意事項と解決策をまとめたものです。実際の検証結果から、同時使用は技術的に可能ですが、いくつかの重大な問題があることが判明しました。

1. リソース使用量の実態

メモリ消費量の累積

3つのツールを同時に使用した場合、メモリ使用量はプロジェクト規模と使用言語により大きく変動します。

ツール 基本メモリ 追加プロセス 合計(目安)
Context7 50-100MB なし 50-100MB
Serena 200-400MB 言語サーバー(言語ごと) 350MB-2GB※
Cipher 150-300MB 埋め込み処理 300-600MB
合計 400-800MB 各種プロセス 700MB-2.7GB

※Serenaのメモリ使用量は使用言語数により大きく変動:

  • TypeScript単体:約350MB
  • 複数言語(Python、Rust、Go等)同時使用:1-2GB
  • プロジェクト規模により±70%の変動あり

CPU負荷の現実

実測データによると、3つのツールを同時起動した場合:

  • 起動時間:単体の3-4倍(約30-45秒)
  • アイドル時CPU使用率:10-15%
  • ピーク時CPU使用率:60-80%

2. 必須の設定変更

2.1 ポート競合の解決(最重要)

Cipherのポートを変更する必要があります。

環境変数での設定:

# ~/.bashrc または ~/.zshrc に追加
export CIPHER_PORT=3001

claude_config.jsonでの設定:

{
  "mcpServers": {
    "cipher": {
      "command": "cipher",
      "args": ["--mode", "mcp", "--port", "3001"],
      "env": {
        "CIPHER_PORT": "3001"
      }
    }
  }
}

2.2 メモリ制限の設定

各ツールのメモリ使用量を制限する際は、ツールごとに異なる方法を使用します。

Context7(Node.jsベース):

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["--yes", "@upstash/context7-mcp"],
      "env": {
        "NODE_OPTIONS": "--max-old-space-size=512"
      }
    }
  }
}

Serena(Pythonベース):

{
  "mcpServers": {
    "serena": {
      "command": "uv",
      "args": ["run", "serena-mcp-server", "--port", "32123"],
      "cwd": "${workspaceFolder}/serena",
      "env": {
        "SERENA_MAX_MEM": "1024"  // MiB単位(v0.8以降)
      }
    }
  }
}

Cipher(Rustベース):

{
  "mcpServers": {
    "cipher": {
      "command": "cipher",
      "args": ["--mode", "mcp", "--port", "3001", "--max-mem", "512"],
      "env": {
        "CIPHER_PORT": "3001"
      }
    }
  }
}

注意NODE_OPTIONSはNode.jsプロセスにのみ有効です。SerenaとCipherには各ツール固有の設定を使用してください。

2.3 タイムアウト値の延長

デフォルトの5秒では不足するため、30秒に延長します。

CLIでの設定:

claude mcp add context7 --timeout 30000 -- npx --yes @upstash/context7-mcp

環境変数での設定:

export MCP_TIMEOUT=30000
claude mcp start all

3. システムリソースの最適化

ファイルハンドル制限の引き上げ

複数のツールが大量のファイルを監視するため、システムの制限を引き上げます。

macOS/Linux:

# 一時的な変更
ulimit -n 4096

# 永続的な変更(/etc/security/limits.conf)
* soft nofile 4096
* hard nofile 8192

Windows:
ファイルハンドル数の制限は以下のレジストリで調整:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
→ Windows値内のSharedSectionパラメータを調整

メモリスワップの調整

Linux/WSL環境:

# サーバー環境やWSLでは低い値が適切
sudo sysctl vm.swappiness=10

デスクトップLinux環境:

# デスクトップ用途では30-60が一般的(OOM Killer回避)
sudo sysctl vm.swappiness=30

macOS:

# macOSの場合
sudo nvram boot-args="vm_compressor=2"

注意:デスクトップ環境でswappinessを極端に低くすると、メモリ不足時にOOM Killerが発動しやすくなります。

4. 推奨構成パターン

パターン1:軽量構成(用途別の一例)

メモリ8GB環境向けの構成例です。

ドキュメント参照重視の場合:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["--yes", "@upstash/context7-mcp"]
    },
    "serena": {
      "command": "uv",
      "args": ["run", "serena-mcp-server", "--port", "32123"],
      "env": {
        "SERENA_MAX_MEM": "512"
      }
    }
  }
}

コンテキスト保持重視の場合:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["--yes", "@upstash/context7-mcp"]
    },
    "cipher": {
      "command": "cipher",
      "args": ["--mode", "mcp", "--port", "3001", "--max-mem", "512"],
      "env": {
        "CIPHER_PORT": "3001"
      }
    }
  }
}

メリット

  • メモリ使用量:1GB以下
  • 起動時間:10秒程度
  • 安定性:高

デメリット

  • 3つすべての機能は使えない

パターン2:バランス構成

メモリ16GB環境向けのバランス型構成です。

{
  "mcpServers": {
    "serena": {
      "command": "uv",
      "args": ["run", "serena-mcp-server", "--port", "32123"],
      "env": {
        "SERENA_MAX_WORKERS": "2"
      }
    },
    "cipher": {
      "command": "cipher",
      "args": ["--mode", "mcp", "--port", "3001", "--embedder", "local"],
      "env": {
        "CIPHER_PORT": "3001"
      }
    }
  }
}

メリット

  • 機能のバランスが良い
  • メモリ使用量:2GB程度

デメリット

  • Context7の最新ドキュメント機能が使えない

パターン3:フル機能構成(要注意)

メモリ32GB以上の環境でのみ推奨します。

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["--yes", "@upstash/context7-mcp"],
      "env": {
        "NODE_OPTIONS": "--max-old-space-size=512"
      }
    },
    "serena": {
      "command": "uv",
      "args": ["run", "serena-mcp-server", "--port", "32123"],
      "env": {
        "SERENA_MAX_MEM": "2048",
        "SERENA_MAX_WORKERS": "4"
      }
    },
    "cipher": {
      "command": "cipher",
      "args": ["--mode", "mcp", "--port", "3001", "--max-mem", "1024"],
      "env": {
        "CIPHER_PORT": "3001"
      }
    }
  }
}

5. トラブルシューティング

よくある問題と解決策

問題1:Server transport closure エラー

原因:ポート競合またはメモリ不足

解決策

# ポート使用状況の確認
lsof -i :3000,3001,32123  # macOS/Linux
netstat -ano | findstr "3000 3001 32123"  # Windows

# プロセスの強制終了
pkill -f "context7|serena|cipher"

問題2:Tool name collision

原因:複数のサーバーが同じツール名を提供

解決策
各サーバーの設定でプレフィックスを使用

{
  "serena": {
    "args": ["--tool-prefix", "serena_"]  // v0.8以降
  }
}

Cipher Aggregatorモードでの競合解決:

export AGGREGATOR_CONFLICT_RESOLUTION="prefix"
cipher --mode aggregator

問題3:メモリ不足によるクラッシュ

原因:システムメモリの枯渇

解決策

# メモリ使用状況の監視
watch -n 1 'ps aux | grep -E "(context7|serena|cipher)" | awk "{sum+=\$6} END {print sum/1024 \" MB\"}"'

# 不要なサーバーの停止
claude mcp stop serena  # 一時的に停止

診断用コマンドセット

問題が発生した場合の診断手順:

#!/bin/bash
# diagnostic.sh

echo "=== MCP診断スクリプト ==="

# 1. プロセス確認
echo "実行中のMCPプロセス:"
ps aux | grep -E "(context7|serena|cipher|mcp)" | grep -v grep

# 2. ポート使用状況
echo -e "\nポート使用状況:"
# macOS/Linux(lsofは個別ポート指定が必要)
lsof -i :3000 -i :3001 -i :32123 -i :24282 2>/dev/null || \
netstat -tulpn 2>/dev/null | grep -E "(3000|3001|32123|24282)"

# 3. メモリ使用量(ポータブルな方法)
echo -e "\nメモリ使用量:"
ps -o rss= -p $(pgrep -d, -f "context7|serena|cipher" 2>/dev/null) 2>/dev/null | \
awk '{sum+=$1} END {print "合計: " sum/1024 " MB"}'

# 4. ログファイル確認
echo -e "\n最新のエラーログ:"
if [ -d "$HOME/Library/Logs/Claude" ]; then
    tail -n 10 $HOME/Library/Logs/Claude/mcp*.log 2>/dev/null | grep -i error
elif [ -d "$HOME/.claude/logs" ]; then
    tail -n 10 $HOME/.claude/logs/*.log 2>/dev/null | grep -i error
fi

6. パフォーマンス最適化のコツ

段階的な起動

すべてのサーバーを同時に起動せず、順番に起動することで負荷を分散:

# 起動スクリプト
claude mcp start context7
sleep 5
claude mcp start cipher
sleep 5
claude mcp start serena

選択的有効化

作業内容に応じて必要なサーバーのみを有効化:

# ドキュメント作成時
claude mcp start context7

# コードレビュー時
claude mcp start serena

# 長期プロジェクト作業時
claude mcp start cipher

定期的な再起動

メモリリークを防ぐため、定期的に再起動:

# 日次再起動スクリプト(cron用)
0 0 * * * claude mcp restart all

7. 実運用での推奨事項

推奨システム要件

構成 最小RAM 推奨RAM CPU ストレージ
軽量(2ツール) 8GB 16GB 4コア SSD 20GB
フル(3ツール) 16GB 32GB 8コア SSD 50GB

使用パターン別の最適構成

作業内容 推奨ツール組み合わせ 理由
API開発 Context7 + Cipher ドキュメント参照と記憶
リファクタリング Serena + Cipher コード解析と履歴管理
新規開発 Context7 + Serena 最新情報とコード補完
保守作業 Serena単体 リソース節約

参考リンク

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?