最先端のAIエージェント技術、MCPの紹介と実装例!

最先端のAIエージェント技術、MCPの紹介と実装例!

こんにちは!デジタルイノベーション部の櫻井です。
この記事ではAIエージェントで使われている最新技術、MCPについて紹介をしていきます。記事の後半ではpythonを用いた簡単なMCPの実装例も紹介しています。

目次

    1. AIエージェントとは

    まず、MCPの根幹となる技術、AIエージェントについて紹介します。AIエージェントとはAIが自動で計画を考え、実行を繰り返し、ユーザとやり取りをすることで目的を達成する技術です。人間で例えるなら、自動でタスクを行なってくれる秘書みたいな存在です。

    例えば、下図のようにユーザが「沖縄の旅行プランを作って!」とAIエージェントに命令した場合、AIエージェントは以下のように

    1. 目的の理解: 「沖縄の旅行プランを作る」という最終的なゴールを理解
    2. 計画の立案: ゴールを達成するために、「人気スポットをWebで検索する」「ホテルと航空券の料金を調べる」といった具体的な行動計画を立てる
    3. 計画の実行: 計画に沿って、Web検索などのアクションを自動で行う

    AIエージェントは、この2(計画)と3(実行)のサイクルを何度も繰り返して情報を集め、最終的に最適な旅行プランとしてまとめてユーザーに提案します。
    AIエージェントの例

    2. MCPとは

    MCP(Model Context Protocol)とは、AIモデルと複数の外部サービスを、USBハブのように簡単に連携させることができる技術です。一度MCPと各サービスを連携させておけば、AIモデルはMCPに接続するだけで、全てのサービスと連携可能になります。

    AIモデルと各サービスを直接繋げる従来手法と比べると、モデルの変更やサービス追加に応じて、連携コードの実装にかかるコストや連携の手間を減らすことができます。

    このようにMCPを用いることで、AIエージェントをより効率よく開発することができます。

    MCPの概要

    3. MCPを実装するための環境構築

    ここからは実際にMCPを実装していきたいと思います。
    まずは、実装を行うための準備として、環境構築をしていきます。

    3.1 Claude Desktop のダウンロード

    Claude DesktopはLLMの一つであるClaudeを扱えるアプリケーションです。無料版でもアプリ上で簡単に自身で作成したMCPと連携することが可能です。
    以下のサイトから自身のOSにあったClaude Desktopをダウンロードしてください。
    ※最初の起動時にアカウント登録をする必要があります
    デスクトップでクロードを使う

    3.2 Python 環境の構築

    今回の実装ではプログラミング言語であるPythonを用いてMCPを構築していきます。
    Pythonを扱うために、以下のリンクからOSに合ったPythonのインストーラをダウンロードして、インストールしてください。
    ※今回扱うPython環境は3.10.0です
    Python 3.10.0

    3.3 MCPの実装・実行環境の構築

    インストールが完了したら、MCPを実装するフォルダを作成し、フォルダ内で以下のコマンドを実行してください。
    ※Windows の場合は全てのコマンドにpy -mを最初につけてください

    MCPを実装するプロジェクトフォルダの作成

    # uvのインストール
    pip install uv

    # プロジェクトフォルダの作成
    uv init mcp-server

    上記のコマンドを実行するとmcp-serverフォルダが作成され以下のディレクトリ構成になります。

    .
    └── mcp-server
    ├── main.py
    ├── pyproject.toml
    ├── README.md
    └── uv.lock

    続いてmcp-server内でMCPを実装するためのcli(ツールキット)とPythonライブラリをインストールします。

    # mcp-serverフォルダに移動
    cd mcp-server

    # ツールキットのインストール
    uv add "mcp[cli]"

    # Pythonライブラリのインストール
    pip install fastmcp

    最後にmcp-server内にserver.pyを作成してください。

    以上でMCPを実装するための環境構築は完了です。

    4. MCPの実装

    では、MCPの実装を行なっていきます。今回は間違った足し算の結果を返すツールを実行するMCPを実装します。
    ※このツールは実用性を目的としたものではありませんが、正しい計算結果との差を確認することでMCPの動作を理解しやすくなるよう、この仕様にしています。

    実装コードは以下のようになっています

    from fastmcp import FastMCP

    # サーバ名
    mcp = FastMCP("Demo‑MCP")

    # ツールの定義
    @mcp.tool
    def add_fool(a: int, b: int) -> int:
    """頭を悪くして2つの整数を加算して返す"""
    return a + b + 100

    if __name__ == "__main__":
    # ファイル実行時にサーバを起動
    # transport='stdio' は標準入出力を使用することを意味
    mcp.run(transport='stdio')

    ここからは実装コードについて上から順に解説していきます。

    from fastmcp import FastMCP

    この箇所ではPythonでMCPを扱うためのライブラリFastMCPを読み込んでいます。

    # サーバ名
    mcp = FastMCP("Demo‑MCP")

    この箇所ではMCPを起動するサーバ名を設定し、MCPを起動するためのクラスインスタンスを定義しています。

    # ツールの定義
    @mcp.tool
    def add_fool(a: int, b: int) -> int:
    """頭を悪くして2つの整数を加算して返す""" # この箇所がツールの説明としてLLMに送信される
    return a + b + 100

    ここではMCPで扱うツールを作成しています。
    関数の上部に@mcp.toolとデコレータを設定すると、設定した関数をMCPのツールとして使用できます。
    また、関数に説明文を加えると、MCPツールの説明としてLLMに送信されます。
    今回の実装例では

    ツール名:add_fool
    ツールの説明:頭を悪くして2つの整数を加算して返す

    としてLLMに送信されます。
    ツールは何個でも作ることができるので、実装例以外のツールを作成する場合は

    @mcp.tool
    def <関数名>(<引数>):
    """関数の説明"""
    実行内容...

    このように追加することができます。

    if __name__ == "__main__":
    # ファイル実行時にサーバを起動
    # transport='stdio' は標準入出力を使用することを意味
    mcp.run(transport='stdio')

    最後にこの箇所ではPythonファイルの起動時にMCPサーバを起動するようになっています。
    今回の実装ではClaude Desktopを利用するため、transport='stdio'でjson形式による標準入力を行うようにしています。

    5. MCPを実際に動かしてみよう!

    では4. MCPの実装で作成したMCPを実際にClaude Desktopと連携して、動かしてみましょう。

    まず、実装したMCPをClaude Desktopに繋げるための設定を行います。
    Claude Desktopの設定から開発者モードを開いてください。開くと以下の画面が出力されます。
    Claude Desktopの開発者画面

    開発者画面を開くと設定を編集というボタンがあるので、クリックをしてください。クリックをすると、claude_desktop_config.jsonが保存されているフォルダが出力されるので、claude_desktop_config.jsonファイルを以下のように変更してください。

    Macの場合

    {
    "mcpServers": {
    "MCP": {
    "command": "python",
    "args": [
    "<MCPを実装したフォルダの絶対パス>/mcp-server/server.py"
    ]
    }
    }
    }

    Windowsの場合

    {
    "mcpServers": {
    "MCP": {
    "command": "py",
    "args": [
    "<MCPを実装したフォルダの絶対パス>/mcp-server/server.py"
    ]
    }
    }
    }

    変更後、Claude Desktopを再起動し、チャット画面のツールバーを表示すると以下のようにMCPという名前のツールが追加されています。

    Claude DesktopのMCP確認画面01

    また、MCPの箇所をクリックすると、以下のようにMCP内に登録されたツールが表示され、Claudeの回答時に使用するかを選択することができます。

    Claude DesktopのMCP確認画面02

    ではClaudeにプロンプトを送信して、MCPが使われているか確認してみましょう。
    以下のように「1+1の答えは?」と入力すると、MCPが間違った答えを出力して、その結果を用いてClaudeが回答しています。

    Claude Desktopの実行結果

    以上がMCPの実装内容になります。
    今回の実装例をベースにデータベースのからの情報取得など、ツールを追加することができます。様々なツールを追加して、自分だけのMCPを作ってみましょう!

    6. MCPの活用例

    この章ではMCPの活用例について2つ、紹介していきます。

    6.1 会議のスケジュール調整を自動化

    MCPを導入することでLLMを通して会議のスケジュール調整を自動化することができます。
    例えば、Googleカレンダーと連携するMCPをAIと連携することで、LLMを通して会議の空き状況の確認や、スケジュールの調整ができます。 GoogleカレンダーのMCPは以下のリンクに導入方法が記載されています。
    google-calendar-mcp

    6.2 簡単にデータ分析が可能

    MCPを導入することでLLMを通して簡単にデータ分析ができます。
    例えば、Googleがデータ分析に特化したMCPである、BigQueryをオープンソースとして提供しています。AIと連携することで、SQLによる検索やメタデータの検索など、LLMを通してデータ分析が可能になります。
    BigQueryは以下のリンクに導入方法が記載されています。
    MCP ツールボックスを使用して IDE を BigQuery に接続する

    このように様々な用途に対するMCPがオープンソースとして公開されているため、拡張機能のようにAIと連携することで、自分好みのAIエージェントが作成もできます。

    特にClaude Desktopと連携する場合は、5章で動かしたように、jsonファイルに記述を加えるだけで連携が可能なため、簡単にMCPの導入ができます。

    7. まとめ

    この記事ではMCPについて紹介とPythonでの実装例を紹介しました。実装を通して、MCPの仕組みや、どのように動作するかを体感していただけたのではないでしょうか?

    改めて、MCPとはAIモデルと複数の外部サービスを簡単に連携するサービスです。
    今回実装で扱ったPython以外にも、TypeScriptのような他の言語での開発環境やSDKが作成されています。
    また、作成したMCPをオープンソースにすることができ、簡単に外部サービスと連携できることから、MCPを使用するユーザーや企業が今後さらに拡大される可能性があり、ますます注目度が高い技術となっています。

    アジアクエスト株式会社では一緒に働いていただける方を募集しています。
    興味のある方は以下のURLを御覧ください。