Demo MCP Basic について
Demo MCP Basicは、AI SDKとGoogle AIモデルを使うMCPサーバーとクライアントのTypeScript例です。サーバーの計算ツールを生成中に検出し、利用する流れを示します。
主な機能
- 01加算と減算の計算ツール
- 02MCPサーバーとクライアントの例
- 03AI SDK経由のGoogle AIモデル
- 04生成中のツール検出と利用
活用シーン
- 01基本的なMCPクライアント・サーバー連携の確認
- 02Google AIモデルによる計算ツールの利用
- 03HTTP SSE経由でのMCPサーバーのテスト
MCP 対応
サーバーはMCPクライアントに簡単な計算ツールを公開します。サンプルクライアントはHTTP SSEで接続してツールを取得し、テキスト生成中にGoogle AIモデルから利用できるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Demo MCP Basic
このプロジェクトでは、**Model Context Protocol(MCP)**を使用した基本的なクライアントとサーバー間のやり取りを実演します。MCP を使用すると、AI SDK(Google Gemini/Vertex AI など)経由でアクセスする AI モデルが、別のサーバープロセスから提供される外部ツールやリソースを安全に検出して利用できます。
この例では:
- サーバー(
src/server/)は MCP プロバイダーとして動作し、簡単な計算ツール(加算、減算など)を提供します。 - クライアント(
src/client/)は AI SDK を使用して Google AI モデルとやり取りし、MCP サーバーに接続することで、生成中に AI がサーバーのツールを利用できるようにします。
この構成は、MCP サーバーでホストされるカスタム機能へのアクセスを AI モデルに許可することで、その機能を拡張できることを示しています。
前提条件
- Node.js(
package.jsonで指定されているバージョン >=23.0.0) - npm(Node.js に付属)
- Google AI(Gemini)API キー。Google AI Studioから取得できます。(Gemini モデルの使用に必要です)
セットアップ
-
リポジトリをクローンします:
git clone [email protected]:bertrandgressier/demo-ts-mcp-client-server.git cd demo-mcp-basic -
依存関係をインストールします:
npm install -
環境ファイルを作成します: 環境ファイルのサンプル
.env.exampleを、新しいファイル.envにコピーします:cp .env.example .env次に、
.envファイルを編集して、実際の API キーと設定を追加します。必須および任意の変数は次のとおりです:# Google Studio Models (Gemini) に必要 GOOGLE_API_KEY=YOUR_GOOGLE_API_KEY # Google Vertex AI Models に必要 VERTEX_PROJECT_ID=YOUR_VERTEX_PROJECT_ID # 任意:設定されていない場合はデフォルトで 'us-central1' # VERTEX_LOCATION=your-vertex-location # 任意:Vertex AI のサービスアカウントキーファイルへのパス。設定されていない場合はルートの 'vertex-key.json' がデフォルトで使用されます。 # VERTEX_KEY_FILE=path/to/your/vertex-key.jsonYOUR_GOOGLE_API_KEYとYOUR_VERTEX_PROJECT_IDを実際の認証情報に置き換えてください。 Vertex AI のキーファイルを使用する場合は、正しい場所(ルートのvertex-key.jsonなど)に配置するか、VERTEX_KEY_FILEに正しいパスを指定してください。- 重要:
.gitignoreファイルは、.envとvertex-key.jsonが Git にコミットされないように設定されています。
- 重要:
利用可能なスクリプト
-
TypeScript をビルド:
npm run buildsrcの TypeScript コードをdist内の JavaScript にコンパイルします。 -
本番サーバーを起動:
npm run start # or specifically npm run start:serverプロジェクトをビルド(まだビルドされていない場合)して、
dist/server/server.jsからコンパイル済みのサーバーを実行します。 -
本番クライアントを起動:
npm run start:clientdist/client/client.jsからコンパイル済みのクライアントを実行します。 -
開発モードでサーバーを実行:
npm run dev:server別途ビルドせずに、
ts-node(または--experimental-transform-typesを使用する同等の仕組み)でサーバーを直接実行します。 -
監視付きの開発モードでサーバーを実行:
npm run dev:server:watchnodemonを使用してサーバーを実行し、src/serverディレクトリで変更が検出されると自動的に再起動します。 -
開発モードでクライアントを実行:
npm run dev:clientts-node(または同等の仕組み)でクライアントを直接実行します。
Example Client (src/client/client.ts)
主要なクライアントスクリプトの例では、以下の処理を示します。
- MCP サーバーに接続します: ローカルで実行中の MCP サーバー(
http://localhost:3001/sseを想定)への接続を確立します。 - ツールを取得します: 接続したサーバーが提供するツールの一覧を取得します。
- AI モデルを設定します:
.envに設定された環境変数と、場合によってはsrc/models/google-ai-provider.tsに応じて、Google AI モデル(API キー経由の Gemini または Vertex AI)を設定した AI SDK(generateText)を使用します。 - プロンプトを実行します: プロンプト(
6 + 12)とともに、取得したツールを使って計算を解くよう AI に指示するシステムメッセージを送信します。 - 結果を出力します: サーバーから提供されたツールを使用する場合はその処理を経て、AI モデルが生成した最終的なテキスト応答を出力します。
このクライアントは、AI 生成のワークフロー内でツールを活用するために、アプリケーションが MCP サーバーと連携する方法を基本的に示すものです。
Project Structure
src/:TypeScript のソースコードが含まれています。client/:MCP クライアントアプリケーションのコードです。server/:MCP サーバーアプリケーションのコードです。model.ts:AI モデルの初期化と環境変数の読み込みを処理します。
dist/:コンパイル済みの JavaScript コードが含まれています(npm run buildの実行後)。.env:環境変数(API キーなど)を保存します。このファイルはコミットしないでください。package.json:プロジェクトのメタデータと依存関係を記述します。tsconfig.json:TypeScript コンパイラーの設定です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。