MCP Chat with Claude について
MCP Chat with Claudeは、Expressホストとブラウザのチャット画面を介して、Claudeを複数のMCPサーバーに接続するTypeScript製ウェブアプリのサンプルです。ツールの検出や呼び出しの振り分け、実行内容の表示を示します。
主な機能
- 01ブラウザ上のClaudeチャット
- 02複数のMCPサーバーへの接続
- 03ツールの動的な検出
- 04呼び出し先サーバーへの振り分け
- 05会話とツール詳細の表示
活用シーン
- 01MCPツールを使うウェブチャットの実演
- 02複数サーバーのツールを使ったClaudeのテスト
- 03ExpressベースのMCPホスト例を基にした開発
MCP 対応
Expressホストが複数のMCPサーバーに接続し、ツールを検出してClaudeに提示し、呼び出しを該当サーバーへ振り分けます。単体で動作するMCPクライアントのサンプルも含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Claude との MCP チャット
Model Context Protocol(MCP)と Anthropic の Claude LLM の連携を実演するフルスタックアプリケーションです。MCP ツールを活用するインタラクティブなチャットインターフェースを提供します。
プロジェクトの概要
このプロジェクトは、次の3つの主要コンポーネントで構成されています。
- 複数の MCP サーバー:LLM が利用できるさまざまな専門ツールを提供する、Model Context Protocol を実装した Node.js サーバーです。
- ホストアプリ:ユーザー、Claude AI、MCP サーバー間の仲介役となる Express サーバーです。
- ウェブクライアント:ホストアプリと通信する、ブラウザベースのチャットインターフェースです。
機能
- Claude AI と対話できるチャットインターフェース
- 会話とツールの実行内容を表示する2パネル UI
- 複数の MCP サーバーからツールを動的に検出
- 各サーバーの異なるパラメーターを持つ専門ツールに対応
- MCP を介した Claude のツール使用を適切に処理
プロジェクト構成
├── client/ # Host app & web client
│ ├── dist/ # Compiled TypeScript
│ ├── host-app.ts # Host application server
│ ├── chat.js # Frontend chat interface logic
│ ├── index.html # Main web interface
│ ├── styles.css # Styling for web interface
│ ├── package.json # Client dependencies
│ └── mcp-client-example.ts # Example MCP client for testing
│
├── server/ # MCP servers
│ ├── dist/ # Compiled TypeScript
│ ├── mcp-server-todoplan.ts # TodoPlan MCP server implementation
│ ├── mcp-server-project.ts # Project MCP server implementation
│ └── package.json # Server dependencies
│
├── .gitignore # Git ignore file
└── README.md # Project documentation
前提条件
- Node.js 17 以降
- npm または yarn
- Anthropic API キー
インストール
-
リポジトリをクローンします。
git clone https://github.com/jiangyan/typescript-mcp-demo.git cd typescript-mcp-demo -
クライアントとサーバーの両方の依存関係をインストールします。
cd server npm install cd ../client npm install -
クライアントディレクトリに、Anthropic API キーを記述した
.envファイルを作成します。ANTHROPIC_API_KEY=your-api-key-here MCP_SERVER_TODOPLAN_URL=http://localhost:8000/sse MCP_SERVER_PROJECT_URL=http://localhost:8001/sse PORT=3000 -
サーバーディレクトリに
.envファイルを作成します。MCP_SERVER_TODOPLAN_PORT=8000 MCP_SERVER_PROJECT_PORT=8001
セットアップと起動
ステップ1:MCP サーバーを起動する
# Terminal 1: Start the TodoPlan MCP server
cd server
npm run build:todoplan
npm run start:todoplan
# Terminal 2: Start the Project MCP server
cd server
npm run build:project
npm run start:project
TodoPlan MCP サーバーはデフォルトでポート8000、Project MCP サーバーはデフォルトでポート8001で起動します。
ステップ2:ホストアプリ(ウェブサーバー)を起動する
cd client
npm run build
npm start
ウェブサーバーはデフォルトでポート3000で起動します。
ステップ3:チャットインターフェースにアクセスする
ブラウザーを開き、次の場所にアクセスします。
http://localhost:3000
利用可能な MCP ツール
MCP サーバーは、Claude が利用できる次のツールを提供します。
-
todoplan-server_get-todo:指定したカテゴリーの ToDo 項目を取得します
- パラメーター:
category:文字列(例:"life"、"work"、"family"、"friends")
- パラメーター:
-
todoplan-server_get-plan:全体の計画を取得します
- パラメーター:なし
-
project-server_get-project-details:指定したプロジェクトの詳細を取得します
- パラメーター:
project_name:文字列(例:"Earth"、"Mars"、"Jupiter"、"Saturn")
- パラメーター:
追加の例
このプロジェクトには、ウェブインターフェースを使わずにプログラムから MCP サーバーへ接続する方法を実演する、スタンドアロンの MCP クライアントの例(mcp-client-example.ts)が含まれています。
この例を実行するには:
cd client
npm run client
開発
MCP サーバーの開発
MCP サーバーに新しいツールを追加するには:
- サーバーファイルを開きます(例:
server/mcp-server-todoplan.ts)。 - 既存のパターンに従って、新しいツール定義を追加します。
server.tool("tool-name", { param1: z.string() }, async ({ param1 }) => { // Tool implementation return { content: [{ type: "text", text: "Result" }] }; } ); - サーバーを再ビルドして再起動します。
ホストアプリの開発
ホストアプリは次の要素で構成されています。
- バックエンド(
host-app.ts):Claude および複数の MCP サーバーと通信する Express サーバー - フロントエンド(
chat.js、index.html、styles.css):バックエンドと通信するチャットインターフェース
アーキテクチャ
┌─────────────┐ ┌────────────────┐ ┌───────────────┐
│ │ │ │ │ │
│ Web UI │◄─────►│ Host App │◄─────►│ MCP Servers │
│ (Browser) │ │ (Express) │ │ (Node.js) │
│ │ │ │ │ │
└─────────────┘ └───────┬────────┘ └───────────────┘
│
▼
┌───────────────┐
│ │
│ Claude API │
│ (Anthropic) │
│ │
└───────────────┘
複数の MCP サーバーの実装
このプロジェクトでは、Claude がさまざまな専門サーバーのツールにアクセスできる、マルチサーバー MCP アーキテクチャを実装しています。
サーバーの設定
このプロジェクトには、次の2つの異なる MCP サーバーが含まれています。
-
TodoPlan MCP サーバー(
server/mcp-server-todoplan.ts):ToDo と計画を管理するツールを提供しますget-todo:指定したカテゴリーの ToDo 項目を取得しますget-plan:全体の計画を取得します
-
Project MCP サーバー(
server/mcp-server-project.ts):プロジェクト情報にアクセスするツールを提供しますget-project-details:指定したプロジェクトの詳細を取得します
ホストアプリとの連携
ホストアプリ(client/host-app.ts)は、次の処理を行うよう実装されています。
- 複数の MCP サーバーに同時に接続する
- 名前の競合を避けるため、サーバー名をアンダースコアで区切ってツール名の先頭に付ける(例:
todoplan-server_get-todo) - 先頭の名前に基づいて、ツール呼び出しを適切なサーバーに振り分ける
- LLM に一元化されたツールセットを提示する
クエリの例
複数のサーバーとの連携をテストするには、次のクエリをお試しください。
- 「プロジェクト Earth について教えてください」
- 「仕事カテゴリの ToDo は何ですか?」
- 「仕事カテゴリの ToDo を見つけて、関連するプロジェクトを教えてください」
- 「私の予定は何ですか?」
トラブルシューティング
-
接続の問題:両方の MCP サーバーとホストアプリが実行中であることを確認し、コンソールにエラーメッセージが表示されていないか確認してください。
-
ツールが見つからない:MCP サーバーが実行中であること、ツール名が完全に一致していることを確認してください。
-
API キーのエラー:クライアントの
.envファイルに Anthropic API キーが正しく設定されていることを確認してください。 -
ツールの使用エラー:詳細なエラー情報については、応答パネルを確認してください。
-
無効なツール名の形式:ツール名が Anthropic の要件に沿った形式(英数字、アンダースコア、ハイフンのみ)であることを確認してください。
ライセンス
謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。