Python

MCPサーバーとは?PythonでのMCPサーバーの作り方とClaudeとの連携方法を解説!

mcp
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、AI時代の新しい開発スタイル”MCPサーバー”を徹底解説していきます!Pythonでサクッとサーバーを立ち上げて、Claudeと連携する方法をわかりやすく紹介していくよ!

こんにちは!スタビジ編集部です!

最近、「大規模言語モデル(LLM)」を業務に取り入れる動きがどんどん広がっています。

ただ、その中で「どうやって社内のデータやAPIをつなぐか」という課題が出てきています。

そこで注目されているのが「Model Context Protocol(MCP)」という仕組みです。

これを使うことで、LLMが外部データや社内システムに安全にアクセスできるようになります。

MCPって何?難しそう、、、
MCPの使い方について具体的に知りたい!

本記事では、初心者でも理解できるようにMCPの基礎から説明しつつ、Pythonでの実装手順とClaudeとの接続方法を具体例を交えて解説していきます。

ウマたん
ウマたん
MCPの使い方をマスターして、AIモデルとのセキュアな接続を実現しよう!

・MCPの概要
・MCPサーバーの立ち上げ方
・Claudeとの接続方法

MCPについてガッツリ学びたい方は以下のUdemy講座で解説していますのでチェックしてみてください!

【初心者向け】MCPサーバーをClaudeから動かしてみよう!またPythonで独自のMCPサーバーを構築していこう!

Udemy
【時間】4時間
【レベル】初級

MCPサーバーを立ち上げてLLMから使ってみたいならこのコース!

今なら購入時に「M7UFLCB5」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください!

\30日以内なら返金無料/このコースを見てみる

MCPとは

Model Context Protocol(MCP)」とは、LLM(大規模言語モデル)が外部ツールやデータにアクセスするための標準的な仕組み(プロトコル)です。

“プロトコル”とはコンピューター同士がやり取りするときの決まりごと(通信ルール)のことです。

例えば、人間が会話するときに言語や文法が決まっているように、AIツールが外部のサーバーが通信するとき「どんな形式でメッセージをおくるか」、「どんな順番でやり取りするか」というルールがMCPになります。

2024年にAnthropic社が発表し、“AI用のUSB-C”と例えられる標準的な規格で、これによりどんなAIツールにアクセスできるようになりました。

ウマたん
ウマたん
MCPは「AIと外部ツールがやり取りするための共通言語」なんだね!

MCPの仕組み

MCPの仕組みについて、見ていきましょう。

MCPはクライアント(AIアプリ)とサーバー(データソース)間で双方向接続を実現するプロトコルです。

MCPでは「JSON-RPC 2.0」をベースとした通信により、安全かつ柔軟なデータのやり取りができます。

MCPの仕組みを簡単ですがイラストにすると下記になります。

mcp
従来のプラグインやAPI連携とは何が違うの?

たしかに上図をみると、そんな疑問が浮かんできますよね。

そこで従来の接続方法とMCPを比較してみましょう。

比較項目従来のプラグイン / API連携MCP(Model Context Protocol)
セキュリティAIが直接APIキーを持つケースが多いすべてのアクセスはユーザー承認制
拡張性サービスごとに専用実装が必要共通プロトコルで再利用・統一可能
管理開発者側が動作を制御ユーザー自身が使うツールを制御
実装難易度個別API仕様の理解が必要MCP SDKで標準化された仕組みを利用

MCPではMCPサーバーを経由するため、アクセス制御がしやすくセキュリティ面が向上します。

また共通のプロトコルを使用するため、各サービスごとの実装が不要になり、拡張性や管理面でもメリットがあります。

ウマたん
ウマたん
MCPを使うことで安全性や利便性が向上するんだね!

PythonでMCPサーバーを作ってみる

実際にPythonでMCPサーバーを作ってみます。

下記の流れで見ていきます。

  1. uvのインストール
  2. MCPサーバー立ち上げ

MCPサーバーの構築には以下の条件があります、自身の環境が満たしているかあらかじめ確認しましょう。

  • Python 3.10 以上がインストールされている
  • Python MCP SDK 1.2.0 以上を使用する

公式サイトにも記載があるので参考にしてみて下さい。

uvのインストール

まずは事前準備として、「uv」というPythonのパッケージ管理・実行ツールをインストールします。

MCPのPython SDKではuvを使う前提で設計されており、uvを使うことで依存パッケージ(mcp[cli])の導入・ロック管理・実行までを一貫して行えます。

# uv をインストール(macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# uv をインストール(windows)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

上記コマンドでuvをインストールします。

# プロジェクト作成
uv init mcp-demo
cd mcp-demo

# MCPのPython SDK(CLI入り)を追加
uv add "mcp[cli]"

uv init“コマンドでMCPサーバー用プロジェクト(フォルダ)が新規作成されます。

mcp

これにより主に下記が自動で準備されます。

  • .venv:プロジェクト専用のPython環境
  • pyproject.toml:プロジェクト設定ファイル
  • uv.lock :依存関係のロックファイル

このようにコマンド一つでフォルダ、仮想環境、設定ファイルを全部まとめて用意してくれる点がuvを利用するメリットになります。

# MCPのPython SDK(CLI入り)を追加
uv add "mcp[cli]"

上記はPythonのMCPサーバー環境に「MCP SDK+CLI」を追加するためのコマンドで、以下が実行されます。

  • .venv仮想環境にmcp関連のライブラリが追加される
  • pyproject.tomlにmcp[cli]の依存関係が記録される
  • uv.lockにバージョン固定情報が保存される
  • mcp runmcp infoなどのコマンドが利用可能になる

