Introduction to MCP ってどんなコース?
「Introduction to MCP(Model Context Protocol)」は、Anthropic Academyが提供する開発者向けの中級コースです。AIモデルと外部のツールやデータソースを接続するための新しい標準規格「MCP」について、概念の理解からハンズオンでの実装まで、約2時間で一気に学べます。
MCPは一言で言うと、「AIモデルが外部の世界と対話するための共通言語」です。ファイルシステムへのアクセス、データベースへの問い合わせ、GitHub操作、Slack連携 ―― これまでAIモデルごとに個別の実装が必要だったツール連携を、MCPという1つの標準プロトコルに統一する。これがMCPの目指すところです。
このコースは全6レクチャーで構成されており、MCPの設計思想から始まり、アーキテクチャの理解、そして実際にMCPサーバーを作ってClaude DesktopやClaude Codeに接続するところまでを体験できます。
Introduction to MCP 基本情報
URL — anthropic.skilljar.com
レベル — 中級(基本的なプログラミング知識とAPIの理解が前提)
所要時間 — 約2時間
構成 — 6レクチャー + 最終アセスメント
修了証 — あり(最終アセスメント合格後)
前提知識 — プログラミングの基礎、APIの基本的な概念
費用 — 完全無料
MCP……名前は聞いたことあるけど「プロトコル」って言われるとちょっと身構えちゃうな。でもAIが外部ツールと繋がれるようになるってことだよね? なんかすごそう!
「すごそう」ではなく「すごい」です。MCPは2024年11月にAnthropicが公開したオープンスタンダードで、AIモデルが外部データやツールにアクセスするための統一規格です。Anthropicだけでなく、OpenAIやGoogle DeepMindなど主要なAI企業もサポートを表明しており、業界標準になりつつあります。
えっ、Anthropicだけじゃなくて他のAI企業も使ってるの!? じゃあMCPを覚えたら、Claude以外のAIでも使えるってこと?
その通りです。MCPはオープンな標準規格なので、一度MCPサーバーを作れば、MCPに対応したあらゆるAIクライアントから利用できます。ベンダーロックインを避けられるのが大きな利点です。
MCPが生まれた背景 ― 「N x M問題」を解決する
MCPがなぜ必要なのかを理解するには、MCPが登場する前の世界を見る必要があります。
従来、AIモデルと外部ツールを連携させるには、個別のインテグレーション(統合)を1つ1つ作る必要がありました。例えばClaudeでGitHubにアクセスしたければ「Claude用のGitHub連携」を、ChatGPTでGitHubにアクセスしたければ「ChatGPT用のGitHub連携」を、それぞれ別個に開発しなければなりませんでした。
これは「N x M問題」と呼ばれます。N個のAIモデル(Claude、ChatGPT、Geminiなど)と M個のツール(GitHub、Slack、データベースなど)があったとき、必要な連携の数は N x M 個になる。AIモデルの数とツールの数が増えるほど、組み合わせが爆発的に増えていきます。
MCPはこの問題を、「間に共通のプロトコルを挟む」ことで解決します。すべてのAIモデルがMCPクライアントとして同じ規格で通信し、すべてのツールがMCPサーバーとして同じ規格でサービスを提供する。こうすれば必要な実装は N + M 個で済みます。
N x M が N + M になる……。えーっと、例えばAIが3つでツールが5つだと、3 x 5 = 15個の連携を作ってたのが、3 + 5 = 8個で済むってこと?
正確です。そしてAIが10個、ツールが20個に増えた場合、N x M = 200個が N + M = 30個になります。規模が大きくなるほど効果が劇的に増します。これが「共通規格」の力です。
N x M 問題の具体例
MCP以前 — Claude用GitHub連携、Claude用Slack連携、ChatGPT用GitHub連携、ChatGPT用Slack連携……AIモデルごと x ツールごとに個別実装が必要
MCP以後 — GitHub MCPサーバーを1つ作れば、MCPに対応した全AIクライアントから利用可能。AIモデル側もMCPクライアントを1つ実装するだけ
開発者のメリット — 一度書いたMCPサーバーがどのAIからも使える。メンテナンスも1箇所だけ
MCPを「USB」に例えて理解する
コースの中で最もわかりやすいアナロジーとして紹介されるのが、「MCPはAIにとってのUSBである」という比喩です。
USB(Universal Serial Bus)が登場する前の世界を思い出してください(覚えていない人は想像してください)。プリンターには専用のケーブル、キーボードには別のケーブル、マウスにはまた別のケーブル ―― デバイスごとに異なる接続規格が必要でした。新しいデバイスを使いたいたびに「このPCに対応したケーブルとドライバはどれだ?」と調べなければなりませんでした。
USBはこの問題を解決しました。1つの規格、1つのポートで、あらゆるデバイスを接続できるようにした。プリンターもキーボードもカメラもUSBメモリも、全部同じUSBポートで繋がる。デバイスメーカーはUSB規格に対応するだけでいい。PCメーカーもUSBポートを搭載するだけでいい。
MCPはこの「USB」と同じ役割をAIの世界で果たします。
- USBポート = MCPクライアント ― AI側の接続口。Claude Desktop、Claude Code、IDEなどがこれにあたる
- USBデバイス = MCPサーバー ― ツール側の接続口。GitHub、Slack、ファイルシステム、データベースなどがこれにあたる
- USB規格 = MCPプロトコル ― 両者が通信するための共通ルール
あっ、USBの例えだとめっちゃわかる! USBが出る前はプリンターのケーブルとマウスのケーブルが全然違ったけど、USBで全部統一されたんだよね。それと同じことをAIのツール連携でやろうとしてるんだ!
USBの"U"は"Universal"(汎用的な)を意味します。MCPのフルネーム"Model Context Protocol"にも同じ思想が込められています。特定のAIモデルやツールに依存しない、汎用的なプロトコルであること。これが「標準規格」の本質です。
MCPの基本アーキテクチャ ― 3つの構成要素
MCPのアーキテクチャは、大きく3つの構成要素で成り立っています。コースではこの3要素を丁寧に解説していきます。
1. MCPクライアント(Host / Client)
MCPクライアントは、AIモデル側でMCPサーバーと通信する役割を担うコンポーネントです。ユーザーが直接触るアプリケーション(Host)の内部に組み込まれています。
具体的には、以下がMCPホスト(クライアントを内蔵するアプリケーション)にあたります。
- Claude Desktop ― Anthropicの公式デスクトップアプリ。設定ファイルにMCPサーバーを登録するだけで接続できる
- Claude Code ― コマンドラインからClaude を使う開発者向けツール。MCPサーバーとの連携が特に強力
- IDE統合 ― CursorやContinueなどのAI搭載エディタもMCPクライアントとして動作可能
- 自作アプリケーション ― Claude APIを使って自分でMCPホストを構築することもできる
MCPの重要な設計原則として、1つのクライアントが複数のサーバーに同時接続できる点があります。Claude DesktopからGitHub MCPサーバーとファイルシステムMCPサーバーに同時に接続し、「GitHubのこのリポジトリのコードを読んで、ローカルファイルに保存して」という操作が一度にできるわけです。
2. MCPサーバー
MCPサーバーは、外部のツールやデータソースをMCPプロトコルに沿って公開するプログラムです。MCPサーバーは3種類の「プリミティブ(基本要素)」を提供できます。これについては後のセクションで詳しく解説します。
MCPサーバーは軽量なプログラムで、Python、TypeScript/JavaScript、Javaなど様々な言語で実装できます。Anthropicが公式SDKを提供しているのはPythonとTypeScriptの2つです。
3. トランスポート(Transport)
トランスポートは、クライアントとサーバー間の通信方法を定義する層です。MCPでは主に2種類のトランスポートが用意されています。
- stdio(標準入出力) ― ローカル通信用。クライアントがサーバープロセスを直接起動し、標準入出力(stdin/stdout)でJSON-RPCメッセージをやり取りする。設定が簡単で、ローカルMCPサーバーではこれが標準的
- SSE(Server-Sent Events)/ Streamable HTTP ― リモート通信用。HTTP経由でMCPサーバーに接続する。サーバーを別のマシンで動かしたり、クラウド上でホスティングしたりする場合に使う
stdioとSSEの使い分けがよくわからないんだけど……。自分のPCで動かすならstdio、クラウドに置くならSSEってこと?
その理解で問題ありません。ローカルのMCPサーバーを自分のPCで動かすならstdioが最もシンプルです。Claude Desktopの設定ファイルに「このコマンドでサーバーを起動して」と書くだけで動きます。一方、チームで共有するサーバーやクラウド上のサービスにはHTTPベースのトランスポートを使います。初心者はstdioから始めてください。
MCPアーキテクチャまとめ
MCPホスト(Host) — ユーザーが操作するアプリケーション。Claude Desktop、Claude Code、IDEなど。内部にMCPクライアントを持つ
MCPクライアント(Client) — ホスト内でMCPサーバーとの通信を管理するコンポーネント。1クライアント対1サーバーの接続を維持
MCPサーバー(Server) — 外部ツール・データソースをMCPプロトコルで公開するプログラム。Resources、Tools、Promptsの3プリミティブを提供
トランスポート — ローカル接続はstdio、リモート接続はStreamable HTTPが標準
MCPの3つのプリミティブ ― Resources、Tools、Prompts
MCPサーバーが提供できる機能は、3種類のプリミティブ(基本要素)に分類されます。コースではこの3つの違いを正確に理解することが最も重要なパートとして強調されています。
Resources(リソース)― AIが「読む」データ
Resourcesは、AIモデルが読み取り可能なデータソースです。ファイルの内容、データベースのレコード、API経由で取得したデータなどがこれにあたります。
Resourcesの特徴は「読み取り専用」であることです。AIモデルはResourcesを通じてデータを読むことはできますが、変更を加えることはできません。Webサイトの閲覧と同じで、見ることはできるが編集はできない。
具体例を挙げると以下の通りです。
- ローカルファイルの内容を読み取る
- データベースのテーブルからレコードを取得する
- API経由で最新の天気情報を取得する
- GitHubリポジトリのファイル一覧やコードを読む
ResourcesにはURI(Uniform Resource Identifier)でアクセスします。例えばfile:///home/user/document.txtやpostgres://database/users/tableのような形式です。
Resourcesは「読むだけ」なんだ。じゃあAIに「このファイルを書き換えて」みたいなことはResourcesではできないの?
そうです。ファイルへの書き込みのような外部に影響を与える操作は「Tools」が担当します。Resourcesはデータの「入力」、Toolsはアクションの「実行」。この役割分担がMCPの設計の核です。
Tools(ツール)― AIが「実行する」アクション
Toolsは、AIモデルが実行可能なアクション(操作)です。外部システムに変更を加えたり、計算を行ったり、何らかの副作用を持つ処理を行います。
ResourcesとToolsの最大の違いは「副作用(side effect)の有無」です。Resourcesはデータを読むだけなので副作用がありませんが、Toolsはファイルを書き換えたり、メールを送信したり、データベースのレコードを更新したりと、外部の状態を変える操作を行います。
具体例を挙げると以下の通りです。
- ファイルを作成・編集・削除する
- GitHubにissueを作成する、PRをマージする
- Slackにメッセージを送信する
- データベースにレコードを挿入・更新する
- 外部APIを呼び出してアクションを実行する
重要なポイントとして、ToolsはAIモデルが自律的に呼び出すことができます。ユーザーが「GitHubにissueを作って」と指示すると、AIモデルがMCPサーバー経由でGitHub APIを呼び出し、issueを作成する。ユーザーは結果を確認するだけです。
ただし、MCPの設計ではユーザーによる承認(human-in-the-loop)の仕組みも組み込まれています。重要な操作(ファイル削除など)の前にユーザーに確認を求めることが推奨されています。
ToolsはAIが「手を動かす」パートなんだ! 読むだけじゃなくて、実際にGitHubにissue作ったりSlack送ったりできるの、めちゃくちゃ便利! でもファイル削除とかは確認してくれるんだね。安心。
Prompts(プロンプト)― 再利用可能なプロンプトテンプレート
Promptsは、MCPサーバーが提供する再利用可能なプロンプトテンプレートです。これは少し特殊な概念で、ResourcesやToolsと比べると理解しにくい部分かもしれません。
Promptsの役割は、特定のタスクに最適化された指示をテンプレートとして定義し、ユーザーがパラメータを埋めるだけで使えるようにすることです。
例えば、コードレビュー用のMCPサーバーが以下のようなPromptsを提供するとします。
{
"name": "review-code",
"description": "コードレビューを実行する",
"arguments": [
{
"name": "language",
"description": "プログラミング言語",
"required": true
},
{
"name": "code",
"description": "レビュー対象のコード",
"required": true
}
]
}
ユーザーは「review-code」プロンプトを選んで言語とコードを入力するだけで、最適化されたレビューが実行されます。プロンプトの内部構造(「こういう観点でレビューしてください」という詳細指示)はMCPサーバー側で管理されるため、ユーザーは意識する必要がありません。
3つのプリミティブを整理すると、Resources = データの読み取り(入力)、Tools = アクションの実行(出力・副作用)、Prompts = 最適化された指示のテンプレート(ワークフロー)です。この3つの組み合わせで、MCPサーバーは幅広い機能を提供できます。
なるほど……。Resources は図書館で本を読むこと、Tools は工作室で道具を使って何か作ること、Prompts は「この作り方の手順書に従ってね」っていうレシピカード、みたいな?
良い例えです。その理解で十分です。
コースで学ぶ内容を徹底解説 ― 全6レクチャー
ここからはコースの各レクチャーの内容を詳しく解説します。受講前の予習としても、受講後の復習としても活用してください。
レクチャー1: MCPの概念と設計思想
最初のレクチャーでは、MCPとは何か、なぜ必要なのかを概念レベルで学びます。前述のN x M問題やUSBのアナロジーがここで紹介されます。
ここで押さえるべきキーポイントは以下です。
- MCPはオープンスタンダード ― Anthropicが開発したが、誰でも自由に使える。GitHubでオープンソースとして公開されている
- MCPはAIモデル非依存 ― Claude専用ではない。MCPに対応した任意のAIモデル・アプリから利用できる
- MCPは双方向通信 ― クライアントからサーバーへのリクエストだけでなく、サーバーからクライアントへの通知(Notification)もサポートする
- MCPはJSON-RPCベース ― 通信のメッセージ形式にはJSON-RPC 2.0を採用。Web開発者にとって馴染みのある形式
レクチャー2: Resources を理解する
2つ目のレクチャーでは、ResourcesのURIスキーム、静的リソースと動的リソースの違い、リソースの購読(Subscription)などを学びます。
Resourcesには2種類あります。
- 静的リソース(Direct Resources) ― URIが固定で、常に同じデータを返す。例: 設定ファイル、固定ドキュメント
- 動的リソース(Resource Templates) ― URIにパラメータを含み、動的にデータを生成する。例:
db://users/{userId}/profile
また、Resourcesの購読(Subscription)機能により、リソースの内容が変更されたときにクライアントに通知を送ることもできます。
レクチャー3: Tools を理解する
3つ目のレクチャーでは、Toolsの定義方法、入力スキーマ(JSON Schema)、エラーハンドリングなどを学びます。
Toolsの定義は以下のような形式になります。
{
"name": "create_github_issue",
"description": "GitHubリポジトリに新しいissueを作成する",
"inputSchema": {
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "リポジトリ名(owner/repo形式)"
},
"title": {
"type": "string",
"description": "issueのタイトル"
},
"body": {
"type": "string",
"description": "issueの本文"
}
},
"required": ["repo", "title"]
}
}
AIモデルはこのスキーマを読んで「どんな引数を渡せばいいか」を自動的に理解します。そしてユーザーの指示に基づいて適切な引数を組み立て、Toolを呼び出します。
JSON Schemaで引数の型とか説明を書いておくと、AIが自動で理解してくれるんだ。description(説明)をちゃんと書いておくのが大事そうだね。
その通りです。ToolのdescriptionはAIモデルが「いつこのツールを使うべきか」を判断するための最重要情報です。曖昧な説明だとAIが適切なタイミングでToolを選択できません。「何をするツールか」「いつ使うべきか」「制約は何か」を具体的に書くのがベストプラクティスです。
レクチャー4: Prompts を理解する
4つ目のレクチャーでは、Promptsの定義、引数の設定、プロンプト内でのリソース参照(Embedded Resources)などを学びます。
Promptsは主にユーザー主導で呼び出されるもので、Toolsのように AIが自律的に選択するものではありません。これはUIの中でスラッシュコマンド(例: /review-code)として表示されることが多いです。
レクチャー5: 最初のMCPサーバーを作る(ハンズオン)
コースの最大の山場は、このハンズオンパートです。実際にPython(またはTypeScript)でMCPサーバーを作り、Claude Desktopに接続するところまでを体験します。
以下は、Pythonで最小限のMCPサーバーを作る例です。
# weather_server.py ― 天気情報を返すMCPサーバーの例
from mcp.server.fastmcp import FastMCP
# MCPサーバーのインスタンスを作成
mcp = FastMCP("weather-server")
# Toolを定義: 指定した都市の天気を返す
@mcp.tool()
def get_weather(city: str) -> str:
"""指定した都市の現在の天気情報を取得する。
Args:
city: 天気を調べたい都市名(例: "Tokyo", "New York")
"""
# 実際にはAPI呼び出しを行うが、ここではデモ用の固定データを返す
weather_data = {
"Tokyo": "晴れ 22°C",
"New York": "曇り 15°C",
"London": "雨 10°C",
}
return weather_data.get(city, f"{city}の天気データは見つかりません")
# Resourceを定義: サポートしている都市の一覧
@mcp.resource("weather://cities")
def list_cities() -> str:
"""サポートしている都市の一覧を返す"""
return "Tokyo, New York, London"
# サーバーを起動
if __name__ == "__main__":
mcp.run()
このコードはたった数十行ですが、立派なMCPサーバーです。get_weatherというToolと、weather://citiesというResourceを提供しています。
え、こんな短いコードでMCPサーバーが作れちゃうの!? @mcp.tool()ってデコレータ付けるだけで、関数がそのままToolになるんだ! Pythonの型ヒントとdocstringがそのままスキーマになるのも賢い!
FastMCPは Anthropicが提供する公式のPython SDKで、MCPサーバーの実装を極力シンプルにするフレームワークです。Flaskのような直感的なAPIデザインで、デコレータとPython型ヒントだけでMCPサーバーが完成します。TypeScript版のSDKも同様にシンプルです。
レクチャー6: Claude Desktop / Claude Code との接続
最後のレクチャーでは、作成したMCPサーバーを実際にClaude DesktopやClaude Codeに接続する方法を学びます。
Claude Desktopの場合、設定ファイル(claude_desktop_config.json)に以下のように記述します。
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["path/to/weather_server.py"]
}
}
}
Claude Codeの場合は、コマンドラインから以下のように設定します。
# MCPサーバーをClaude Codeに追加
claude mcp add weather -- python path/to/weather_server.py
# 登録済みのMCPサーバー一覧を確認
claude mcp list
設定が完了すると、Claude Desktopの会話画面にMCPサーバーの接続状態が表示され、「東京の天気を教えて」と聞くだけでAIが自動的にget_weather Toolを呼び出して回答してくれます。
設定ファイルに数行書くだけで接続完了!? しかもClaude Codeならコマンド1行で追加できちゃう! これは思ってたより全然ハードル低い!
MCPの設計思想は「開発者にとってシンプルであること」です。複雑な設定やボイラープレートコードを排除し、数分でMCPサーバーを作って接続できるようにしている。このハードルの低さがMCPの普及を加速させています。
MCPサーバー開発の技術スタック
Python SDK — pip install mcp でインストール。FastMCPクラスでサーバーをデコレータベースで構築。型ヒントとdocstringからスキーマ自動生成
TypeScript SDK — npm install @modelcontextprotocol/sdk でインストール。zodスキーマとの統合が強力
Claude Desktop接続 — claude_desktop_config.json にサーバーのコマンドと引数を記述するだけ
Claude Code接続 — claude mcp add コマンドで即座に登録可能
MCPの実例 ― 既に使えるMCPサーバーたち
MCPの強みのひとつは、すでに多くのMCPサーバーが公開されていることです。自分でゼロからサーバーを作らなくても、既存のMCPサーバーをClaude DesktopやClaude Codeに接続するだけで、強力な機能が使えるようになります。
コースで紹介される代表的なMCPサーバーを、カテゴリ別に見ていきましょう。
ファイルシステム
Filesystem MCPサーバーは、ローカルのファイルシステムへの読み書きアクセスを提供します。指定したディレクトリ内のファイルを読む、新しいファイルを作成する、ファイルを移動・リネームするといった操作ができます。セキュリティのため、アクセス可能なディレクトリを明示的に指定する設計になっています。
GitHub
GitHub MCPサーバーは、GitHub APIへのアクセスを提供します。リポジトリの検索、issueやPRの作成・管理、コードの閲覧、ブランチの操作など、GitHub上のほぼすべての操作をClaude経由で実行できます。
データベース
PostgreSQL MCPサーバーやSQLite MCPサーバーを使えば、AIモデルがデータベースに直接クエリを投げられます。「先月のユーザー登録数をグラフにして」と言うだけで、AIがSQLを組み立てて実行し、結果を解析してくれます。
Web検索・ブラウジング
Brave Search MCPサーバーはWeb検索機能を提供し、Puppeteer MCPサーバーはブラウザ操作(スクリーンショット撮影、ページ内の要素クリック、フォーム入力など)を可能にします。
その他のサービス連携
- Slack ― チャンネルの閲覧、メッセージの送受信、ファイルの共有
- Google Drive ― ドキュメントの検索・閲覧
- Memory ― 会話を超えた長期記憶の管理(ナレッジグラフベース)
- Sentry ― エラートラッキングシステムとの連携
もうこんなにMCPサーバーがあるの!? GitHub、Slack、データベース、ファイルシステム……。自分でサーバー作らなくても、既存のを入れるだけで使えるなんて最高!
MCPのオフィシャルサーバーはGitHub上で公開されています。さらにコミュニティが作成したサードパーティサーバーも含めると、数百以上のMCPサーバーが既に存在します。コースを受講する前に、まず既存のMCPサーバーを1つインストールして使ってみるのが最も効率的な学習法です。
以下は、Claude DesktopにFilesystem MCPサーバーを追加する設定例です。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/your-name/Documents",
"/Users/your-name/Desktop"
]
}
}
}
この設定をclaude_desktop_config.jsonに追加してClaude Desktopを再起動するだけで、AIがDocumentsとDesktopフォルダ内のファイルにアクセスできるようになります。「Desktopにあるreport.csvの内容を要約して」といった指示が自然言語で可能になります。
TypeScriptでMCPサーバーを作る例
コースではPythonが中心ですが、TypeScript版のSDKも紹介されます。TypeScript/JavaScriptのエコシステムに慣れている開発者向けに、同等のMCPサーバーをTypeScriptで実装する例を見てみましょう。
// weather-server.ts ― TypeScript版MCPサーバーの例
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
// MCPサーバーのインスタンスを作成
const server = new McpServer({
name: "weather-server",
version: "1.0.0",
});
// Toolを定義
server.tool(
"get_weather",
"指定した都市の現在の天気情報を取得する",
{
city: z.string().describe("天気を調べたい都市名"),
},
async ({ city }) => {
const weatherData: Record<string, string> = {
Tokyo: "晴れ 22°C",
"New York": "曇り 15°C",
London: "雨 10°C",
};
const weather = weatherData[city] ?? `${city}の天気データは見つかりません`;
return {
content: [{ type: "text", text: weather }],
};
}
);
// Resourceを定義
server.resource(
"cities-list",
"weather://cities",
async (uri) => ({
contents: [{
uri: uri.href,
mimeType: "text/plain",
text: "Tokyo, New York, London",
}],
})
);
// サーバーを起動
const transport = new StdioServerTransport();
await server.connect(transport);
TypeScript版はzodでスキーマ定義するんだ! React開発とかでzod使ってる人にはめっちゃ馴染みやすそう。Python版と比べると少しコード量は増えるけど、型安全性が高いのはTypeScriptならではだね。
どちらの言語を選ぶかは好みの問題です。重要なのは、どちらで作っても全く同じMCPプロトコルで通信するということ。Python製のMCPサーバーもTypeScript製のMCPサーバーも、Claude Desktopからは同じように見えます。プロトコルの力はここにあります。
MCPの通信フロー ― 裏側で何が起きているか
ユーザーがClaude Desktopで「東京の天気を教えて」と入力したとき、裏側では以下のようなやり取りが行われています。
- ユーザーの入力 → Claude Desktop(MCPホスト)がユーザーのメッセージを受け取る
- Claudeの判断 → AIモデルが「天気を調べるにはget_weatherツールを使うべきだ」と判断する
- Tool呼び出し → MCPクライアントがMCPサーバーに
tools/callリクエストを送信(JSON-RPC形式) - サーバー処理 → MCPサーバーが
get_weather("Tokyo")を実行し、結果を返す - 結果の統合 → MCPクライアントがサーバーからの結果を受け取り、Claudeに渡す
- 応答の生成 → Claudeがツールの結果を自然言語に組み込んで最終回答を生成する
- ユーザーへの表示 → 「東京の天気は晴れで22°Cです」と回答が表示される
この一連の流れがミリ秒〜数秒の間に自動的に処理されます。ユーザーは裏側のJSON-RPC通信を意識する必要は一切ありません。
ふむふむ……。つまりAIが「このツールを使うべきだ」って自分で判断してくれるのがポイントなんだね。ユーザーが「get_weatherを呼んで」って明示的に言わなくても、「天気教えて」だけで自動的にツールを選んでくれる。
そこがMCPの設計の優雅さです。AIモデルにToolの一覧と説明を渡しておけば、どのToolをいつ使うかはAIが文脈に基づいて自律的に判断する。ユーザーは自然言語で目的を伝えるだけでいい。これは従来のAPI統合では実現できなかった体験です。
セキュリティと安全性 ― MCPの設計上の配慮
AIモデルが外部ツールにアクセスできるということは、それだけセキュリティ上のリスクも増えるということです。コースではMCPのセキュリティ設計についても詳しく解説されています。
最小権限の原則
MCPサーバーを構築する際は、必要最小限の権限だけを付与することが推奨されます。例えばファイルシステムMCPサーバーでは、アクセス可能なディレクトリを明示的に限定する。「PCの全ファイルにアクセスできる」設定はNGです。
ユーザー承認(Human-in-the-Loop)
重要な操作や副作用のある操作を実行する前に、ユーザーに確認を求める仕組みが推奨されています。Claude Desktopでは、MCPサーバーのToolが初めて呼ばれる際に「このツールの使用を許可しますか?」という確認ダイアログが表示されます。
トランスポートの暗号化
リモートMCPサーバーに接続する場合は、HTTPS(TLS)を使用した暗号化通信が必須です。stdioトランスポートの場合はローカル通信なので暗号化は不要ですが、HTTP経由の場合は必ず暗号化を行う必要があります。
MCPサーバーの開発で最も重要なことは「セキュリティは後から追加するものではなく、設計段階で組み込むもの」です。特に、サードパーティ製のMCPサーバーをインストールする際は、そのサーバーが何にアクセスするのか、どんな操作を行うのかを必ず確認してください。信頼できないMCPサーバーをインストールするのは、信頼できないソフトウェアをインストールするのと同じリスクがあります。
便利だからって何でもかんでもMCPサーバー入れちゃダメなんだね。ちゃんとソースコードを確認するか、公式やメジャーなものから使い始めるのが安全ってこと!
MCPセキュリティのベストプラクティス
最小権限 — 必要なディレクトリ・操作だけにアクセスを限定する
ユーザー承認 — 副作用のある操作はユーザーの確認を経てから実行する
信頼できるソースのみ — 公式サーバーやソースコードを確認できるサーバーのみ使用する
暗号化 — リモート接続は必ずHTTPS経由で行う
認証情報の管理 — APIキーやトークンは環境変数で管理し、設定ファイルにハードコードしない
コースを最大限活用するためのコツ
Introduction to MCPを効率的に学ぶための実践的なアドバイスです。
コツ1: まず既存のMCPサーバーを使ってみる
コースを受講する前に、まずは既存のMCPサーバーをClaude Desktopにインストールして使ってみることを強くおすすめします。Filesystem MCPサーバーは設定が最も簡単で、数分で動きます。「MCPで何ができるか」を体験してからコースを受講すると、理解度が段違いです。
コツ2: ハンズオンは実際に手を動かす
レクチャー5のハンズオンパートは、動画を見るだけでなく必ず自分でコードを書いて実行すること。MCPサーバーの開発は「概念を知っている」と「実際に作った」の間に大きな壁があります。コピペでもいいので、動くMCPサーバーを1つ作る経験が最も重要です。
コツ3: 自分の業務に合ったMCPサーバーを構想する
コース受講中に、「自分の仕事のどの部分をMCPサーバーにできるか?」を常に考えてみてください。
- 社内のナレッジベースをMCPサーバーにして、AIから検索できるようにする
- デプロイパイプラインをMCPサーバーにして、自然言語でデプロイを実行する
- 社内の承認フローをMCPサーバーにして、AIアシスタント経由で申請を出す
「これはMCPサーバーにできそうだ」というアイデアが浮かべば、コースの学習モチベーションが格段に上がります。
コツ4: MCP Inspectorでデバッグする
AnthropicはMCP Inspectorというデバッグツールを提供しています。MCPサーバーの動作をブラウザ上でインタラクティブにテストできるツールで、開発時のデバッグに非常に便利です。
# MCP Inspectorの起動
npx @modelcontextprotocol/inspector python weather_server.py
Inspectorを起動すると、ブラウザでMCPサーバーのTools、Resources、Promptsの一覧を確認でき、個々のToolを手動で実行してレスポンスを確認できます。
MCP Inspectorがあるの知らなかった! Claude Desktopに繋ぐ前に単体でテストできるのは超便利だね。開発→テスト→接続の流れがスムーズになりそう!
開発時のデバッグにはMCP Inspector、動作確認にはClaude Desktop、本格運用にはClaude Codeという使い分けがおすすめです。段階的に進めることでトラブルを最小限に抑えられます。
Introduction to MCP の次はどのコースに進む?
MCP入門を修了したら、さらに深く学ぶためのステップがあります。
- MCPをもっと深く学びたい → MCP Advanced(リモートMCPサーバー、認証・認可、OAuth統合、マルチテナント設計など上級トピック)
- Claude APIでアプリを作りたい → Building with the Claude API(Claude APIの基本操作、ストリーミング、ツール統合)
- Claude Codeの使い方を学びたい → Claude Code in Action(Claude Codeの基本から高度な自動化まで)
- プロンプト設計を極めたい → Prompt Engineering in Practice(Claude APIでの実践的プロンプトエンジニアリング)
MCP Advancedってのがあるんだ! 入門を終えたらそっちに進めばいいんだね。OAuthとかマルチテナントとか、実際にサービスとして公開するための知識が学べそう。
おすすめ学習パス(MCP軸)
ステップ1 — Introduction to MCP(本コース。基礎理解とローカルMCPサーバー構築)
ステップ2 — MCP Advanced(リモートサーバー、認証、本番運用)
並行して — Building with the Claude API(MCPクライアント側の理解を深める)
実践 — 自分の業務用MCPサーバーを1つ作ってチームで運用してみる
MCPはAIエコシステムのインフラ層です。MCPを理解している開発者は、今後のAIツール連携のあらゆる場面で優位に立てます。Introduction to MCPは2時間の投資で、その基盤を確実に手に入れられるコースです。
まとめ ― MCPはAIと外部世界をつなぐ「共通言語」
Introduction to MCPは、AIモデルと外部ツール・データソースの連携を根本から変える新標準プロトコル「MCP」の基礎を、概念理解からハンズオン実装まで一気に学べるコースです。
- MCPとは: AIモデルと外部ツールを接続するためのオープンスタンダード。N x M問題を N + M に変える「AIのUSB」
- アーキテクチャ: MCPホスト/クライアント(AI側)+ MCPサーバー(ツール側)+ トランスポート(通信層)の3要素
- 3つのプリミティブ: Resources(読む)+ Tools(実行する)+ Prompts(テンプレート)
- 開発のハードルは低い: Python/TypeScript SDKで数十行のコードからMCPサーバーが作れる
- 既存サーバーが豊富: GitHub、Slack、ファイルシステム、データベースなど、すぐに使えるMCPサーバーが多数公開されている
- セキュリティ: 最小権限、ユーザー承認、暗号化が設計に組み込まれている
- 受講のコツ: まず既存MCPサーバーを使ってみる → コースでハンズオン → 自分用のMCPサーバーを構想する
MCPは「AIが孤立したチャットボットから、外部世界と連携するインテリジェントなエージェントに進化する」ための鍵となるプロトコルです。開発者にとって、MCPを今のうちに理解しておくことは、AIネイティブな時代への最高の準備になります。
MCPのこと、だいぶわかった気がする! 要するに「AIとツールをつなぐUSB規格」で、サーバーを作ればどのAIからでも使えるってことだよね。2時間で学べるなら開発者なら絶対やるべき!
MCPは今後のAI開発の基盤になる技術です。「AIは質問に答えるだけ」の時代は終わり、「AIが外部ツールを使ってタスクを実行する」時代が来ている。MCPはその時代の共通言語です。まずはIntroduction to MCPでその基礎を掴んでください。
Anthropic Academyシリーズ、まだまだ続くよ〜! 次はMCP Advancedの解説かな? 実際にリモートMCPサーバー作って公開するところまでやりたい! じゃ、また次の記事で!