Skip to main content
Glama

MCP Todoist

by kentaroh7777
mcp-tester.md8.73 kB
# MCPTester 設計文書 ## 1. プロジェクト概要 ### 1.1 目的・背景 MCPサーバーとの通信テスト・デバッグを行うWebUIコンポーネントの実装。 従来のWebSocket接続からConvex経由のHTTP通信に変更し、将来的なFirebase認証追加を容易にする設計。 ### 1.2 成功基準 - Convex経由でMCPサーバーとの通信が正常に動作すること - 段階的にテストケースに対応できること(27+個のdata-testid要素) - Firebase認証を後から追加しやすい設計になっていること - リアルタイムでMCP通信をテスト・デバッグできること ### 1.3 制約条件 - **技術制約**: Next.js 14 + React 18 + Ant Design 5.15.0環境 - **認証制約**: 現在はFirebase認証無効化、将来的に有効化 - **テスト制約**: 既存テストケースとの段階的互換性確保 - **期間制約**: 段階的実装によるテスト進捗確認 ## 2. 要件定義 ### 2.1 機能要件 #### 2.1.1 主要機能 - **MCPサーバー接続管理**: Convex経由でのセッション作成・切断 - **ツール実行**: MCPツールの一覧表示と実行 - **リソース管理**: MCPリソースの一覧表示と読み込み - **プロンプト管理**: MCPプロンプトの一覧表示と実行 - **デバッグ機能**: リアルタイムメッセージログと整形表示 #### 2.1.2 補助機能 - **認証レイヤー**: 無効化可能な認証システム - **エラーハンドリング**: 接続・通信エラーの適切な処理 - **ログ機能**: JSON整形表示、ログクリア、エクスポート ### 2.2 非機能要件 - **性能要件**: Convex Action経由のリアルタイム応答(<3秒) - **可用性要件**: MCPサーバー接続状態の適切な管理 - **保守性要件**: モジュール化された設計、将来の認証追加対応 ## 3. アーキテクチャ設計 ### 3.1 システム構成 ```mermaid graph TB A[MCPTester Component] --> B[ExtendedConvexMCPClient] B --> C[Convex Actions] C --> D[MCP Server HTTP] subgraph "UI Layer" A1[ConnectionSection] A2[ToolsSection] A3[ResourcesSection] A4[PromptsSection] A5[DebugSection] end subgraph "Client Layer" B1[SessionManager] B2[AuthLayerAbstraction] B3[EventHandler] end subgraph "Backend Layer" C1[handleMCPRequest] C2[createMCPSession] C3[ErrorHandling] end ``` ### 3.2 技術スタック - **フロントエンド**: Next.js 14, React 18, TypeScript 5.4 - **UI**: Ant Design 5.15.0 - **状態管理**: React hooks + Convex real-time queries - **通信**: Convex Actions (HTTP) → MCP Server ### 3.3 データフロー 1. **UI操作** → MCPTesterコンポーネント 2. **MCP要求** → ExtendedConvexMCPClient (認証チェックスキップ) 3. **Convex実行** → api.mcp.handleMCPRequest 4. **サーバー通信** → HTTP経由でMCPサーバー 5. **結果表示** → UI更新 + ログ記録 ## 4. 詳細設計 ### 4.1 コンポーネント設計 #### 4.1.1 MCPTester (メインコンポーネント) - **責務**: 全体的なUI管理とMCPクライアント制御 - **Props**: skipAuth?, initialServerUrl?, onConnectionChange? - **状態**: 接続状態、セッション情報、ログデータ - **実装方針**: React hooks + Ant Design コンポーネント #### 4.1.2 ExtendedConvexMCPClient - **責務**: Convex経由のMCP通信、認証レイヤー抽象化 - **拡張点**: 認証スキップ機能、テスト用ユーザーID - **インターフェース**: 既存ConvexMCPClientと互換性維持 - **実装方針**: ConvexMCPClientを継承・拡張 ### 4.2 データ構造設計 ```typescript // 拡張設定 interface ExtendedConvexMCPClientConfig extends MCPClientConfig { skipAuthentication?: boolean; testUserId?: string; } // コンポーネントProps interface MCPTesterProps { skipAuth?: boolean; initialServerUrl?: string; onConnectionChange?: (connected: boolean) => void; } // 状態管理 interface MCPTesterState { connectionState: MCPConnectionState; sessionId: string | null; tools: MCPTool[]; resources: MCPResource[]; prompts: MCPPrompt[]; messageLogs: MCPMessage[]; } // メッセージログ interface MCPMessage { id: string; timestamp: number; direction: 'sent' | 'received'; method: string; data: any; } ``` ### 4.3 API設計 #### 4.3.1 認証無効化対応 ```typescript class ExtendedConvexMCPClient extends ConvexMCPClient { private async ensureAuthentication(): Promise<void> { if (this.config.skipAuthentication) { this.userId = this.config.testUserId || 'test-user'; return; } // 既存の認証処理 return super.ensureAuthentication(); } } ``` #### 4.3.2 セクションコンポーネント ```typescript // 接続セクション function ConnectionSection({ client, onConnectionChange }: ConnectionSectionProps) { // 接続状態管理、URL入力、接続/切断ボタン } // ツールセクション function ToolsSection({ client, tools }: ToolsSectionProps) { // ツール一覧、パラメータ入力、実行ボタン } ``` ## 5. 実装計画 ### 5.1 Phase分割 #### **Phase 1: 基盤準備 (優先度: High)** - ExtendedConvexMCPClientの実装 - 基本的なMCPTesterコンポーネント構造 - 認証無効化機能の実装 #### **Phase 2: 基本機能実装 (優先度: High)** - 5つの基本セクション実装 - Connection, Tools, Resources, Prompts, Debug - 基本的なMCP通信機能 #### **Phase 3: 高度な機能 (優先度: Medium)** - リアルタイムログ機能 - JSONフォーマッター - エラーハンドリング強化 #### **Phase 4: テスト対応・検証 (優先度: Medium)** - data-testid要素対応 - テストケース段階的対応 - パフォーマンス最適化 ### 5.2 依存関係 ```mermaid graph TD Phase1[Phase1: 基盤準備] --> Phase2[Phase2: 基本機能実装] Phase1 --> Phase3[Phase3: 高度な機能] Phase2 --> Phase4[Phase4: テスト対応] Phase3 --> Phase4 ``` ### 5.3 工数見積もり | Phase | Group | タスク数 | 工数(時間) | 並列度 | |-------|-------|----------|------------|--------| | 1 | 基盤 | 2 | 6 | 1 | | 2 | UI | 5 | 15 | 2 | | 3 | 機能 | 3 | 9 | 2 | | 4 | テスト| 4 | 12 | 2 | ## 6. リスク分析 ### 6.1 技術リスク - **Convex統合の複雑性**: 中程度 - 既存実装を参考に軽減可能 - **認証レイヤーの抽象化**: 中程度 - 段階的実装で対応 - **テストケース互換性**: 高程度 - 段階的対応により軽減 ### 6.2 運用リスク - **MCP Server依存性**: 中程度 - エラーハンドリングで対応 - **Convexサービス依存**: 低程度 - 既存インフラ活用 ## 7. テスト戦略 ### 7.1 テスト方針 - **段階的テスト**: 実装進捗に応じてテストケース対応 - **単体テスト**: コンポーネント単位のテスト - **統合テスト**: Convex統合部分のテスト - **E2Eテスト**: 既存テストケースとの互換性確認 ### 7.2 テストケース設計指針 - data-testid要素を段階的に実装 - 既存テストケースとの互換性を重視 - 認証無効化状態でのテスト実行 ### 7.3 検証項目 - [ ] MCPサーバーとの接続・切断 - [ ] ツール実行とレスポンス表示 - [ ] リソース読み込みとページネーション - [ ] プロンプト実行と結果表示 - [ ] リアルタイムログとJSON整形 - [ ] エラーハンドリングと状態管理 ## 8. 運用・保守計画 ### 8.1 監視・ログ - Convex Action実行ログ - MCP通信エラーログ - パフォーマンスメトリクス ### 8.2 保守性考慮 - **認証追加**: Firebase認証を後から追加しやすい設計 - **機能拡張**: 新しいMCP機能への対応 - **テスト拡張**: 新しいテストケースへの対応 ### 8.3 将来の拡張計画 - Firebase認証の有効化 - リアルタイム協調機能 - MCP Server設定管理 - 高度なデバッグ機能 --- ## 設計承認チェックリスト - [ ] **要件の網羅性**: 全ての要件が文書化されている - [ ] **技術的実現性**: Convex統合で実装可能 - [ ] **一貫性**: ConvexMCPClient拡張の設計が一貫している - [ ] **具体性**: 実装者が迷わないレベルの詳細度 - [ ] **保守性**: 将来の認証追加に対応可能な設計 **設計文書承認**: 実装フェーズへの移行可能

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kentaroh7777/mcp-todoist'

If you have feedback or need assistance with the MCP directory API, please join our Discord server