MCP(Model Context Protocol)は、Anthropicが2024年11月にオープンソース(MITライセンス)として公開したプロトコル規格だ。Claudeだけでなく、あらゆるAIが採用できるよう設計されている。


MCPとは何か

一言でいうと、**「AIと外部ツールをつなぐ共通のインターフェース規格」**だ。

ChatGPT・Gemini・VS Code・Cursorなど、主要なAIアプリが次々と採用しており、「AIのUSB-C」とも呼ばれるような標準化の役割を担っている。


なぜ必要だったか(N×M問題)

MCPが登場する前、AIに外部ツールを使わせるには「そのAI専用 × そのツール専用」の連携コードを一から書く必要があった。

【MCP以前】
Claude    × Slack    = 専用実装
Claude    × GitHub   = 専用実装
ChatGPT   × Slack    = 専用実装
ChatGPT   × GitHub   = 専用実装
...(AIの数 × ツールの数 = N×M通りの実装)

MCPが共通規格を定めたことで、「MCPサーバー」を一度作ればどのAIからでも使えるようになった。実装コストが N×M → N+M に削減される。

【MCP以後】
Claude ─┐
ChatGPT ─┤── MCPプロトコル ──→ Slack MCPサーバー
Gemini  ─┘                  → GitHub MCPサーバー

技術的な仕組み

通信フォーマットとして JSON-RPC 2.0 を採用している。MCPサーバーはAIに対して主に3種類のものを提供する。

種別 役割
Tools 関数の実行 ファイル作成、APIコール、DB操作
Resources ファイルやデータの読み取り ドキュメント参照、ログ確認
Prompts 定型プロンプトのテンプレート よく使う指示のパターン化

AIがMCPサーバーを使う流れはシンプルだ。

1. AI → MCPサーバー:「何ができるか教えて」(capabilities問い合わせ)
2. MCPサーバー → AI:「こんなToolsとResourcesがあります」
3. AI → MCPサーバー:「じゃあこのToolを呼んで」(tool_call)
4. MCPサーバー → AI:「結果はこれです」

JSON-RPCのリクエスト例はこんな形になる。

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": {
      "path": "/tmp/example.txt"
    }
  },
  "id": 1
}

誰でもサーバーを作れる

MCPサーバーは仕様さえ満たせば誰でも作って公開できる。Python・TypeScript向けの公式SDKが提供されており、最低限のコードでサーバーを立てられる。

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

server = Server("my-tool-server")

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

@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[types.TextContent]:
    if name == "get_weather":
        city = arguments["city"]
        # 実際には外部APIを呼ぶ
        return [types.TextContent(type="text", text=f"{city}の天気: 晴れ")]

async def main():
    async with stdio_server() as streams:
        await server.run(*streams, server.create_initialization_options())

社内の独自ツールをMCPサーバー化してClaude Codeなどから使う、といったことも現実的に行われている。


一言でまとめると

「N×M問題を解消した、AIとツールの共通プラグイン規格」 がMCPだ。

MCPサーバーを一度作れば、Claude・ChatGPT・Geminiなど対応AIすべてから使える。JSON-RPC 2.0をベースにした設計はシンプルで、公式SDKを使えば数十行で独自サーバーを実装できる。AIエージェントが増えるほど、MCPの標準化メリットは大きくなる。


参考文献・リンク

https://modelcontextprotocol.io/introduction

https://github.com/modelcontextprotocol/python-sdk

https://www.anthropic.com/news/model-context-protocol