Model Context Protocol の現在地
バクラク事業CTO 中川佳希です。バクラク事業部 Platform Engineering 部では定期的な発信を行っています。前回は、Microsoft Entra ID PIM for Groupsの運用と工夫 by itkq でした。(とても便利です!)
この記事では、Model Context Protocol(MCP)について触れていきます。※ 2025年2月時点での情報です。
Model Context Protocol
2024年11月に、Anthropicが発表したクライアント-サーバー間通信のプロトコルです。
仕様策定やエコシステムにはオープンコミュニティから誰でも参加可能で、各言語の実装SDKもオープンソースで開発されています。AnthoropicではMCP開発チームのジョブも公開されており、コミュニティとともに開発へのコミットメントをしていくことがうかがえます。
Why MCP?
LLMを利用したアプリケーションを提供していくうえで、外部のデータを参照したり外部ツール呼び出しなどのインテグレーションを都度定義、実装していくことは面倒です。
そこで「データや機能をエクスポーズするサーバー」と「呼び出し側であるクライアント」の通信プロトコルを定め、LLMにコンテキストを渡す方法を標準化しようとするのがMCPです。
例
簡単なユースケースとしては、LLM にリソースやツール呼び出しのためのサーバーを提供できます。
例えば、MCPサーバー側に Google カレンダー登録を行う実装を行いインストラクションを定義すれば、LLM が対話の中で必要なツールを自律的に選び、ホストアプリケーションにツール実行を要求します。Tool use (Function calling) 同様に、ツール定義、実行とその結果を渡すのはホストアプリケーションの役割です。input_schema
で表現されるツールのパラメータもMCPとTool useでJSON スキーマに違いはありません。
Claude から Google カレンダー連携
Architecture
クライアントはサーバーとの間に 1:1 のコネクションを確立し、メッセージ形式には JSON-RPC 2.0 が用いられます。プロトコル、メッセージスキーマもGitHubに公開されています。
コンポーネントは大きく3つあり、それぞれ以下のような役割を持ちます。
- Host: LLM を備えたアプリケーション
- Client: Hostアプリケーション内で、MCP Server との接続セッションの管理を担う
- Server: データや機能提供を行うサーバー
Connection
現段階では MCP はステートフルなプロトコルであり、接続初期化時にサーバーからツールやリソースに対するインストラクションを受け取り、以降ツールが必要となった場合に呼び出す際にも同じ long-lived なコネクションが利用されます。逆にサーバーからツールやリソース変更を Notification として、PUSHすることも可能です。再接続は可能ではありますが、今のところ、例えばまとまった1つのタスクを完了してコネクションを閉じるなどを前提にはしていません。
2025年上半期に計画されているロードマップに最も重要として挙げられているのが、Remote MCP Supportです。認証認可、MCPサーバーのディスカバリやステートレスであることが求められるサーバーレスのような環境にあるリモートサーバーとのコネクション接続管理が次のステップとして記載されています。
MCP をサポートしているツール
UI含めてスクラッチでホストアプリケーションを実装することも可能ですが、現段階では日常的な開発で利用しているツールやIDEからの利用シーンが多いと思います。
Claudeデスクトップアプリ、Cline、v0.45のアップデートで Cursor もMCPサーバーを設定することで、Composer からツールとして呼び出すことが出来るようになりました。
バクラクではモノレポ内に開発ツールもコミットしており、データベースへのクエリを自然言語で行うツールを実装して提供しています。
Composer内で Run tool が可能
おわりに
現時点ではユースケースは限られたものとなります。例えば、リモート接続を前提としたコンシューマー向けアプリケーションの本番運用においては、先のコネクションなど障壁があります。
しかし、開発者向けの利用シナリオとしては非常に魅力的な存在です。IDE を中心にホストアプリケーションのサポートは拡充されてきています。MCP Server をローカルでホスティングして、開発者自身しか持ち得ないナレッジを LLM に与えることは、MCP のフレームに載れば非常に容易になりました。今後も主要なユースケースとして発展していくと感じています。
Platform Engineering 部の紹介
バクラク事業部 Platform Engineering 部では定期的な技術発信を行っています!
SRE、開発チームエネブルメント、認証やAPI提供に興味のある方は、ぜひカジュアル面談もお待ちしています。
Discussion