1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NotebookLM MCPを繋いだら、プロセスが120個に増殖してMacが死んだ

1
Posted at

ファンが止まらなかった。

Claude CodeにNotebookLM MCPを繋いで数日。最初は快適だった。「NotebookLMにソースを追加して」「要約して」がターミナルから一発でできる。ブラウザを開かなくていい。最高だと思った。

3日後、Macのファンが全力で回り始めた。Activity Monitorを開いたら、NotebookLM MCPのプロセスが120個に増殖していた。CPU使用率2800%。スワップ8.5GB。マシンは事実上フリーズしていた。

これは notebooklm-mcp(npm、v1.2.1) の話だ。npx notebooklm-mcpで起動するやつ。

NotebookLM関連のMCPパッケージはnpm・PyPI合わせて6つ以上あって名前が紛らわしい。代表的なものだけでも:

パッケージ 言語 備考
notebooklm-mcp npm 今回の犯人
notebooklm-mcp-server npm 別パッケージ。v3系。未検証
notebooklm-mcp PyPI Python版。FastMCP v2ベース。未検証
notebooklm-py PyPI MCPサーバーではなくCLI/APIツール。別物

この記事で書いているのはnpmのnotebooklm-mcpだけ。他のパッケージで同じ問題が起きるかは未検証なので、混同しないでほしい。

何が起きていたのか

Claude CodeのMCPサーバーは、セッション開始時に起動する。問題はセッション終了時に確実に終了しないケースがあること。

NotebookLM MCPの場合、内部でヘッドレスブラウザ(Puppeteer)を使っている。MCPプロセス自体が終了しても、子プロセスのブラウザが残る。さらに、Claude Codeのセッションを開くたびに新しいMCPプロセスが立ち上がる。

つまり:

セッション開始 → MCPプロセス起動 → ブラウザ起動
セッション終了 → MCPプロセス終了(不完全)→ ブラウザ残留
次のセッション → 新MCPプロセス起動 → 新ブラウザ起動
さらに次 → さらに新プロセス → さらにブラウザ……

これが数日繰り返されて、120プロセスになった。

発見の経緯

最初はzshの起動が遅いのかと思った。直前に.zshrcをいじっていたからだ。でもtime zsh -i -c exitは0.04秒。問題ない。

次にClaude Code自体を疑った。でも再起動しても重い。

Activity Monitorを開いてCPU順にソートした瞬間、画面が真っ赤だった。nodeプロセスが大量に並んでいる。全部NotebookLM MCP関連。

ps aux | grep -i notebooklm | grep -v grep | wc -l

127

殺しても死なない

最初にやったのはkill

ps aux | grep -i notebooklm | grep -v grep | awk '{print $2}' | xargs kill

一時的にプロセスは消える。CPUも下がる。よし、解決——と思ったら、Claude Codeで次のプロンプトを送った瞬間にまた増え始めた。

MCPの設定が残っている限り、セッション開始のたびに再スポーンする。killは対症療法にすぎない。

正しい対処法

1. MCPの設定を外す

claude mcp remove notebooklm

これが根本対策。設定から外せば、次のセッションでプロセスは起動しない。

「でも使いたいんだけど」——わかる。自分もそうだった。でもプロセスリークを起こすMCPは、修正されるまで外しておくのが正解だ。使いたいときだけclaude mcp addして、終わったらclaude mcp removeする運用もある。面倒だが、Macが死ぬよりマシだ。

2. 残留プロセスを全部殺す

設定を外した後、残っているプロセスを掃除する。

# NotebookLM関連のプロセスを確認
ps aux | grep -i notebooklm | grep -v grep

# 確認してから一括終了
ps aux | grep -i notebooklm | grep -v grep | awk '{print $2}' | xargs kill -9

# Puppeteer(ヘッドレスChrome)も残っている可能性がある
ps aux | grep -i "chromium\|chrome.*headless" | grep -v grep

3. 再発防止:MCPプロセスの定期チェック

自分はこのスクリプトを使っている。

#!/bin/bash
# mcp-check.sh — MCPプロセスの増殖チェック

MCP_COUNT=$(ps aux | grep -i mcp | grep -v grep | wc -l | tr -d ' ')

if [ "$MCP_COUNT" -gt 10 ]; then
    echo "⚠️ MCPプロセスが${MCP_COUNT}個検出されました"
    echo "以下のコマンドで確認してください:"
    echo "  ps aux | grep -i mcp | grep -v grep"
    echo ""
    echo "不要なMCPを外すには:"
    echo "  claude mcp remove [名前]"
fi

10個を超えたら警告。日常的に5個以上あるなら、使っていないMCPが設定に残っている可能性が高い。

NotebookLM MCP以外も危ない

この問題はNotebookLM MCPに限った話ではない。ヘッドレスブラウザを内部で使うMCPサーバーは、同じリスクを抱えている。

具体的に注意すべき特徴:

  • Puppeteer / Playwright を依存に持っている
  • npx経由で起動するタイプ(キャッシュの問題もある)
  • 認証が必要なWebサービスに接続する(セッション維持のためにプロセスが残りやすい)

MCPを新しく繋ぐときは、数時間後にActivity Monitorでプロセス数を確認する癖をつけた方がいい。

「繋いですげー」の裏側

MCPは便利だ。自分もClaude Codeに10個以上繋いでいる。ChatworkもGmailもGoogle Calendarも、MCPで繋いでターミナルから操作できるのは本当に楽だ。

でも「MCPを10個繋いだらブラウザを開かなくなった」という話と「MCPのプロセスが120個に増殖してMacが死んだ」という話は、同じコインの裏表だ。

MCPサーバーは結局、裏でプロセスが動いている。それが正しくクリーンアップされるかは、各MCPサーバーの実装に依存する。公式のMCPサーバー(GitHubやファイルシステム系)は概ね安全だが、コミュニティ製のMCPサーバーは自分で確認するしかない。

導入の「すげー」は3分で味わえる。でもそのプロセスが裏で何をしているか、終了時にちゃんと死んでくれるかは、数日使ってみないとわからない。

確認コマンドまとめ

# 現在のMCPプロセス数
ps aux | grep -i mcp | grep -v grep | wc -l

# プロセス一覧(CPU順)
ps aux | grep -i mcp | grep -v grep | sort -k3 -rn

# Claude Codeに登録されているMCP一覧
claude mcp list

# 不要なMCPを外す
claude mcp remove [名前]

# nodeプロセスの確認(MCPはnodeで動くものが多い)
ps aux | grep node | grep -v grep | wc -l

まとめ

MCPは便利だが、繋ぎっぱなしにはリスクがある

  • 使っていないMCPはclaude mcp removeで外す
  • Activity Monitorを時々見る
  • ファンが回り始めたら、まずMCPを疑う
  • killだけでは解決しない。設定を外すのが根本対策

120プロセスの地獄を経験して学んだ。MCPを「信用する」前に、プロセスを「監視する」方が先だ。


MCPのプロセス増殖、経験した人いますか? どのMCPサーバーで起きたか、コメントで教えてもらえると助かる。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?