MCPは誕生間もない技術ですが、GoogleやOpenAI、Amazonなど巨大テック企業が軒並み採用し、国内では清水建設をはじめ建築分野でも活発に導入が進んでいます。
このMCPは、身近なプログラミング言語であるPythonを用いて構築することが可能です。
本記事では、MCPをPythonで実装する方法をわかりやすく解説していきます。「AIで新しいアプリを作ってみたい」という方も、ぜひ参考にしてください。
MCPとは
MCPは、AIアシスタント(生成AI)と外部のデータソースやツールをつなぐためのオープン標準です。この技術は2024年11月に生成AI「Claude」で有名なAnthropicが開発しました。
- これまでの課題とMCPの役割
- MCPの意味
- MCPの構成要素
①これまでの課題とMCPの役割
これまでのAIエージェント開発では、AIが外部ツールにアクセスするために、各社が独自の技術(コネクター)を用意するのが一般的でした。そのため、異なるAIシステム間で互換性がなく、開発のコストや時間が大きな課題だったのです。
MCPは、この課題を解決する「共通規格」として生まれました。これにより、従来のAPIのように個別にシステム開発する必要がなくなったのです。
つまり、「マルチコンセント」のように、様々なAIアプリや外部ツールを一つのプラグでつなげられるのがMCPなのです。
以下の記事でも「マルチコンセント」を例に挙げて解説しています。MCPを全く知らない方でも納得できる初心者向け記事なので、ぜひこの機会に一度目を通してみてください。
②MCPの意味

MCPという名称は、Model(モデル)、Context(コンテキスト)、Protocol(プロトコル)の頭文字に由来しています。
- Model(モデル):複雑な推論や判断を実行するAIの頭脳
- Context(コンテキスト):タスク遂行に必要な情報を取得するAIの知識源
- Protocol(プロトコル):モデルとコンテキストがやり取りするための共通ルール
つまり、MCPという言葉自体が、それぞれの役割を端的に示しており、そのまま機能の特徴を表しているのです。
③MCPの構成要素

MCPは、AIアシスタントと外部システムを連携させるための仕組みで、「MCPモデル」「MCPホスト」「MCPサーバー」の3要素から成り立ちます。
ここでは、身近なスマートフォンアプリを例に、その連携の流れを解説しましょう。
①MCPモデル
MCPモデルは、スマートフォンにインストールされているAIアシスタントアプリです。ここで、「近くの美味しいラーメン屋さんを教えて」のような質問を受け付けます。
②MCPホスト
MCPホストは、アプリのバックエンドシステムです。ここでは、アプリ(モデル)からの質問を受け取り、Web上のデータベース(サーバー)に「ラーメン屋の情報をください」といった内容と伝えます。
③MCPサーバー
MCPサーバーは、回答に必要な情報を提供するWeb上のデータベースです。ここでホストからのリクエストに応じて、「ラーメン屋のリスト」といった具体的な情報を返します。
このように、この3要素が連携することで、AIアシスタントアプリはユーザーの質問に正確に答えられるのです。
MCPの核となる技術がMCPサーバーで、この後のPython実装でもこのMCPサーバーを構築します。MCPサーバーについては以下の記事で詳しく解説しているので、ぜひご一読いただき理解を深めておいてください。
PythonでMCPを実装するメリット
では、Pythonを使ってMCPを実装するメリットをお伝えしましょう。
- オープンソースで手軽に開発
- 既存のPython資産を活用可能
- シンプルな構文と豊富なコミュニティ
①オープンソースで手軽に開発
MCPの仕様はオープンソースとして公開されているため、誰でも自由に利用できます。これは、MCPの開発元・Anthropicが掲げる「開発の障壁を下げる」という目的のためです。
公式サイトでは、Python向けの公式ライブラリ(SDK)も提供されており、AIアシスタントの機能(サーバー)や、その機能を利用するアプリ(クライアント)を簡単に構築できます。
②既存のPython資産を活用可能
Pythonは、NumPyやPandas、TensorFlowといった便利なライブラリが豊富に揃っています。MCPでは、こうした既存のPythonをそのままツールとして利用できるので、新しい仕組みを一から作る必要がありません。
例えば、CAD関連の作業もMCP経由でAIに任せられます。
- 複雑な設計変更の自動化(Pythonスクリプトで作ったCAD自動操作ツールを利用)
- 設計書の自動生成(AIが設計データから必要な情報を抽出し、自動で反映)
このように、MCPは既存の資産を活かし、AIの能力を拡張できるメリットがあります。
③シンプルな構文と豊富なコミュニティ
Pythonはコードがシンプルで読みやすいため、初心者でも直感的に書けます。加えて、世界中に豊富な開発者コミュニティがあるので、トラブル時に情報を得やすく、解決しやすいです。
安心してMCP開発を進めたい方にとってメリットが多いツールといえるでしょう。
Pythonの効率的なスキルアップに最適!Python基礎セミナー講習
このように、MCP開発でPythonを使うと魅力的な要素が数多くあります。Pythonスキルに興味がある方は、Python基礎セミナー講習で実践力を身につけてみませんか?
基礎から効率的に学べるカリキュラムは、初心者にも最適なハンズオン形式。MCP開発に必要なPythonの基礎知識から応用まで、プロが丁寧に解説します。
PythonでMCPを実装する方法
では、PythonでMCPを実装する方法を解説しましょう。
- MCPサーバーとクライアントの連携フロー
- 電卓ツールの作り方
- 文字列操作ツールの作り方
- 今回使ったPythonコードのまとめ
①MCPサーバーとクライアントの連携フロー

