プロジェクト

全般

プロフィール

バグ #947

未完了

Claude会話履歴管理 - MCP統合・リモート対応 (Phase 6)

Redmine Admin さんが14日前に追加. 12日前に更新.

ステータス:
進行中
優先度:
高め
担当者:
-
開始日:
2025-07-20
期日:
進捗率:

0%

予定工数:

説明

目的

Claude会話履歴管理システムにMCP (Model Context Protocol) 統合機能を実装し、Claude DesktopからリモートMCPツールとして利用可能にする

MCP統合仕様

Protocol対応

  • MCP Protocol: MCP over HTTP
  • Authentication: OAuth 2.1 + PKCE
  • Transport: Streamable HTTP Transport
  • Claude Desktop: インテグレーション機能使用

OAuth 2.1 認証基盤

# 認証フロー
1. Authorization Request (PKCE対応)
2. Authorization Grant
3. Access Token Request
4. Protected Resource Access

MCP Server実装

// MCP Server機能
- Tools Registration
- Tools Execution 
- Resource Access
- Prompt Templates

実装コンポーネント

1. OAuth認証サーバー

ファイル: /mcp/oauth_server.py

  • PKCE対応認証エンドポイント
  • JWT トークン発行・検証
  • スコープ管理・権限制御
  • /.well-known/openid-configuration

2. MCPサーバー

ファイル: /mcp/server.py

  • MCP Protocol実装
  • HTTP Transport対応
  • WebSocket対応(将来拡張)
  • ツール登録・実行

3. MCP Tools実装

conversation-search

{
  "name": "search_conversations",
  "description": "Claude会話履歴を検索",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {"type": "string"},
      "project_id": {"type": "string"},
      "limit": {"type": "number"}
    }
  }
}

conversation-detail

{
  "name": "get_conversation",
  "description": "会話詳細を取得",
  "inputSchema": {
    "type": "object", 
    "properties": {
      "conversation_id": {"type": "string"},
      "include_messages": {"type": "boolean"}
    },
    "required": ["conversation_id"]
  }
}

conversation-continue

{
  "name": "continue_conversation",
  "description": "Claude API経由で会話継続",
  "inputSchema": {
    "type": "object",
    "properties": {
      "conversation_id": {"type": "string"},
      "message": {"type": "string"},
      "max_tokens": {"type": "number"}
    },
    "required": ["conversation_id", "message"]
  }
}

project-knowledge

{
  "name": "get_project_knowledge",
  "description": "プロジェクト関連知識を取得",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {"type": "string"},
      "query": {"type": "string"},
      "importance_threshold": {"type": "number"}
    },
    "required": ["project_id"]
  }
}

Claude Desktop統合

インテグレーション設定

  1. Claude Desktop: Settings > Integrations
  2. Add Integration:

認証フロー体験

1. Claude Desktop → 認証URL アクセス
2. Browser → OAuth認証画面表示
3. User → 認証許可
4. System → Access Token発行
5. Claude Desktop → MCP Tools利用可能

セキュリティ考慮事項

OAuth 2.1 セキュリティ

  • PKCE必須: コードインターセプト攻撃対策
  • State Parameter: CSRF攻撃対策
  • Short-lived Token: 1時間有効期限
  • Refresh Token: 長期利用対応

API Protection

  • Rate Limiting: ユーザー・エンドポイント別制限
  • Input Validation: 厳格な入力検証
  • Access Control: スコープベース権限管理
  • Audit Logging: アクセス・操作ログ

実装フェーズ

Phase 6.1: 認証基盤

  • OAuth 2.1サーバー実装
  • PKCE対応
  • JWT トークン管理
  • /.well-known エンドポイント

Phase 6.2: MCP Server

  • HTTP Transport実装
  • Tools Registration
  • Request/Response handling
  • Error Handling

Phase 6.3: Tool実装

  • search_conversations
  • get_conversation
  • continue_conversation (将来)
  • get_project_knowledge

Phase 6.4: Claude Desktop統合

  • 認証フロー テスト
  • ツール動作確認
  • エラーハンドリング
  • パフォーマンス最適化

インフラ統合

Docker Compose拡張

claude-history-mcp:
  build: ./mcp
  ports:
    - "8090:8090"
  environment:
    - OAUTH_SECRET_KEY=${OAUTH_SECRET}
    - MCP_SERVER_URL=https://history.call2arm.com/mcp

Nginx設定拡張

# MCP エンドポイント
location /mcp/ {
    proxy_pass http://claude-history-mcp:8090/;
}

# OAuth エンドポイント  
location /oauth/ {
    proxy_pass http://claude-history-mcp:8090/oauth/;
}

テスト・検証

単体テスト

  • OAuth認証フロー
  • MCP Protocol準拠性
  • API レスポンス検証

統合テスト

  • Claude Desktop連携
  • エンドツーエンドフロー
  • エラーケース対応

負荷テスト

  • 同時接続数
  • レスポンス時間
  • リソース使用量

成果物

  1. MCP Server実装 - 完全動作するMCPサーバー
  2. OAuth認証基盤 - セキュアな認証システム
  3. Claude Desktop統合 - 実際の連携動作
  4. ドキュメント - セットアップ・使用方法

前提条件

  • Web UI実装完了(チケット#946)
  • Claude Desktop Pro/Team/Enterprise プラン
  • VPS-ROOT環境準備完了

期待効果

  • Claude Desktopから直接会話履歴検索
  • シームレスな知識活用
  • 開発ワークフロー大幅改善
  • リモートMCP活用の先駆例

他の形式にエクスポート: Atom PDF