コンテンツにスキップ

MCPの時代は終わった?――Skillsにコンパイル時代のツール統合設計

この記事の対象者

  • MCPとSkillsの違いを整理したいエンジニア
  • エージェント設計でトークン効率を改善したい実務者
  • 「MCPは時代遅れ」という言説の実態を知りたい方

この記事のポイント

  • 「MCPは時代遅れ」という言い回しが、実際には何を指しているのか
  • Skills(SKILL.mdベース)の考え方と、MCPとの違い
  • コンテキスト消費がどこで発生するのかの分解
  • 結局どちらを採用すべきかの判断基準

まず結論:「MCPが時代遅れ」ではなく、運用パターンが問題視されている

最初に言い切っておきます。

MCPというプロトコル自体が古いわけではありません。批判の対象になっているのは、「MCPサーバーを巨大なAPI辞書として公開し、LLMに探索させながら低レベル操作を繰り返させる」という運用パターンです。

つまり論点は「MCPを使うかどうか」ではなく、「どう使うか」です。

関連記事

MCPとSkillsの基本的な位置づけについては「MCP vs Agent Skills論争の本質を整理する」も参照してください。


用語の確認

本題に入る前に、この記事で使う用語を簡単に整理しておきます。

用語意味
MCP(Model Context Protocol)LLMが外部ツールを呼び出すための共通インターフェース
コンテキストLLMが一度に処理できる情報の範囲(会話履歴+指示+データ)
トークンLLMが扱うテキストの単位。日本語だと1文字≒1〜2トークン程度
Skills作業手順をパッケージ化してエージェントに渡す仕組み(Anthropicが提唱)

MCPの基本:LLMが外部ツールを呼び出す仕組み

MCPは、LLMが外部ツールを呼び出すときの「共通の作法」を整えるプロトコルです。

  1. クライアント(IDEやチャットUI)がMCPサーバーに接続
  2. サーバーが提供するツール(関数)をLLMが呼び出す
  3. 結果がLLMに返され、会話に反映される

ここまではシンプルです。問題になるのは次の部分です。

MCPの全体像を把握したい方へ

MCPの構造やユースケースの全体像は「MCP完全理解ダッシュボード」でまとめています。


「MCPでコンテキストが溶ける」とは何が起きているのか

「コンテキストが溶ける」という表現がよく使われますが、トークン消費には2種類あります。この区別が重要です。

探索トークン(ツール選択・手順探索)

LLMが「どのツールを使うか」「引数は何か」を探す過程で消費されるトークンです。

  • どのAPIを使えばいい?
  • 引数の形式は?
  • 失敗した、別の方法は?

この「やり方を探す会話」が積み上がると、コンテキストを圧迫します。

実データトークン(処理対象のデータ量)

実際に取得したデータ(Slackのログ、ドキュメントの内容など)が消費するトークンです。

これはMCPでもSkillsでも、データ量が多ければ必ず発生します

ポイント

「MCPは重い」と言われるとき、主に問題になっているのは探索トークンです。


Slack連携の例:MCPで何が起きがちか

具体例として「特定のSlackスレッドを集めて議事録化したい」というケースを考えます。

MCPサーバーがSlackの低レベルAPIを多数公開している場合、LLMは以下のような探索をしがちです。

  1. スレッドの特定方法を探す(検索?履歴?URL指定?)
  2. 候補から絞り込む方法を探す
  3. 取得APIで本文を抜く
  4. レート制限や権限エラーで失敗 → 別ルートを探索
  5. 取れたログを整形して議事録化

この「探索+試行錯誤」が探索トークンを押し上げます。


Skillsとは何か:作業単位のパッケージング

Skillsは、作業手順をあらかじめまとめてエージェントに渡す考え方です。

構成要素は以下のとおりです。

  • SKILL.md:手順・ルール・入力仕様を記述したファイル
  • スクリプト:定型処理を自動化するコード
  • 関連リソース:テンプレートや設定ファイル

Skillsのポイントは、LLMに見せる「探索対象」を狭めることです。

SlackのAPI全体を見せるのではなく、「議事録化」という作業の入口だけを渡す。これにより探索トークンが減ります。


