MCP公式ドキュメント 日本語版
  1. クイックスタート
MCP公式ドキュメント 日本語版
  • 始める
    • 導入
    • サンプルサーバー
    • クライアントの例
    • クイックスタート
      • サーバー開発者向け
      • クライアント開発者向け
      • Claude デスクトップ ユーザー向け
  • チュートリアル
    • LLMs を使用した MCP の構築
    • デバッグ
    • Inspector
  • コンセプト
    • リソース
    • コアアーキテクチャ
    • プロンプト
    • ツール
    • サンプリング
    • ルーツ
    • トランスポート
  • 発達
    • 最新情報
    • ロードマップ
    • 貢献
  1. クイックスタート

クライアント開発者向け

すべての MCP サーバーと統合できる独自のクライアントの構築を開始します。
このチュートリアルでは、MCP サーバーに接続する LLM 搭載のチャットボット クライアントを構築する方法を学習します。最初のサーバー構築の基本をガイドするサーバー クイックスタートを完​​了しておくと役立ちます。
Python
このチュートリアルの完全なコードはここにあります。

システム要件#

開始する前に、システムが次の要件を満たしていることを確認してください。
MacまたはWindowsコンピュータ
最新のPythonバージョンがインストールされている
最新バージョンのuvがインストールされています

環境の設定#

まず、 uvを使用して新しい Python プロジェクトを作成します。

APIキーの設定#

Anthropic Consoleから Anthropic API キーが必要になります。
保存するための.envファイルを作成します。
キーを.envファイルに追加します。
.gitignoreに.envを追加します:
ANTHROPIC_API_KEY安全に保管してください。

クライアントの作成#

基本的なクライアント構造#

まず、インポートを設定して基本的なクライアント クラスを作成しましょう。

サーバー接続管理#

次に、MCP サーバーに接続するメソッドを実装します。

クエリ処理ロジック#

次に、クエリを処理し、ツール呼び出しを処理するためのコア機能を追加しましょう。

インタラクティブチャットインターフェース#

次に、チャット ループとクリーンアップ機能を追加します。

メインエントリーポイント#

最後に、メインの実行ロジックを追加します。
完全なclient.pyファイルはここにあります。

主要コンポーネントの説明#

1. クライアントの初期化#

MCPClientクラスはセッション管理とAPIクライアントを初期化します
適切なリソース管理のためにAsyncExitStackを使用する
Claude とのやり取りのために Anthropic クライアントを設定します

2. サーバー接続#

PythonとNode.jsサーバーの両方をサポート
サーバースクリプトの種類を検証します
適切なコミュニケーションチャネルを設定する
セッションを初期化し、利用可能なツールを一覧表示します

3. クエリ処理#

会話の文脈を維持する
クロードの応答とツール呼び出しを処理する
クロードとツール間のメッセージフローを管理します
結果を統合して一貫した回答を導き出す

4. インタラクティブインターフェース#

シンプルなコマンドラインインターフェースを提供します
ユーザー入力を処理し、応答を表示します
基本的なエラー処理を含む
優雅な退出を可能にする

5. リソース管理#

リソースの適切なクリーンアップ
接続の問題に対するエラー処理
正常なシャットダウン手順

一般的なカスタマイズポイント#

1.
ツールの取り扱い
特定のツールタイプを処理するためにprocess_query()を変更する
ツール呼び出しのカスタムエラー処理を追加する
ツール固有の応答フォーマットを実装する
2.
応答処理
ツール結果のフォーマットをカスタマイズする
応答フィルタリングまたは変換を追加する
カスタムログを実装する
3.
ユーザーインターフェース
GUIまたはWebインターフェースを追加する
豊富なコンソール出力を実装する
コマンド履歴または自動補完を追加する

クライアントの実行#

任意の MCP サーバーでクライアントを実行するには:
サーバーのクイックスタートから天気のチュートリアルを続行する場合、コマンドは次のようになります: python client.py .../weather/src/weather/server.py
クライアントは次のことを行います。
1.
指定されたサーバーに接続する
2.
利用可能なツールの一覧
3.
インタラクティブなチャット セッションを開始すると、次のことが可能になります。
クエリを入力
ツールの実行を確認する
Claude からの応答を取得する
サーバーのクイックスタートから天気サーバーに接続した場合の表示例を次に示します。
img

仕組み#

クエリを送信する場合:
1.
クライアントはサーバーから利用可能なツールのリストを取得します
2.
あなたの質問はツールの説明とともにクロードに送信されます
3.
Claude はどのツール(ある場合)を使用するかを決定します
4.
クライアントはサーバーを介して要求されたツール呼び出しを実行します。
5.
結果はクロードに返送される
6.
Claude は自然言語の応答を提供します
7.
応答が表示されます

ベストプラクティス#

1.
エラー処理
ツール呼び出しは常にtry-catchブロックで囲む
意味のあるエラーメッセージを提供する
接続の問題を適切に処理する
2.
リソース管理
適切なクリーンアップにはAsyncExitStackを使用する
完了したら接続を閉じる
サーバーの切断を処理する
3.
安全
APIキーを.envに安全に保存する
サーバー応答を検証する
ツールの権限には注意する

トラブルシューティング#

サーバーパスの問題#

サーバースクリプトへのパスが正しいことを再確認してください
相対パスが機能しない場合は絶対パスを使用してください
Windowsユーザーの場合、パスにはスラッシュ(/)またはエスケープされたバックスラッシュ(\)を使用してください。
サーバー ファイルの拡張子が正しいことを確認します (Python の場合は .py、Node.js の場合は .js)
正しいパスの使用例:

応答タイミング#

最初の応答が返ってくるまでに最大30秒かかる場合があります
これは正常であり、次の場合に発生します:
サーバーが初期化される
Claude はクエリを処理します
ツールが実行されています
その後の対応は通常より速くなります
この最初の待機期間中はプロセスを中断しないでください

一般的なエラーメッセージ#

次のような表示が出た場合:
FileNotFoundError : サーバーパスを確認してください
Connection refused : サーバーが実行中であり、パスが正しいことを確認してください
Tool execution failed : ツールに必要な環境変数が設定されていることを確認してください
Timeout error : クライアント構成のタイムアウトを増やすことを検討してください
前へ
サーバー開発者向け
次へ
Claude デスクトップ ユーザー向け
Built with