Skip to content

Latest commit

 

History

History
162 lines (120 loc) · 6.41 KB

File metadata and controls

162 lines (120 loc) · 6.41 KB

完全なMCPクライアント例

このディレクトリには、さまざまなプログラミング言語で記述された完全で動作するMCPクライアントの例が含まれています。各クライアントは、メインのREADME.mdチュートリアルで説明されているすべての機能を示しています。

利用可能なクライアント

1. Javaクライアント (client_example_java.java)

  • トランスポート: HTTP経由のSSE (Server-Sent Events)
  • ターゲットサーバー: http://localhost:8080
  • 機能:
    • 接続の確立とping
    • ツールのリスト表示
    • 計算機操作(加算、減算、乗算、除算、ヘルプ)
    • エラー処理と結果の抽出

実行方法:

# Ensure your MCP server is running on localhost:8080
javac client_example_java.java
java client_example_java

2. C#クライアント (client_example_csharp.cs)

  • トランスポート: Stdio (標準入力/出力)
  • ターゲットサーバー: dotnet runを介したローカル.NET MCPサーバー
  • 機能:
    • Stdioトランスポートによる自動サーバー起動
    • ツールとリソースのリスト表示
    • 計算機操作
    • JSON結果の解析
    • 包括的なエラー処理

実行方法:

dotnet run

3. TypeScriptクライアント (client_example_typescript.ts)

  • トランスポート: Stdio (標準入力/出力)
  • ターゲットサーバー: ローカルNode.js MCPサーバー
  • 機能:
    • MCPプロトコルの完全サポート
    • ツール、リソース、プロンプト操作
    • 計算機操作
    • リソースの読み取りとプロンプトの実行
    • 強力なエラー処理

実行方法:

# First compile TypeScript (if needed)
npm run build

# Then run the client
npm run client
# or
node client_example_typescript.js

4. Pythonクライアント (client_example_python.py)

  • トランスポート: Stdio (標準入力/出力)
  • ターゲットサーバー: ローカルPython MCPサーバー
  • 機能:
    • 非同期処理(async/await)パターンの利用
    • ツールとリソースの発見
    • 計算機操作のテスト
    • リソース内容の読み取り
    • クラスベースの構成

実行方法:

python client_example_python.py

すべてのクライアントに共通する機能

各クライアント実装は以下を示します:

  1. 接続管理

    • MCPサーバーへの接続の確立
    • 接続エラーの処理
    • 適切なクリーンアップとリソース管理
  2. サーバー探索

    • 利用可能なツールのリスト表示
    • 利用可能なリソースのリスト表示(対応している場合)
    • 利用可能なプロンプトのリスト表示(対応している場合)
  3. ツールの呼び出し

    • 基本的な計算機操作(加算、減算、乗算、除算)
    • サーバー情報のヘルプコマンド
    • 適切な引数の渡しと結果の処理
  4. エラー処理

    • 接続エラー
    • ツール実行エラー
    • 優雅な失敗とユーザーへのフィードバック
  5. 結果の処理

    • レスポンスからテキストコンテンツを抽出
    • 読みやすい形式での出力
    • 異なるレスポンス形式の処理

前提条件

これらのクライアントを実行する前に、以下を確認してください:

  1. 対応するMCPサーバーが実行中であること (../01-first-server/から)
  2. 選択した言語の必要な依存関係がインストールされていること
  3. 適切なネットワーク接続 (HTTPベースのトランスポートの場合)

実装間の主な違い

言語 トランスポート サーバー起動方法 非同期モデル 主なライブラリ
Java SSE/HTTP 外部 同期 WebFlux, MCP SDK
C# Stdio 自動 Async/Await .NET MCP SDK
TypeScript Stdio 自動 Async/Await Node MCP SDK
Python Stdio 自動 AsyncIO Python MCP SDK
Rust Stdio 自動 Async/Await Rust MCP SDK, Tokio

次のステップ

これらのクライアント例を探索した後:

  1. クライアントを修正して新しい機能や操作を追加
  2. 独自のサーバーを作成し、これらのクライアントでテスト
  3. 異なるトランスポートを試す (SSE vs. Stdio)
  4. MCP機能を統合したより複雑なアプリケーションを構築

トラブルシューティング

よくある問題

  1. 接続拒否: MCPサーバーが期待されるポート/パスで実行されていることを確認
  2. モジュールが見つからない: 選択した言語のMCP SDKをインストール
  3. アクセス拒否: Stdioトランスポートのファイル権限を確認
  4. ツールが見つからない: サーバーが期待されるツールを実装していることを確認

デバッグのヒント

  1. MCP SDKで詳細ログを有効化
  2. サーバーログを確認してエラーメッセージを探す
  3. クライアントとサーバー間でツール名とシグネチャが一致していることを確認
  4. まずMCPインスペクターでテストしてサーバー機能を検証

関連ドキュメント

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当方は一切の責任を負いません。