プロジェクト

全般

プロフィール

バグ #947

未完了

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

Redmine Admin さんが13日前に追加. 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活用の先駆例

Redmine Admin さんが12日前に更新

  • ステータス新規 から 進行中 に変更

Phase 6 MCP統合実装開始

🚀 実装開始準備完了

  • 前提条件確認: Phase 5 Web UI実装完了 (チケット#946)
  • インフラ確認: Docker環境稼働中 (API:8088, Frontend:3080)
  • プロジェクト準備: claude-conversation-manager プロジェクト状況良好
  • Router基盤: api/routers/init.py 作成、import_router 確認完了

📋 Phase 6.1 認証基盤実装計画

次の作業フェーズとして以下を予定:

  1. MCPディレクトリ構造作成

    • /mcp/ ディレクトリ作成
    • OAuth認証サーバー構造準備
    • MCP Server基盤ファイル準備
  2. OAuth 2.1サーバー実装

    • PKCE対応認証エンドポイント
    • JWT トークン発行・検証機能
    • /.well-known/openid-configuration エンドポイント
  3. Docker Compose統合

    • claude-history-mcp サービス追加
    • ポート8090でのMCPサーバー稼働
    • 環境変数・秘密鍵管理

🎯 現在の実装状況

  • Phase 6.1: 開始準備完了
  • Phase 6.2: 未開始
  • Phase 6.3: 未開始
  • Phase 6.4: 未開始

📅 次回作業予定

MCP Server基盤構築およびOAuth 2.1認証実装に着手予定

Redmine Admin さんが12日前に更新

✅ Phase 6.1 MCPディレクトリ構造作成 完了

🎉 sqlite-mcp問題完全解決・MCP Server実装成功

実装完了内容

  1. MCPディレクトリ構造完成

    /mcp/
    ├── server/main.py          # FastAPI MCP Server
    ├── oauth/router.py         # OAuth 2.1 + PKCE認証
    ├── tools/router.py         # MCP Tools実装
    ├── config/settings.py     # 設定管理
    ├── Dockerfile             # Container化
    └── requirements.txt       # 依存関係
    
  2. sqlite-mcp問題完全回避

    • ❌ 問題のあった sqlite-mcp パッケージを使用せず
    • ✅ HTTP Transport + FastAPI で独自実装
    • ✅ 直接SQLite接続による安定した動作
  3. OAuth 2.1 + PKCE認証基盤

    • ✅ Authorization Code Flow実装
    • ✅ PKCE (Proof Key for Code Exchange) 対応
    • ✅ JWT トークン発行・検証
    • ✅ OpenID Connect Discovery対応
  4. MCP Tools実装

    • search_conversations - 会話検索 (FTS5使用)
    • get_conversation - 会話詳細取得
    • get_project_knowledge - プロジェクト知識取得
    • /tools/list - 利用可能ツール一覧

技術的成果

  • Container化完了: Docker + Docker Compose統合
  • ポート構成: 8091:8090 (8090が使用中のため8091で稼働)
  • Network統合: claude-conversation-network参加
  • Database接続: 既存SQLiteデータベースへの読み取り専用アクセス

動作確認済みエンドポイント

✅ http://localhost:8091/health
✅ http://localhost:8091/mcp/info
✅ http://localhost:8091/oauth/.well-known/openid-configuration
✅ http://localhost:8091/tools/list
✅ http://localhost:8091/oauth/authorize (認証画面)

セキュリティ実装

  • JWT署名・検証 (HS256)
  • Access Token (1時間有効)
  • PKCE Code Challenge/Verifier
  • Input Validation
  • Error Handling

次のステップ (Phase 6.2)

  1. Claude Desktop統合テスト
  2. Nginx設定追加 (https://history.call2arm.com/mcp/, /oauth/)
  3. 本番ドメイン公開
  4. 実際の認証フロー検証

重要な解決点

sqlite-mcp の依存関係問題・セッション管理問題を完全に回避し、
独自のHTTP Transport実装により安定したMCP Server基盤を構築しました。

Phase 6.1 完了 → Phase 6.2 Claude Desktop統合へ進行可能

Redmine Admin さんが12日前に更新

⚠️ Phase 6.2 問題特定: Nginx Proxy設定問題

問題状況

MCP Server: http://localhost:8091 正常稼働
Frontend: https://history.call2arm.com/ 正常表示
MCP Proxy: https://history.call2arm.com/mcp/info → 404 Not Found
API Proxy: https://history.call2arm.com/api/ → 404 Not Found

技術的詳細

  1. MCP Server Direct: curl http://localhost:8091/mcp/info ✅ 成功
  2. Nginx Proxy: curl https://history.call2arm.com/mcp/info ❌ 404
  3. Nginx Access Log: リクエスト到達確認済み
  4. 設定ファイル: 複数のhistory.call2arm.com設定ファイル存在

設定状況確認

# /etc/nginx/sites-available/history.call2arm.com.conf
location /mcp/ {
    proxy_pass http://localhost:8091/mcp/;  # ✅ 設定正常
    proxy_http_version 1.1;
    # ... other headers
}

競合ファイル検出

  • /etc/nginx/sites-available/history.call2arm.com.conf (現在有効)
  • /etc/nginx/sites-available/history.call2arm.com.sni.conf (無効)
  • /etc/nginx/sites-available/unified.conf (history.call2arm.com含む)

エンドポイント検証結果

✅ http://localhost:8091/mcp/info - MCP Server直接
✅ http://localhost:8091/health - Health Check
✅ http://localhost:8091/docs - FastAPI Documentation
❌ https://history.call2arm.com/mcp/info - Nginx経由

Next Action (Phase 6.2.1)

  1. Nginx設定デバッグ・修正
  2. API Backend (8088) 動作確認
  3. プロキシルーティング問題解決
  4. HTTPS経由でのMCP Server動作確認

Redmine Admin さんが12日前に更新

✅ Phase 6.2 Nginx統合 大部分完了!

🎉 成功したエンドポイント

MCP Info: https://history.call2arm.com/mcp/info
OAuth Discovery: https://history.call2arm.com/oauth/.well-known/openid-configuration
API Projects: https://history.call2arm.com/api/v1/projects
Frontend: https://history.call2arm.com/

🔧 解決した技術的問題

  1. Nginx Location Block構造: 正しい設定ファイル再構築
  2. API Proxy Path: /api/ → localhost:8088への正しいマッピング
  3. MCP Proxy Path: /mcp/ → localhost:8091/mcp/への正しいマッピング
  4. OAuth Proxy Path: /oauth/ → localhost:8091/oauth/への正しいマッピング

📋 現在のエンドポイント状況

✅ https://history.call2arm.com/                     # Frontend
✅ https://history.call2arm.com/mcp/info            # MCP Server
✅ https://history.call2arm.com/oauth/.well-known/openid-configuration # OAuth
✅ https://history.call2arm.com/api/v1/projects     # API Backend
🔒 https://history.call2arm.com/tools/list          # 認証が必要(正常動作)

🔧 修正したNginx設定

# /etc/nginx/sites-available/history.call2arm.com.conf
location /api/ {
    proxy_pass http://localhost:8088/;  # ✅ 修正済み
}
location /mcp/ {
    proxy_pass http://localhost:8091/mcp/;  # ✅ 新規追加
}
location /oauth/ {
    proxy_pass http://localhost:8091/oauth/;  # ✅ 新規追加  
}
location /tools/ {
    proxy_pass http://localhost:8091/tools/;  # ✅ 新規追加
}

🎯 Phase 6.3: Claude Desktop統合テスト

次の段階でClaude Desktopでの実際の認証フロー・MCP Tools利用をテストします:

  1. Claude Desktop Integration設定
  2. OAuth 2.1認証フロー検証
  3. MCP Tools実行テスト
  4. エラーハンドリング確認

Phase 6.2 完了率: 90% (Tools認証除く全エンドポイント動作確認済み)

Redmine Admin さんが12日前に更新

Phase 6.3 Claude Desktop Integration準備完了

✅ 完了項目

  1. MCP Server動作確認: http://localhost:8091/mcp/info 正常動作
  2. OAuth認証エンドポイント: https://history.call2arm.com/oauth/authorize 動作確認
  3. 認証設定値確定:

🔧 技術詳細

  • OAuth 2.1 + PKCE: 実装・動作確認済み
  • 認証フロー: HTMLページ表示まで確認
  • MCP Protocol: v2024-11-05対応
  • Nginx Proxy: 全エンドポイント正常動作

🎯 次の実装(Phase 6.4)

  1. 実際のClaude Desktop Integration設定
  2. 完全な認証フロー検証
  3. MCP Tools実行テスト
  4. エラーハンドリング

📋 Claude Desktop設定情報

Name: Claude History Manager
Authorization URL: https://history.call2arm.com/oauth/authorize
Token URL: https://history.call2arm.com/oauth/token
Client ID: claude-history-manager
Scopes: conversations:read conversations:write

Phase 6.3完了 - Claude Desktop Integration基盤確立

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