Skillsは万能ではない

ただし、Skillsを入れれば探索がゼロになるわけではありません。

LLMは結局SKILL.mdを読んで判断します。SKILL.mdが曖昧だったり、想定外の入力が来たりすると、探索は発生します。

Skillsが効果を発揮するのは以下の条件が揃うときです。

  • 作業が定型化できる
  • 入力仕様が明確
  • 例外処理が限定的

なお、Anthropicの公式ガイドラインでは、SKILL.mdの本文を500行以下に抑えることが推奨されています。Skillsにもコンテキスト管理の制約はあります。


MCPとSkillsは併用できる

ここまで対比的に説明してきましたが、MCPとSkillsは二者択一ではありません。

Anthropicの公式見解では、MCPがLLMを外部サービスに接続し、Skillsがツールの効果的な使用方法を教えるという役割分担で、両方を組み合わせて使うことが想定されています。

たとえば、NotionのMCPサーバーで接続を確立しつつ、Notion用のSkillsでデータの扱い方をLLMに教える、という構成が可能です。


MCPが有意になる条件

では、MCPはどういう場面で有効なのか。トークン以外の要素が支配的になるケースです。

統制を一箇所に寄せたいとき

監査ログ、権限管理、レート制限などをサーバー側で一元管理できます。MCPアーキテクチャはセキュリティと制御されたアクセスを重視しており、組織がAIアシスタントの接続先を厳密に管理できる設計になっています。

複数のクライアントで同じ統合を共有したいとき

IDEエージェント、チャットUI、バッチ処理、他チームのボットが同じ接続・権限モデルを使えます。

探索自体に価値があるとき

「毎回問いの形が違う」「横断検索が目的」といったケースでは、Skillsに固定するとかえって柔軟性を失います。

PoC段階で変化が大きいとき

要件が固まっていない段階でSkillsを作り込むと、手戻りが大きくなります。


MCPの集約にはトレードオフがある

MCPサーバーに統合を集約すると統制点が1つになりますが、以下のリスクも伴います。

  • サーバー障害で全エージェントが影響を受ける
  • API更新が全クライアントに波及する
  • サーバー管理者がボトルネックになる

一方、Skills分散にも「スキルの散在・重複」「監査の困難さ」「属人化」といった課題があります。

集中と分散のトレードオフであり、どちらが正解というわけではありません。

実装パターンの詳細

MCPサーバーの具体的な実装パターンについては「MCP Server実装パターン」を参照してください。


判断基準:チェックリスト

Skills優先になりやすいケース

  • 同型の作業を週1回以上の頻度で回す
  • 仕様が安定している
  • 失敗コストが高く、再現性が必要
  • ローカルやCIで完結できる

MCP優先になりやすいケース

  • 問いの形が毎回違う(探索に価値がある)
  • 複数チーム・複数クライアントで共有したい
  • 監査・権限・秘匿を一箇所で統制したい
  • PoC段階で要件が流動的

まとめ

「MCPは時代遅れ」という言い回しの正体は、プロトコルへの批判ではなく、運用パターンへの批判です。

  • MCPは「繋ぐ・共有する・統制する」方向に強い
  • Skillsは「繰り返しを固定化し、探索を減らす」方向に強い
  • 両者は併用可能であり、目的に応じて組み合わせる

どちらを採用するかは、トークン効率だけでなく、統制・共有・変化への耐性といった要素を含めて判断する必要があります。


補足:Code Execution with MCPについて

この記事では触れませんでしたが、Anthropicは2025年にMCPとコード実行を組み合わせる新しいパターンを提唱しています。

これは、エージェントがMCPサーバーをコードAPIとして扱い、ツールをオンデマンドで読み込み、データを実行環境内で処理してからモデルに返す方式です。公式の検証では、15万トークンから2,000トークンへの削減(98.7%減)を実現した例も報告されています。

多数のMCPサーバー(10以上)を扱う複雑なワークフローや、大量の中間データを処理するケースでは、この方式が有効です。

詳細はAnthropicのエンジニアリングブログ「Code Execution with MCP」を参照してください。