3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCP、概念も目的もよく分からなかったので、少しだけ理解するところまでの雑記

Posted at

はじめに

いまにはじまったことではありませんが、MCPがとても流行っていますね。

私もちまちま記事を見る程度には情報を収集していましたが、正直よくわからなかった。「言ってることはわかるんだけど、なんか実際のイメージが湧かない」みたいなふんわりとした状態でした。

そこで今回、まずはちょっとだけ理解するところまで勉強してみたので、その共有です。

前提

私は以下あたりの前提があります。

  • 生成AIは業務でも、プライベートでも利用している
  • 趣味程度にLangChainなどを用いたエージェント開発をしている

結論

読むのが面倒な方への結論です。(本当の結論は触ってみるのが早い)

  • MCPはプロトコル(通信規約)である
  • MCPに対応したアプリが、MCPサーバー経由で提供された機能を実行する
  • アプリがMCPに対応することで、各AIサービスの機能に依存せず、MCPサーバーと接続して機能拡張が可能になる
    • このアプリとは、Claudeなど

※「アプリ」という呼称については正式なホスト、クライアントの概念で後述

最初にもやもやしていたこと

以下、モヤモヤしていたことです。どれも理解が乏しかったがゆえ。

LangChainのToolsと何が違うのか

なんか「XXXのMCPが公開されました!」というニュースを見ますが、前からAPI呼び出せてたよね。みたいな。

MCP?MCPサーバー?

結局どれがただしいのか?サーバーはどこかにあるの?でもファイルアクセスするMCPがあったような?みたいな疑問がありました。

例えば、何かの操作を提供してくれるなら。

まあわからなくない。(いや認証認可とかどうするのかしら、という疑問はありましたが)

ただ、ローカルのファイルにアクセスするとなるなら...まあ理解が追いつかない状況でした。

結局何で使うのか。

MCPのメリットの表現として、LangChainのツールなどが比較で挙げられました。が、使っている情報をみると、ClaudeDesktopなり、GIthubCopilotなどで使っていました。

ツールの実装を楽にする(なくす)ものなのか、既存サービスの拡張機能なのか、???という状態でした。

理解が追いついたこと

色々と調べたり、使ってみたりして、以下のように理解が追いつきました。

LangChainのToolsと何が違うのか

Tools

あくまでLangChainで作成しているプログラムの一部。自前での実装が基本。

MCP(と呼ばれているもの、この言葉自体はプロトコルを指す)

MCPに準拠したプログラムが提供されているため実装などが不要。既存のツールを用意して自身の端末で起動して使用する。

(一部リモートにホストされるケースもあるらしいので例外あり)

MCP?MCPサーバー?

ここは複数の文脈がごちゃごちゃしていました。

MCP(Model Context Protocol)

まだMCPの哲学やアーキテクチャなどの背景までは理解していません。

ただ、理解したこととしては、まずMCPはプロトコルであること。

HTTPを例に挙げると、HTTPに準拠したクライアント(ブラウザなど)とサーバー(Nginx、SpringBootアプリケーション)が通信し、リクエストとレスポンスのやり取りを行う。

「MCP」も、クライアントとサーバーのやり取りのルールと理解しました。

てことは、そのプロトコルを使用する登場人物がいそうですね。

MCPサーバー

MCPサーバーについて、最初はどこかにあるサーバーを指すのかと思っていました。
(ただそういうケースもあるらしいですね、自分はまだそのケースを触れられていません)

実際は、基本的にはMCPサーバーと呼んでいるもの自体も、ユーザーのPC上で起動するものでした。

MCPホスト、MCPクライアント

ホスト自体はClaude Desktopや、GithubCopilitなどがあります。

クライアントは、ホストのなかでMCPの通信を司る部分を指し、特定のサービスがMCPに対応することで、ホストにMCPクライアントが用意され、MCPホストと呼べる状態になるのかもしれません。

「Why」について、やっと追いついてきたこと

言っていることはわかるんだけど、何のために使うの?についても結構モヤモヤしていました。

何のために使うか、という観点、以下のように理解できました。

これまで(これまでがちょっと前を指すなら私が時代遅れだった)

  • デフォルトのサービス群は提供された機能しか使えませんでした
    • Claudeのアーティファクト
    • OpenAI,Geminiのdeepresearch
    • あとは何か色々あるけど、各種サービスがいろいろ連携を追加、それに一喜一憂
  • てことは提供されないとそれ以上のことができない
  • で、私はLangChainなどでLLMを用いて、LLMをベースに、ファイルやAPIなど、+αに作用するプログラムを作成して遊んでいました

MCPを用いることで

ホストはMCPに対応することで、プロトコルに基づいて、いろいろな機能拡張が可能になった。
そして、それぞれの目線でも、以下のようなメリットが生まれる。

利用者

  • 自分で使いたい機能を取り込むことができる
  • 好きなMCPホストから、好きなサービスを利用できる

開発者

  • 自身のサービスに対して、MCPサーバーを提供することで、LLMアプリケーションから利用可能にするIFを提供

ああ、ここまで来ると、MCPがUSB-Cポートに例えられる意味が理解できてきました。

Think of MCP like a USB-C port for AI applications.

もやもやの源泉

一番の根本原因は早く一次情報にアクセスして、やってみなかったことにあるのですが、そこはさておき。

自分のなかで理解が難しかった一番の理由は、LangChainのToolの実装の視点が色濃く残っていたためと思われます。
「不要になる」「サーバーで機能が提供される」みたいなのを見て、ライブラリが提供されるのか、REST APIを呼び出すのか、それは既存と何が違うのか?みたいなことを考えていました。

じゃあLangChainでどう使うのか?

LangChainアプリケーション(エージェント)にMCPクライアントを用意するみたいです。

世の中に全くついていけていませんが、以下のようなものを用いて解決できるようです。使ってみよう。

LangChainのToolなどは不要になるのか?MCPに置き換わるのか?

そんな感じはしていません。

これまでを踏まえて、MCPのポイントとして、以下が挙げられると考えます。

  • プロトコルをベースとした機能の提供
  • 共有性

そのため、そもそも提供されていない、独自のビジネスロジックである場合は、当たり前ですが実装が必要になります。

そして、それをMCPベースに作成するかは、そのユースケースにおける取捨選択と感じました。

まとめ

今回、今更感ありますが、MCPについてリサーチして、モヤモヤしていたことを理解してみました。

その過程で、GithubCopilotから「playwright mcp」を使用しましたが、自然言語でWebブラウザを操作できるという面白さと、
なにより、既存サービスだけではできないことを、MCPを用いることで、既存サービス+MCPで、機能拡張できることに驚きでした。

MCPについては、MCPクライアントとサーバーの通信や機能提供など、まだまだ気になることは多いので、引き続きリサーチしつつ、何か作ってみたいですね。

MCPはLLMアプリ、エージェント開発において、銀の弾丸みたいなすごいものなのかと思っていましたが、なんとなく標準化に近いのかな...なんて今回思いました。引き続き、使って楽しい、みたいなところだけではなく、アーキテクチャなどの部分も理解を深めていきたいと思います。

理論というよりとっかかり、モヤモヤの解消ネタでしたが、参考になれば幸いです。
以上です。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?