0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Model Context Protocol完全解説 30日間シリーズ - Day 10【MCP実装 #10】MCPクライアント実装入門:Claude Desktopとの連携方法

Posted at

はじめに

この記事は、QiitaのModel Context Protocol(以下、MCP)解説シリーズの第10回です。

今回は、これまでに作成したMCPサーバーを実際に利用する方法を学びます。開発中のサーバーの動作を簡単に確認できるClaude Desktopというクライアントとの連携方法をステップ・バイ・ステップで解説します。


🛠️ MCPクライアントとは?

MCPクライアントは、MCPサーバーと通信するアプリケーションです。LLMはクライアントを通じてMCPサーバーに接続し、サーバーが提供するResourcesやToolsを利用します。

開発者が自身でMCPクライアントを実装することも可能ですが、今回はClaude Desktopというアプリケーションを使用します。これにより、簡単にサーバーとLLMの連携を試すことができます。

MCPの通信方式

MCPサーバーとクライアント間の通信には、主に以下の方式が使用されます:

  • stdio: 標準入出力を通じた通信(最も一般的)
  • SSE(Server-Sent Events): HTTP上でのリアルタイム通信
  • WebSocket: 双方向リアルタイム通信

Claude Desktopでは、主にstdio方式を使用してローカルのMCPサーバーと通信します。


🚀 ステップ1:Claude Desktopのインストール

Anthropic社の公式サイトからClaude Desktopをダウンロードしてインストールします。

  • 公式サイト: https://claude.ai/download
  • 対応OS:
    • macOS(Intel/Apple Silicon両対応)
    • Windows(64-bit)
    • Linux(一部サポート)

インストール手順

  1. ダウンロード: 上記URLから適切なインストーラーをダウンロード
  2. インストール: ダウンロードしたファイルを実行してインストール
  3. 初回設定: Anthropicアカウントでログイン(必要に応じてアカウント作成)

🚀 ステップ2:MCPサーバーの設定ファイル作成

Claude DesktopでMCPサーバーを使用するには、設定ファイルを作成する必要があります。

設定ファイルの場所

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Python版MCPサーバーの設定例

Day 9で作成したPython版ファイルサーバーを使用する場合:

{
  "mcpServers": {
    "filesystem": {
      "command": "python",
      "args": ["/path/to/your/project/server.py"]
    }
  }
}

仮想環境を使用している場合:

{
  "mcpServers": {
    "filesystem": {
      "command": "/path/to/your/project/mcp-env/bin/python",
      "args": ["/path/to/your/project/server.py"]
    }
  }
}

TypeScript版MCPサーバーの設定例

TypeScript版を使用する場合:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["ts-node", "/path/to/your/project/server.ts"],
      "env": {
        "NODE_ENV": "development"
      }
    }
  }
}

設定のポイント

  • 絶対パスの使用: プロジェクトへのパスは絶対パスで指定する
  • 実行権限の確認: スクリプトファイルに実行権限があることを確認
  • 環境変数: 必要に応じてenvセクションで環境変数を設定

🚀 ステップ3:MCPサーバーの動作確認

設定ファイルを作成する前に、MCPサーバーが正常に動作することを確認しましょう。

Python版の場合

# プロジェクトディレクトリに移動
cd /path/to/your/project

# 仮想環境をアクティベート(使用している場合)
source mcp-env/bin/activate

# サーバーを起動してテスト
python server.py

サーバーが正常に起動し、以下のようなログが出力されることを確認:

File system MCP server running on stdio

TypeScript版の場合

# プロジェクトディレクトリに移動
cd /path/to/your/project

# サーバーを起動してテスト
npx ts-node server.ts

動作テスト方法

サーバーが起動したら、Ctrl+Cで一旦終了し、Claude Desktopでの設定に進みます。Claude Desktopが自動的にサーバーを起動・管理するためです。


🚀 ステップ4:Claude DesktopでMCPサーバーを利用

1. Claude Desktopの再起動

設定ファイルを作成・更新した後、Claude Desktopを完全に再起動します:

  1. Claude Desktopを終了
  2. アプリケーションを再起動
  3. MCPサーバーが自動的に起動されることを確認

2. MCP接続の確認

