Simple MCP Client with LangGraph Agent について
TypeScript と Express.js で構築されたチャットサービスで、LangGraph エージェントが複数の MCP サーバーのツールを利用します。MCP ツールを使ったストリーミング応答が必要なアプリケーション向けです。
主な機能
- 01LangGraph による対話エージェント
- 02複数の MCP サーバーに接続
- 03対話中に MCP ツールを利用
- 04チャット応答のストリーミング
- 05TypeScript の Express.js API
活用シーン
- 01エージェントを使ったチャット API の構築
- 021 つの対話で複数 MCP サーバーのツールを利用
MCP 対応
リクエストで指定された MCP サーバーに接続し、利用可能なツールを取得して LangGraph エージェントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
インストール方法は未掲載です
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ツール一覧はまだ取得されていません
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LangGraph エージェントを使用したシンプルな MCP クライアント
Express.js と TypeScript を使用し、LangGraph エージェントで複数の MCP サーバーに対応する軽量な MCP(Model Context Protocol)クライアントを実装します。
特長
- TypeScript を使用した Express.js サーバー
- 会話を処理する LangGraph エージェント
- ツール連携用の MCP クライアント
- ストリーミング応答
セットアップ
- リポジトリをクローンします
- 依存関係をインストールします:
npm install - 次の変数を含む
.envファイルを作成します:PORT=3000 NODE_ENV=development CORS_ORIGIN=* ANTHROPIC_API_KEY=your_anthropic_api_key - サーバーをビルドして起動します:
npm run buildnpm start
API エンドポイント
チャットの初期化
GET /api/chat/init
チャットの生成
POST /api/chat
リクエストボディ:
{
"input": "Hello, how can you help me?",
"characterId": "character_123",
"llmConfig": {
"model": "claude-3-opus-20240229",
"verbose": true
},
"chatHistory": [],
"mcpServers": [
{
"name": "weather-service",
"version": "1.0",
"url": "https://example-mcp-server.com",
"key": "optional_api_key"
}
]
}
チャットの終了
GET /api/chat/close
MCP 連携
サーバーはリクエストで指定された MCP サーバーに接続し、LangGraph エージェントが使用できる利用可能なツールを取得します。
開発
自動リロードを有効にして開発サーバーを実行します:
npm run dev
使用例
// Send a message and stream the response
const response = await fetch("/api/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
input: "What's the weather in New York?",
characterId: "agent1",
chatHistory: [],
mcpServers: [
{
name: "weather-service",
version: "1.0",
url: "https://my-mcp-server.com",
},
],
}),
});
// Read the streaming response
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const text = new TextDecoder().decode(value);
const events = text.split("\n\n").filter(Boolean);
for (const event of events) {
const data = JSON.parse(event);
console.log(data);
}
}
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。