TL;DR

LLM を使う AI アプリケーションを、外部のデータソースやツールにつなぐためのオープンな標準。MCP と略す。公式ドキュメントは「AI アプリケーションのための USB-C ポート」にたとえている。

なぜ必要か

MCP を使うと、AI アプリケーションにコンテキストを渡せる。ファイルやデータベースといったデータソース、検索エンジンのようなツール、定型のプロンプトなどにつなぐ方法が標準化されるので、一度作ったサーバを多くのクライアントで使える。

仕組み

MCP はクライアントとサーバの構成をとる。

  • MCP ホスト: Claude Desktop や Claude Code のような AI アプリケーション。1 つ以上の MCP クライアントを管理する
  • MCP クライアント: MCP サーバとの接続を保ち、ホストが使うコンテキストをサーバから受け取る。LLM 自身ではない
  • MCP サーバ: クライアントにコンテキストを提供するプログラム

ホストは、接続する MCP サーバごとに MCP クライアントを 1 つ作る。クライアントとサーバの間は JSON-RPC 2.0 でやりとりする。通信路には、同じマシン上のプロセス間で使う stdio と、リモートのサーバと通信する Streamable HTTP がある。

サーバは主に、AI アプリケーションが呼び出して処理を行う Tools、文脈となるデータを渡す Resources、対話の型となる Prompts を公開する。

例

MCP クライアントには Claude Desktop、Cline、Zed、Visual Studio Code などがある(クライアントの一覧)。

自分の理解

LangChain の Agent で使える tools の共通プロトコル、というイメージで捉えている。Function calling との違いは、こちらの記事が参考になる。

LSP に似ていると思う。LSP ではサーバに対して Visual Studio Code や Emacs がクライアントになるように、MCP ではサーバに対して Claude Desktop などがクライアントになる。

関連

出典