Claude Desktopの画面で、MCPサーバーが正常に接続されているかを確認できます:

  • ツールアイコン: チャット画面にツール使用可能を示すアイコンが表示される
  • 接続状態: 設定画面でMCPサーバーの接続状態を確認可能

3. MCPサーバーのテスト

以下のような質問をして、MCPサーバーの機能をテストしてみましょう:

基本的なファイル操作のテスト

データディレクトリにあるファイルを一覧表示してください。
hello.txtファイルの内容を読み込んで表示してください。
新しいファイル「test.txt」を作成して、「This is a test file.」という内容を書き込んでください。

より複雑なタスクのテスト

データディレクトリにあるすべてのテキストファイルを読み込んで、単語数を教えてください。
「meeting-notes.md」というファイルを作成して、今日の日付で簡単な会議メモテンプレートを作成してください。

4. Claudeの応答例

正常に動作している場合、以下のような応答が期待されます:

質問: 「データディレクトリにあるファイルを一覧表示してください。」

Claudeの応答:

データディレクトリの内容を確認します。

Contents of .:

Directories:
📁 subfolder/

Files:
📄 hello.txt (20 bytes)
📄 README.md (156 bytes)
📄 test.txt (25 bytes)

データディレクトリには3つのファイルと1つのサブフォルダがあります。

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

よくある問題と解決方法

1. MCPサーバーが接続されない

症状: Claude Desktopでツールが使用できない

原因と解決方法:

  • パスの間違い:設定ファイルのパスを絶対パスで再確認
  • 権限の問題:スクリプトファイルに実行権限を付与
  • 依存関係の問題:必要なライブラリがインストールされているか確認
# 実行権限の付与
chmod +x server.py

# Python依存関係の確認
pip list | grep mcp

2. パーミッションエラー

症状: ファイル操作時にエラーが発生

解決方法:

  • データディレクトリの権限を確認
  • MCPサーバーの実行ユーザー権限を確認
# ディレクトリ権限の確認・設定
chmod 755 data/
chmod 644 data/*

3. ログの確認方法

Claude Desktopのログ確認:

  • macOS: ~/Library/Logs/Claude/
  • Windows: %LOCALAPPDATA%\Claude\logs\

MCPサーバーのログ確認:
サーバーコードにログ出力を追加:

import logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('mcp_server.log'),
        logging.StreamHandler()
    ]
)

🎯 応用例:実践的な使い方

1. 開発ドキュメントの管理

プロジェクトのREADMEファイルを作成して、以下の内容を含めてください:
- プロジェクト概要
- インストール手順
- 使用方法
- API仕様

2. ログファイルの解析

ログディレクトリにあるエラーログを分析して、最も頻発している問題を特定してください。

3. 設定ファイルの生成

アプリケーション用の設定ファイル(config.json)を作成して、デフォルト設定を含めてください。

🔐 セキュリティ考慮事項

本番環境での注意点

  1. アクセス制御: データディレクトリへのアクセスを適切に制限
  2. ログ管理: 機密情報がログに出力されないよう注意
  3. 入力検証: ファイルパスやコンテンツの検証を強化
  4. 監査ログ: ファイル操作の監査ログを記録

開発環境での推奨事項

{
  "mcpServers": {
    "filesystem-dev": {
      "command": "python",
      "args": ["/path/to/dev/server.py"],
      "env": {
        "MCP_ENV": "development",
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}

🎯 まとめ

この記事で学んだ内容:

MCPクライアント・サーバー連携の理解

  • MCPサーバー: データとツールを提供する「知識の倉庫」
  • Claude Desktop: ユーザーとサーバーを繋ぐ「インテリジェントな仲介者」
  • 設定ファイル: 両者を繋ぐ「設計図」

実践的なスキル

  • Claude Desktopの設定方法
  • MCPサーバーのデバッグ手法
  • トラブルシューティングの進め方
  • セキュリティを考慮した運用方法

次のステップ

この基盤を使って、以下のような発展的なMCPサーバーの開発に挑戦できます:

  • データベース連携サーバー
  • REST API統合サーバー
  • 機械学習モデル連携サーバー
  • カスタムビジネスロジック実装サーバー

次回は、MCPの高度な機能であるSamplingについて深く掘り下げ、LLMがより複雑なタスクを自律的に実行できるようにする方法を解説します。お楽しみに!

📚 参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?