これにより、プロジェクト内でMCPサーバーを開発・実行できるようになります。

ウマたん
ウマたん
MCPサーバーを作る時はuvを利用するのがおすすめ!

uvを使えば、速く・安全に・確実に同じ環境でサーバーを動かせるよ!

MCPサーバー立ち上げ

事前準備が整ったところで実際にMCPサーバーを立ち上げてみます。

プロジェクトフォルダの配下に”server.py”を作成します。

# server.py
import logging
from mcp.server.fastmcp import FastMCP

# stdout は JSON-RPC で使われるため print 禁止。ログは stderr へ。
logging.basicConfig(level=logging.INFO)

# MCPサーバーのインスタンスを作成
mcp = FastMCP("toukei-lab-minimal")

@mcp.tool()
def hello(name: str) -> str:
    """名前を受け取って挨拶を返します。"""
    return f"こんにちは、{name}さん!"

if __name__ == "__main__":
    # Claude などのホストと stdio (JSON-RPC) で通信
    mcp.run(transport="stdio")

それぞれ見ていきましょう。

「from mcp.server.fastmcp import FastMCP」では、MCPの公式Python SDKに含まれる”FastMCP“クラスを読み込んでいます。

FastMCP“クラスでは、ツール/リソース/プロンプトの登録、JSON-RPC(2.0)の入出力、入出力スキーマ生成といったMCPサーバーを構築する役割を担います。

「mcp = FastMCP(“toukei-lab-minimal”)」で、先ほどのFastMCPクラスのインスタンス(mcpサーバー本体)を作成します。

最後に「@mcp.tool()」で作成したインスタンスに対して、デコレータを使ってツール(関数)を登録していきます。

今回は”hello関数”をがMCPツールとして登録されています。

MCPツールとは、AIクライアントがMCPサーバーにアクセスするときの窓口で、以下のようなものがあります。

  • @mcp.tool():関数の呼び出し、動的に何かを実行(API・ファイル処理・分析など)
  • @mcp.resource():状態・ファイル内容・設定情報などを読み取る
  • @mcp.prompt():LLMが再利用するためのプロンプトテンプレートを提供する

AIクライアントはこのツールを通じて外部のデータやツールにアクセスすることが出来ます。

uv run server.py

上記コマンドでMCPサーバーが起動します。

ウマたん
ウマたん
FastMCPクラスを利用して、簡単にMCPサーバーを構築できる!

Claudeとつないでみる

作成したMCPサーバーとClaudeをつないで動作確認してみましょう。

ここでは”Claude Desktop”を使って自身の環境にClaudeアプリからMCPサーバーと接続します。

Claude Desktopがない場合は、公式サイトを参考にインストールしてください。

設定ファイルの作成

ClaudeからMCPサーバーに接続するため、設定ファイル「claude_desktop_config.json」を各Caludeアプリディレクトリ内に作成します。

  • Windows:”%APPDATA%\Claude\”に作成
  • macOS:”~/Library/Application Support/Claude/”に作成
# claude_desktop_config.json
{
  "mcpServers": {
    "toukei-lab-minimal": {
      "command": "uv",
      "args": [
        "--directory",
        "MCPプロジェクトのディレクトリ絶対パス",
        "run",
        "server.py"
      ]
    }
  }
}

jsonファイル内には上記のように”mcpServers”内に接続するサーバーを定義します。

サーバーではキー名(今回は”toukei-lab-minimal”)とサーバーの起動コマンドを記載します。

Claude Desktopアプリを再起動することで、上記設定が読み込まれMCPサーバーと接続できます。

mcp

正しく設定できると「設定」>「開発者」からMCPサーバーが追加されていることを確認できます。

動作確認

Claudeのチャットから実際にMCPサーバーのツールを実行してみます。

「helloツールを使って、name=”スタビジ” で実行して。」とチャットを投げてみます。

mcp

ClaudeがMCPツールを認識して、実行するか確認が入ります。

mcp

実行を許可するとMCPサーバーで定義した関数が実行されて、レスポンスが返ってきました。

ウマたん
ウマたん
Claude側はMCPサーバーの登録をするだけ!

一つ一つ外部サービスとの接続設定をしなくていいのが楽だね!

MCPサーバー まとめ

Model Context Protocol(MCP)」からMCPサーバーの立ち上げ、Claudeとの接続について解説していきました。

ここで、従来の接続方法とMCPの違いをおさらいしましょう。

比較項目従来のプラグイン / API連携MCP(Model Context Protocol)
セキュリティAIが直接APIキーを持つケースが多いすべてのアクセスはユーザー承認制
拡張性サービスごとに専用実装が必要共通プロトコルで再利用・統一可能
管理開発者側が動作を制御ユーザー自身が使うツールを制御
実装難易度個別API仕様の理解が必要MCP SDKで標準化された仕組みを利用
ウマたん
ウマたん
AIクライアントからのリクエストをMCPでMCPサーバーで共通で受け付けられるのがメリット!

実際にMCPツールをいくつか用意して試してみよう!

今回はClaudeとの簡単な接続までを見ていきましたが、もっと深く勉強したい方はぜひ以下のUdemy講座を受講してみて下さい。

【初心者向け】MCPサーバーをClaudeから動かしてみよう!またPythonで独自のMCPサーバーを構築していこう!

Udemy
【時間】4時間
【レベル】初級

MCPサーバーを立ち上げてLLMから使ってみたいならこのコース!

今なら購入時に「M7UFLCB5」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください!

\30日以内なら返金無料/このコースを見てみる
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら