Learning about MCP について
Learning about MCP は、Node ベースの MCP サーバーを学ぶためのプロジェクトです。MCP の基本要素やトランスポート、サーバー側のエラー処理を説明し、サンプリングとルートは未実装としています。
主な機能
- 01Node ベースのサーバー実装
- 02stdio と SSE の説明
- 03MCP の基本要素の解説
- 04SDK によるエラー処理
活用シーン
- 01MCP サーバー概念の学習
- 02トランスポート方式の確認
- 03サーバー側ツールのエラー処理の理解
MCP 対応
MCP サーバーを学ぶためのプロジェクトです。リソース、プロンプト、ツール、サンプリング、ルート、stdio と SSE のトランスポートを扱い、サンプリングとルートは未実装です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP について学ぶ
TODO:
-
サンプリングを実装する https://modelcontextprotocol.io/docs/concepts/sampling
-
ルートを実装する。
学んだこと
-
トランスポート方式は 2 種類あります。
-
stdio 経由です。クライアントが使用するサーバーバイナリへのパスを指定する必要があります。
-
sse 経由です。サーバーのネットワークアドレスを指定する必要があります。
- このトランスポート方式のほうが、より汎用的だと思います。サーバーをクライアントとは別にデプロイできます。
-
-
サーバーに
fastifyを使いたかったのですが、既存の SDK では動作させられませんでした。- これは、Node だけを使ってこのようなサーバーを書く方法を学ぶ絶好の機会です。
-
MCP に関連する中核的なプリミティブは次のとおりです。
-
リソース — PDF やデータベースのレコードなどのデータで、クライアントがユーザーのクエリに対する適切な応答を作成するために使用できます。
-
プロンプト — 「prompt to x」のフローで、テキストボックスの下に表示されることがある、あらかじめ定義されたプロンプトのようなものです。
-
ツール — LLM がユーザーに代わってアクションを実行できるようにします。ツールを呼び出し、その結果をクライアントに返すのはサーバーです。クライアントの役割は、その結果を LLM に渡すことです。
-
サンプリング — 正直なところ、まだ何なのかよく分かっていません。
-
ルート — サーバーの「境界」を定義します。たとえば、サーバーがファイルシステムを操作するツールを公開している場合、「ルート」に特定のディレクトリを含めることで、そのツールの対象をそのディレクトリだけに限定できます。
-
トランスポート — これについては上で説明しました。STDIO と SSE のトランスポートがあります。メッセージは JSON-RPC 2.0 形式で構成されます。
-
-
SDK にエラーハンドリングが組み込まれている点がとても気に入っています。
- サーバーの
toolコールバック関数でエラーをスローすると、クライアント SDK が処理して、適切に応答してくれます。
- サーバーの
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。