🗣️

Model Context Protocol の現在地

2025/02/03に公開

バクラク事業CTO 中川佳希です。バクラク事業部 Platform Engineering 部では定期的な発信を行っています。前回は、Microsoft Entra ID PIM for Groupsの運用と工夫 by itkq でした。(とても便利です!)
この記事では、Model Context Protocol(MCP)について触れていきます。※ 2025年2月時点での情報です。

Model Context Protocol

2024年11月に、Anthropicが発表したクライアント-サーバー間通信のプロトコルです。
https://www.anthropic.com/news/model-context-protocol

仕様策定やエコシステムにはオープンコミュニティから誰でも参加可能で、各言語の実装SDKもオープンソースで開発されています。AnthoropicではMCP開発チームのジョブも公開されており、コミュニティとともに開発へのコミットメントをしていくことがうかがえます。
https://boards.greenhouse.io/anthropic/jobs/4494503008

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提供に興味のある方は、ぜひカジュアル面談もお待ちしています。

https://youtrust.jp/recruitment_posts/0daffcfdc1063136bab767b900911036

https://zenn.dev/layerx/articles/5ef844aa73f051
https://tech.layerx.co.jp/entry/2025/01/29/145635
https://tech.layerx.co.jp/entry/2025/01/30/113000

LayerX

Discussion