はじめに、MCPサーバーとクライアントの連携フローを見ておきましょう。上記の図は、MCPを使ってAIが外部の機能を利用する流れを示しています。
- サーバー側:AIに利用させたい機能(ツール)を「@tool」を使って公開
- クライアント側:公開されたツールを「call_tool」で呼び出し、必要な処理を実行
MCPでは、これらのメソッドに「mcp.」を付けて「@mcp.tool」のように記述します。
②電卓ツールの作り方
では、初心者向けに簡単な電卓ツールを作ってみましょう。手順を追いながら具体的なPythonコード例を交えて解説するので、一つひとつ読み進めてみてください。
STEP1. 準備
まず、MCPを使うために必要なPythonライブラリ「fast-mcp」をインストールします。
pip install fast-mcp
これでMCPサーバーとクライアントをPythonで動かせる準備が整いました。
STEP2. サーバー用Pythonファイルを作る
次は、サーバー用のファイル作成です。ここでの名前は「calculator_server.py」にしましょう。ここにAIから呼び出したい「ツール(関数)」や「リソース(読み取り用データ)」を定義していきます。
STEP3. 足し算ツールを作る
まずは、足し算を行うツールを作ります。
from fast_mcp import MCP
mcp = MCP()
@mcp.tool
def add(a: int, b: int) -> int:
“””2つの数字を足して返すツール”””
return a + bif __name__ == “__main__”:
mcp.run() # サーバーを起動
「@mcp.tool」は、この関数をAIが呼び出せる「ツール」にするデコレーターです。「mcp.run()」でサーバーを起動します。
STEP4. 掛け算ツールを追加
次に「掛け算」ツールも追加してみましょう。
@mcp.tool
def multiply(a: int, b: int) -> int:
“””2つの数字を掛け算して返すツール”””
return a * b
掛け算の「multiply」ツールも利用するには、足し算同様に「@mcp.tool」デコレーターを使って、新しい関数を定義する必要があります。
これでAIは、足し算の「add」と掛け算の「multiply」の2つの計算ツールを利用できるようになりました。
STEP5. 定数リソースを作る
MCPでは、AIが参照できる「読み取り専用のデータ」をリソースとして公開できます。これを定数リソースと呼びます。
例えば、円周率や固定のリスト、商品データなど、AIが計算や判断に使いたいけれど、書き換える必要のないデータを想像してください。こうしたデータをサーバー側で関数として定義し、「@mcp.resource」を付けるだけで、AIが安全に利用できるようになります。
@mcp.resource
def pi_value() -> float:
“””円周率の値を返すリソース”””
return 3.14159
この例では、「pi_value()」関数が読み取り専用データとして公開され、AIクライアントからは「get_resource(“pi_value”)」を使って値を取得できます。AIはこの値を計算に利用できますが、書き換えることはできません。
これで、サーバーに定数リソースを追加する作業は完了です。この時点でサーバーは基本的な機能を持った状態になり、AIクライアントから呼び出す準備が整っています。
STEP6. クライアント側でツールを呼び出す
サーバーを起動したら、次はクライアント側からツールやリソースを呼び出してみましょう。クライアント用のファイルを「calculator_client.py」として作ります。
from fast_mcp import MCPClient
client = MCPClient(“http://localhost:8000”) # サーバーのURL
# 足し算ツールを呼び出す
result = client.call_tool(“add”, a=5, b=7)
print(“5 + 7 =”, result)# 掛け算ツールを呼び出す
result2 = client.call_tool(“multiply”, a=5, b=7)
print(“5 * 7 =”, result2)# 定数リソースを取得
pi = client.get_resource(“pi_value”)
print(“円周率:”, pi)
これで、サーバーとクライアントが完全に連携します。
なお、「サーバーが立ち上がった」とは、Pythonで作ったMCPサーバーが実際に動き始め、AIクライアントからのリクエストを受け付けられる状態になったことを指します。
③文字列操作ツールの作り方
続いて、文字列を操作するツールの作り方をご紹介します。
STEP1. 準備
「fast-mcp」をインストール済みであれば、そのまま利用可能です。
pip install fast-mcp
STEP2. サーバー用Pythonファイルを作る
ファイル名は「string_server.py」とします。
STEP3. 大文字変換ツールを作る
続いて、大文字変換ツールを作りましょう。
from fast_mcp import MCP
mcp = MCP()
@mcp.tool
def to_upper(text: str) -> str:
“””文字列を大文字に変換するツール”””
return text.upper()if __name__ == “__main__”:
mcp.run() # サーバー起動
「@mcp.tool」は、この関数をAIが呼べる「ツール」にするための印です。「mcp.run()」でサーバーが起動し、AIクライアントからアクセスできる状態になります。
STEP4. 文字数カウントツールを追加
新しいツールを追加する場合も、同じように「@mcp.tool」を付けて関数を定義します。
@mcp.tool
def str_length(text: str) -> int:
“””文字列の文字数を返すツール”””
return len(text)
STEP5. 定数リソースを作る
「@mcp.resource」は読み取り専用データ(定数)を公開するためのデコレーターです。
@mcp.resource
def default_text() -> str:
“””サンプル用のデフォルト文字列”””
return “hello world”
これでサーバー側の準備は完了です。
STEP6. クライアント側でツールを呼び出す
ファイル名は string_client.py とします。
「MCPClient(“http://localhost:8000”)」でサーバーに接続し、「call_tool(“関数名”, 引数…)」でサーバー上のツールを実行できます。
from fast_mcp import MCPClient
client = MCPClient(“http://localhost:8000”) # サーバーURL
# 大文字変換ツールを呼び出す
result = client.call_tool(“to_upper”, text=”mcp”)
print(“大文字変換:”, result)# 文字数カウントツールを呼び出す
length = client.call_tool(“str_length”, text=”mcp tutorial”)
print(“文字数:”, length)# 定数リソースを取得
default = client.get_resource(“default_text”)
print(“デフォルト文字列:”, default)
これで、AIが文字列操作ができるようになりました。
④今回の実装で使ったPythonコードのまとめ
では、まとめとして上記で出てきたPythonの一覧表をご確認ください。
| 項目/役割 | ファイル名 | 主な定義(@tool / @resource) | 実行コマンド |
| 電卓/サーバー | calculator_server.py |
|
python calculator_server.py |
| 電卓/クライアント | calculator_client.py | MCPClient(“http://localhost:8000”)に接続 | python calculator_client.py |
| 文字列/サーバー | string_server.py |
|
python string_server.py |
| 文字列/クライアント | string_client.py | MCPClient(“http://localhost:8000”) に接続 | python string_client.py |
PythonでのMCP実装におすすめのライブラリ
MCPの公式サイト(公式GitHubリポジトリ)ではPython向けの公式ライブラリ(SDK)が提供されています。このSDKは「mcp」パッケージとしてpipやuvでインストールできます。
- MCP公式のPythonライブラリの特徴
- PythonでのMCP構築ライブラリ一覧
①MCP公式のPythonライブラリの特徴
まずは、MCP公式のPythonライブラリの特徴から見てみましょう。
| 特徴 | 概要 |
| オープンソース | 公式SDKのGitHubはオープンソースで、誰でも無償で利用・導入可能 |
| 両機能のサポート | サーバー機能とクライアント機能の両方をサポート |
| 簡単な開発スタート | pipまたはuvで「mcp[cli]」をインストールするだけで始められる |
| 豊富なドキュメント | サンプルコードや運用例が公式リポジトリと解説記事で多数公開されている |
②PythonでのMCP実装に関するライブラリ
では、PythonでMCPを実装する際のライブラリを一覧でお伝えします。
| ライブラリ名 | 説明(役割) | 特徴 |
| mcp |
|
|
| anthropic |
|
|
| gradio |
|
|
| python-dotenv |
|
|
| asyncio |
|
|
PythonでMCPを実装する際の注意点

Pythonを使ってMCPを実装する場合、以下の点に注意しておきましょう。
- 非同期処理の重要性
- APIキーの管理
①非同期処理の重要性
MCPは、複数のリクエストを同時に効率よく処理するために、非同期処理を前提としています。そのため、asyncioなどのライブラリを使いこなすことが重要です。
例えば、AIが複数のツールを同時に呼び出す必要がある場合でも、非同期処理を使えば、一つずつの処理が終わるのを待たずに、スムーズに次の作業に移れます。
②APIキーの管理
アプリケーションにAPIキーなどの機密情報を含める場合は、環境変数を使って、APIキーをコードに直接書き込まないようにしましょう。
例えば、「Python-dotenv」のようなライブラリを使えば「.env」ファイルに情報を記述するだけで、安全にアクセスできます。これにより、GitHubなどの公開リポジトリに誤って機密情報をアップロードしてしまうリスクを防げます。
Python初心者に最適!Python基礎セミナー講習
MCP開発に有効なPythonの基礎を固めたい、または非同期処理やデータ処理、自動化といった技術を体系的に学びたいとお考えなら、実務に役立つPython基礎セミナー講習がおすすめです。
本セミナーは、Pythonの基礎的なプログラムからスタートし、MCPサーバーの構築に直接役立つデータ処理、自動化といった技術まで広くカバーします。
PythonスキルはMCP開発の基盤となる重要な技術です。
ぜひこの機会にPython基礎セミナー講習で実務に役立つスキルを身につけ、MCP開発に活かしましょう。
セミナー名 Python基礎セミナー講習 運営元 GETT Proskill(ゲット プロスキル) 価格(税込) 27,500円〜 開催期間 2日間 受講形式 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング
PythonのMCPについてまとめ
MCPはオープンソースでライブラリも充実し、Pythonでの開発に最適なプラットフォームです。これは、MCP開発の障壁を下げることを目的とした、Anthropic社の意向でもあります。
まずは本記事を参考に、サンプルコードで実際にMCPの実装を体験してみてください。