株式会社Berry
👾

具体例から見るMCP ~Blender MCPからMCPの雰囲気をつかむ~

に公開

こんにちは、株式会社Berryの古荘です!
私は今年2月に入社し、以降ヘルメット作成を効率化するための3DCGのツール開発などを行っています。

さて、先日Berryでは様々なAIを触るもくもく会が開催されたのですが、私は以下の理由からBlender MCPを触ってみました。

  • 最近話題のMCP(Model Context Protocol)が何なのかよくわかっていなかった
  • Blender × AI で何ができるのか気になった

本記事は、上記の会やその後のコードリーディングで得られた知見をまとめたものです。MCPの具体例であるBlender MCPを使うところから始め、MCPの一側面を見ていきます。MCPそのものの定義・仕様については触れません。

MCPって最近よく聞くけどなんだかいまいちピンとこないな、という方の一助になれば幸いです。

Blender MCP を使ってみる

claude for desktopにBlender MCPを設定し、BlenderアドオンでMCPサーバーの接続を待つと、以下のようにclaudeから対話式でBlenderを操作できるようになります。具体的な導入方法については、公式のinstallをご参照ください。

claude × Blenderによるモデル生成とモデル編集

以下は例として「Blenderでローポリの猫を作ってください」とお願いした結果です。

本当にローポリの猫を作ってくれました。
ただ、z=0よりも下に足があり、地面に埋まってしまっている気がします。
そこで「地面にめり込まないようにしてください」と指示すると…

足裏がz=0に来るように移動してくれました。しかも足場まで作ってくれています。抽象的な指示をしても、ある程度正確に解釈してくれるようです。

Blender MCP の実装を読んでみた

以下はBlender MCPの 2025/07 時点のコードを読んでのざっくり解説です。

概要

Blender MCPはfastmcpというライブラリを用いてMCPを実装しています。

fastmcpを用いることで、AIに特定のサービス(今回はBlender)の使い方を教えることができます。
AIに使用させたいメソッドに@mcp.tool()のようなfastmcpアノテーションをつけると、AIは以下の情報をもとにそのメソッドの呼び出し方を推論し、使用できるようになります。

  • メソッド名
  • 引数名
  • 引数の型
  • 返り値の型
  • ドキュメント(Pythonのdocstring)

特筆すべきは、AIは内部実装を見ずにメソッドの使い方を推論していることです。

すなわちAIがユーザーからサービス実行の指示を受けると、アノテーション付きのメソッド群のインターフェース情報だけをもとに呼ぶべきメソッドとその順番を推測し、サービスを操作します。

コード構成

Blender MCPは主に2つのPythonコードからなり、それぞれ以下のような特徴があります。

  • src/blender_mcp/server.py (MCP server)
    • Claude for Desktop (MCP client)に設定する
    • AIにfastmcpアノテーション付きメソッドを提供する
      • 各メソッドでは通常addon.pyにデータを送るのみで具体的な処理は委譲する
  • addon.py
    • Blender側でアドオンとしてインストールして利用する
    • server.pyから送られてきたデータを元に、以下のような具体的な処理を行う
      • Blenderを操作する
      • 3Dモデルを公開しているWebサービスにアクセスして、モデルをダウンロードする
      • 3Dモデルを生成するWebサービスにアクセスして、モデルを生成してもらう

これらの通信により、AIはBlenderを操作できるようになっています。

fastmcpアノテーション付きメソッド

Blender MCPでは以下2種類のfastmcpアノテーションを利用しています。

  • @mcp.tool
    • データを変更するメソッド向け
    • アドオンと連携するためのプロキシとしての役割を果たしている
  • @mcp.prompt
    • LLMをガイドするためのプロンプトを返すメソッド向け
    • アドオン側と連携は取らず、固定のテキスト(プロンプト)を返すのみ

src/blender_mcp/server.pyでは、これらのアノテーションを用いて以下のカテゴリーのメソッドをAIに提供しています。

  • Blenderの直接操作
    • シーンやオブジェクトの情報の取得
    • スクリーンショットの撮影
    • 任意のPythonコード実行
  • 外部サービスとの連携
    • Hyper3D (モデルの生成)
    • Polyhaven (アセットの検索・ダウンロード)
    • Sketchfab (アセットの検索・ダウンロード)

例えばユーザーが「Blenderで球のモデルを(2,0,0)の位置に作ってください」と言った場合、AIは対応するPythonスクリプトの文字列を用意し、任意のPythonコードを実行するexecute_blender_codeを呼んでユーザーの指示に応えます。

実際に試した結果が以下の画像です。AIの返信のexecute_blender_codeの中身を見ると、どのようなコードを実行したかを確認できます。

まとめ

本記事ではMCPそのものについては触れずに、Blender MCPやMCPの実装の1つであるfastmcpという具体例について概観しました。重要なことは以下3点と思われ、fastmcpを抽象化したMCPも同じ特徴を持ちます(実装方法はアノテーションとは限りません)。

  • AIはMCP clientに設定されたMCP serverを利用できる
  • AIはMCP serverの特定のメソッドのみを通してサービスにアクセスできる
  • AIはメソッドのコード自体は読まず、メソッド名やドキュメントなどのメタ情報のみを参照する

すなわちMCP serverを用意してMCP clientに設定することで、AIは様々なサービスを操作できるようになります。そして、AIが操作できる機能はMCPに定義されたものに限定されます。具体的な処理についてはブラックボックスとして扱うため、例えばWebサービスで本来想定していないAPIエンドポイントをAIが推論で見つけて呼んでしまう、といった問題も防げると考えられます。

一方で、Blender MCPのexecute_blender_codeのように任意のPythonコードを実行するといった、非常に柔軟性の高いメソッドも定義できます。これにより、Blender MCPでは理論上Blender APIでできるすべての操作が実現できます。

ただし、任意のPythonコードを実行できるために、例えばプライベートファイルへのアクセスや想定外のネットワークアクセスといった様々なセキュリティリスクのあるコードもAI次第で実行できてしまう点には注意が必要です。

今後、AIとの対話を通じたサービス実行の需要はますます高まっていくと思われます。その中でMCPはAIがより安全にサービスを使うための鍵となる技術と言えそうです。

応募待っています

WEBエンジニア募集中です!医療業界での経験や3Dの知見は問いません。Berryの考え方や製品に少しでも興味が持てた方はお気軽に応募下さい。

https://www.wantedly.com/projects/2141780

株式会社Berry
株式会社Berry

Discussion