操作
バグ #418
未完了Phase 6: リモートMCP化 - Claude Desktop完全統合 (長期計画)
ステータス:
新規
優先度:
通常
担当者:
-
開始日:
2025-06-09
期日:
進捗率:
0%
予定工数:
説明
🎯 Phase 6: リモートMCP化完全実装¶
📋 前提条件¶
✅ Phase 5完了: search.call2arm.com 本番環境稼働
- React WebUI完全統合
- 高度検索・分析機能
- パフォーマンス最適化完了
🚀 Phase 6最終目標¶
Claude Desktop完全統合¶
// リモートMCPサーバー化
- OAuth 2.1 + PKCE認証実装
- Claude Desktop Integrations連携
- MCP Tools実装
- 双方向会話同期
🔧 技術仕様¶
1. OAuth 2.1認証サーバー¶
// 必須エンドポイント
- /.well-known/oauth-authorization-server (RFC8414)
- /.well-known/oauth-protected-resource (RFC9728)
- /oauth/authorize (認可エンドポイント)
- /oauth/token (トークンエンドポイント)
2. MCP Server実装¶
// FastMCP or 公式SDK選択
- search.call2arm.com 機能のMCPツール化
- Streamable HTTP Transport対応
- WebSocket リアルタイム同期
- Claude Desktop認証フロー
3. MCP Tools定義¶
// Claude Desktop から利用可能な機能
- search_conversations: 会話検索
- import_conversations: 会話インポート
- export_conversations: 会話エクスポート
- get_conversation_stats: 統計取得
- manage_projects: プロジェクト管理
📊 OAuth 2.1実装詳細¶
認証フロー¶
sequenceDiagram
participant CD as Claude Desktop
participant AS as Authorization Server
participant RS as Resource Server (search.call2arm.com)
CD->>AS: 認可リクエスト + PKCE challenge
AS->>CD: 認可コード
CD->>AS: トークン交換 + PKCE verifier
AS->>CD: アクセストークン
CD->>RS: API呼び出し + Bearer Token
RS->>CD: レスポンス
セキュリティ実装¶
- PKCE (S256): RFC7636準拠
- State Parameter: CSRF攻撃防止
- Dynamic Client Registration: RFC7591対応
- Token Introspection: RFC7662対応
🎯 実装アーキテクチャ¶
Option A: FastMCP 2.0使用¶
from fastmcp import FastMCP
# search.call2arm.com をMCPサーバー化
mcp = FastMCP("claude-search-mcp")
@mcp.tool()
async def search_conversations(query: str) -> dict:
"""過去の会話を検索"""
# search.call2arm.com API呼び出し
return await SearchAPI.search(query)
if __name__ == "__main__":
mcp.run(transport='sse', port=8080)
Option B: 公式SDK使用¶
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/http.js";
const server = new McpServer({
name: "claude-search-mcp",
version: "1.0.0"
});
// search.call2arm.com API統合
server.setRequestHandler("tools/call", async (request) => {
const { name, arguments: args } = request.params;
if (name === "search_conversations") {
const results = await searchAPI.search(args.query);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
}
});
📈 期待される価値¶
ユーザー体験¶
- シームレス: Claude Desktop ↔ search.call2arm.com統合
- 効率性: Claude内から過去会話アクセス
- 継続性: プロジェクト単位の会話管理
- 検索性: Claude内からの自然言語検索
技術的価値¶
- 標準準拠: OAuth 2.1 + MCP仕様完全対応
- エコシステム: 公式MCPサーバーとしての地位
- 拡張性: 他MCPクライアント対応可能
- セキュリティ: エンタープライズレベル認証
🎯 実装フェーズ¶
Phase 6.1: OAuth認証サーバー (2週間)
- Authorization Server Metadata実装
- PKCE + State parameter対応
- Dynamic Client Registration
- セキュリティ監査
Phase 6.2: MCP Server実装 (2週間)
- FastMCP or 公式SDK選択・実装
- search.call2arm.com API統合
- Streamable HTTP Transport
- WebSocket対応
Phase 6.3: Claude Desktop統合 (1週間)
- Claude Desktop Pro/Max/Team テスト
- インテグレーション設定
- 認証フロー動作確認
- MCPツール利用テスト
Phase 6.4: 本格運用 (1週間)
- パフォーマンス最適化
- 監視・ログ強化
- ドキュメント整備
- ユーザーガイド作成
⚠️ 考慮事項¶
セキュリティ¶
- OAuth実装のセキュリティ監査必須
- PKCE実装の攻撃耐性確認
- トークンライフサイクル管理
運用・保守¶
- Claude Desktop仕様変更対応
- MCP仕様進化への追従
- 認証システム継続保守
🎯 成功指標¶
- Claude Desktop からMCPツール利用成功
- OAuth 2.1認証フロー完全動作
- search.call2arm.com 機能のMCP経由アクセス
- 複数Claude Desktopクライアント対応
- セキュリティ監査合格
📅 実装時期¶
開始条件: Phase 5完了後
目標期間: 6週間
完了目標: search.call2arm.com → Claude Desktop MCP統合
🔗 関連チケット・参考資料¶
- Phase 5: #415 (前提条件)
- OAuth実装参考: #348 (過去実装)
- 公式仕様: https://modelcontextprotocol.io/specification/
- 実装例: Atlassian MCP Server, Cloudflare Workers MCP
表示するデータがありません
操作