MCPって何の話? 30秒で掴む全体像

MCP(Model Context Protocol)は、LLM(大規模言語モデル)とデータソース・外部ツールを標準化された方法で接続するためのオープンプロトコルだ。

2024年末にAnthropicが発表した。一言で言えば「AIエージェントのための共通の差し込み口」。記事内では「AIのためのUSB-C」という表現が使われており、これが一番わかりやすい。

「プロトコル」と聞くと難しそうだが、やっていることはシンプルだ。AIがGitHubを操作したい、データベースを読みたい、ファイルを開きたい——そういった外部連携を、毎回アプリごとにゼロから実装しなくて済むようにする仕組み、それがMCPだ。


なぜ今これが重要なのか

2026年現在、OpenAI・Google・Microsoftの3社がMCPの採用を表明している。Anthropicが出したプロトコルに競合他社が乗っかった——これは珍しい動きで、それだけ「標準化への需要」が業界全体で切実だったことを示している。

従来はこんな状況だった。

LLM → [独自API実装A] → ファイルシステム
LLM → [独自API実装B] → データベース
LLM → [独自API実装C] → GitHub

アプリが増えるたびに独自実装が増え、保守コストが膨らむ。どこかの実装が変われば連鎖的に壊れる。AIエージェント開発の現場で「配線工事」に時間を取られてきた人間には刺さる構図だ。

MCPはこれを次の形に変える。

LLM(ホスト) ←→ MCPクライアント ←→ MCPサーバー ←→ データソース
                    (標準プロトコル)

一度MCPサーバーを作れば、それに対応したどのホストアプリからでも使える。Claude Desktopで動いたMCPサーバーは、CursorでもCopilotでも再利用できる。これが「USB-C」の比喩が指している本質だ。


MCPの構造を整理する

MCPには3つの登場人物がいる。

概念 役割
MCPホスト LLMを実行するアプリ(Claude Desktop、Cursor等)
MCPクライアント ホスト内でサーバーと通信するコンポーネント
MCPサーバー データソースへのアクセスを提供する軽量プログラム

そしてMCPサーバーが提供できる機能は、3種類のプリミティブに整理されている。

① Tools(ツール)

LLMが呼び出せる関数。副作用がある(データ変更・API呼び出しなど)。たとえばGitHubにIssueを作成する処理がこれにあたる。

② Resources(リソース)

LLMが読み取るデータ。副作用なし。ファイルの内容、DBのレコード、APIレスポンスなど「参照するだけ」のもの。

③ Prompts(プロンプト)

再利用可能なプロンプトテンプレート。コードレビューのプロンプトをサーバー側で管理しておき、複数のクライアントから呼び出す、といった使い方ができる。

この3分類はよく考えられている。「副作用あり/なし」で責務が明確に分かれており、LLMが何をしようとしているかをシステム側が把握しやすい設計だ。


AIおじさんの見方:「標準化」が本当に意味すること

USB-Cの比喩は巧みだが、もう少し掘り下げたい。

USB-Cが本当に価値を発揮したのは、「規格が普及した後」だ。対応デバイスが増えて初めて「どこでも使える」になった。MCPも同じで、OpenAI・Google・Microsoftが乗った今、対応サーバーを作ることの価値が急激に上がっている

裏返して言うと、MCPサーバーを持つサービスはあらゆるAIエージェントから呼び出し可能になる。SaaS企業にとっては「MCPサーバーを公式提供しているか否か」がAIエージェント時代の接続性を左右する、とも言える。

もう一つ気になる点がある。プロトコルの標準化は、ツールの「コモディティ化」を加速させる。差し込み口が共通になれば、どのMCPサーバーを使うかは「機能と品質」で選ばれる。ここで競争の軸がずれる。標準化は開発者にとって福音だが、特定のベンダーロックインで食べていた企業には圧力になる。


実務的な示唆:開発者は何をすべきか

実装のハードルは低い。Python SDKはpip install mcpの一行で入る。

シンプルなMCPサーバーの骨格はこんな形だ。

from mcp.server import Server
from mcp.server.stdio import stdio_server
import mcp.types as types

app = Server("my-mcp-server")

@app.list_tools()
async def list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="get_weather",
            description="指定した都市の天気を取得する",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "都市名"}
                },
                "required": ["city"]
            }
        )
    ]

@app.list_tools()でツールを定義し、@app.call_tool()で実際の処理を書く。構造は単純で、既存のAPIラッパーをMCPサーバーとして包み直すだけでも実用になる。

通信方式(トランスポート)はstdio・SSE・HTTPの3種類。ローカル開発はstdioで十分で、リモートサービスに公開するならHTTPベースを選ぶ形になる。

実務上の論点は「どのMCPサーバーを選ぶか」の目利きだ。エコシステムが広がるほど玉石混交になる。セキュリティ面(外部サーバーにどこまでアクセスを渡すか)の設計判断は、導入前に一度きちんと考えておく必要がある。ツールが副作用を持つ以上、誤った呼び出しの影響範囲は想定しておきたい。


まとめ

MCPは「便利なライブラリ」ではなく、AIエージェント開発のインフラ層に位置するものだ。OpenAI・Google・Microsoftが採用したことで、これは特定企業の仕様ではなく業界の共通語になりつつある。

今すぐ全部理解しなくていい。ただ「AIとツールを繋ぐ配線の話をするとき、これが共通言語になっている」という事実は頭に入れておいて損はない。自分がAIエージェントを触る立場なら、MCPサーバーを一つ動かしてみるのが最短の理解だと思う。


元記事:MCP(Model Context Protocol)完全入門 2026