Claude CodeのMCP自動同期問題とSkillを優先させる解決策
はじめに
Claude Codeで自作Skillを作って使っていたら、ある日突然動かなくなった...そんな経験ありませんか?
私も最近、Markdown形式のメモアプリをClaude Code Skillとして実装して便利に使っていたのですが、突然MCPサーバーが優先されるようになり、意図しない動作に遭遇しました。
本記事では、この問題の原因と「今のところ」使える解決策を、実体験ベースで共有します。
想定読者
- Claude Codeで自作Skillを運用している方
- Web版claude.aiでMCPコネクターを設定している方
- 「あれ?急にSkillが動かなくなった」と困っている方
前提知識
- Claude Codeの基本的な使い方
- Skillの概念
- MCPの概念
何が起きたのか
自作Markdownメモアプリの背景
生成AI時代が来ると確信していたので、2024年初頭からMarkdown形式でメモを管理できるアプリ(仮に「mdmemo」と呼びます)を自作していました。
なぜMarkdownなのか
- 生成AIが一番理解しやすい形式
- プレーンテキストなので、ツールに依存しない
- GitHubとも相性抜群
- 構造化された情報管理ができる
このmdmemoをClaude Code Skillとして実装して、日常的に使っていたんです。
実装していた機能
- Markdown形式でのメモ作成・編集
- カテゴリ別管理
- 全文検索
- Claude Codeからのシームレスな読み書き
活用シーン
自分: 「今の会話の内容をmdmemoに保存して」
Claude: (Skillを使って)保存完了!
こんな感じで、会話の流れで重要な情報をサクッとメモできて、めちゃくちゃ便利でした。
ある日突然...
2026年2月上旬のこと。いつも通りClaude Codeを起動して、こう指示しました。
自分: 「今日の作業メモをmdmemoに保存して」
Claude: (あれ?MCPツールを使ってる...?)
問題発生
- 自作SkillではなくMCPサーバーが優先されている
- SkillとMCPで同じ名前(mdmemo)が競合
- ワークフローが完全に壊れた
「え、何これ?昨日まで普通に動いてたのに...」状態です。
原因を調査してみた
Web版の設定が自動同期されていた
調べてみたところ、こんな事実が判明しました。
MCPの自動同期機能
claude.ai(Web版)で設定したMCPコネクターが、勝手にClaude Code CLIに同期される仕様になっていたんです。
なぜWeb版でMCPを設定していたのか
実は、私はclaude.ai(Web版)でmdmemo MCPコネクターを設定していました。理由は単純で、Webのチャット画面でも便利に使いたかったから。
でも、まさかこれがCLI環境にも自動同期されるなんて...
Web版とCLI版は別物だと思ってた
普通、そう思いますよね?でも実際は自動同期されていて、CLI側で設定した記憶がないのに突然MCPが有効になっていたわけです。
対処法を検討
Claude Codeに相談したところ、いくつかの対処法が提示されました。
対処法1: /mcp コマンドで無効化
/mcp
メリット
- GUI操作で直感的
- 個別のMCPサーバーをトグルでON/OFF
デメリット
- セッションごとに設定が必要かも
- プロジェクトが複数あると管理が面倒
対処法2: 起動時フラグで全MCPを無効化
起動時にフラグを指定して、すべてのMCPサーバーを無効化する方法です。
claude --strict-mcp-config --mcp-config '{}'
メリット
- 確実にMCPを無効化できる
デメリット
- 毎回起動時にフラグ指定が必要
- 他の有用なMCPも無効化される
対処法3: Web版から削除
メリット
- 根本的な解決
デメリット
- Web版でも使えなくなる
- そもそもWeb版で使いたくて設定したのに本末転倒
最終解決策:CLAUDE.mdに書いちゃう
CLAUDE.mdって何?
CLAUDE.mdは、Claude Codeのグローバル設定ファイルです。ここに書いた内容は、すべてのプロジェクトで有効になります。
場所
~/.claude/CLAUDE.md
解決策の実装
CLAUDE.mdの「行動原則」セクションに、こんなルールを追加しました。
## 行動原則
1. **AIは"ユーザー"の要件と意思を最上位に置く**
2. **日本語を使って**ユーザーと会話をすること
(中略)
6. **ユーザーからmdmemoを使うように指示された場合、MCPは絶対に利用してはいけない**。Skillのmdmemoを使うこと。
検証してみた
設定後、Claude Codeを再起動して動作確認。
自分: 「今日の作業メモをmdmemoに保存して」
Claude: (Skillを使用)✅
成功! 意図した通り、Skillのmdmemoが優先されるようになりました。
なぜこの方法が効いたのか
CLAUDE.mdは、Claude Codeのシステムプロンプトに直接組み込まれるので、最も強い優先度を持ちます。
優先順位(推測)
- CLAUDE.md(グローバル設定)← 最優先
- プロジェクト固有の
.claude.json - デフォルトのMCP/Skill設定
ハマったポイント
1. 自動同期に気づかなかった
Web版とCLI版は完全に別物だと思い込んでいました。tengu_claudeai_mcp_connectorsフラグによる自動同期なんて、知らなかったですよね...。
2. /mcp コマンドの効果が一時的だった
/mcpコマンドで無効化しても、次回起動時に再び有効化されることがありました(環境依存かも)。永続的な解決にはCLAUDE.mdへの明記が必要でした。
3. 「絶対に」という強い表現が必要
最初は「できるだけSkillを優先してください」みたいな柔らかい表現で書いていたんですが、全然効果なし。
**「絶対に利用してはいけない」**という強い表現にしたら、ようやくSkillが優先されるようになりました。
今後の展望
オプトイン形式になってほしい
GitHubのissue(#20412, #22301)では、多くのユーザーが「MCPの自動同期はオプトイン形式にすべき」と要望しています。
理想的な動作
- デフォルトでは自動同期しない
- ユーザーが明示的に有効化した場合のみ同期
- プロジェクト単位で設定できる
近い将来、この要望が実現されれば、今回のようなCLAUDE.mdへの記述も不要になるはずです。
MCPとSkillの使い分け
それまでの間は、MCPとSkillを適切に使い分けることで、より強力な開発環境を構築できます。
使い分けの例
- Skill: プロジェクト固有のワークフロー、独自の処理ロジック
- MCP: 外部サービスとの標準的な連携
まとめ
Claude CodeのMCP自動同期問題と、その暫定的な解決策を紹介しました。
重要なポイント
- Web版claude.aiのMCP設定が自動的にCLI版に同期される(
tengu_claudeai_mcp_connectorsフラグ) - 複数の対処法があるが、それぞれ一長一短
- 今のところ最も確実なのはCLAUDE.mdに明記する方法
- 「絶対に〜しない」という強い表現が有効
CLAUDE.mdへの記述例(再掲)
6. ユーザーから〇〇を使うように指示された場合、**MCPは絶対に利用してはいけない**。Skillの〇〇を使うこと。
同じ問題で困っている方の参考になれば幸いです。
Discussion