Skip to content

#13 Mappy MCP サーバー新設

概要

項目内容
課題IDISS-013
課題名MCP サーバーを新設し、顧客 AI から Mappy を操作可能にする
カテゴリ機能拡張・AI 統合・認証基盤
優先度
ステータス🔵 提案中
GitLab IssueMappy #58
関連案件#13 MCP サーバー新設
親設計機能設計(全体像)

現状の課題

  • 業務改善系 AI 機能(#5 口コミ AI 分析、#6 流入キーワード AI、#7 グループ分析、#8 #9 レポート AI 等)を個別実装すると保守範囲が膨張する
  • Mappy 側で LLM 運用コスト(トークン使用料・モデル更新追随・プロンプト保守)を抱える設計は持続性が低い
  • 顧客が既に契約している ChatGPT Pro / Claude Pro 等の AI 能力を Mappy が活用できない
  • 新規 AI 連携要望のたびに開発リソースが必要

解決アプローチ

業務改善系を MCP(Model Context Protocol)サーバー化し、顧客 AI から Mappy を操作可能にする。

  • Mappy は「データと操作のインターフェース」に専念
  • LLM 運用は顧客側 AI(Claude Desktop / Claude Code / ChatGPT Pro)に委譲
  • AI 機能の追加 = MCP tool の追加で実現
  • 既存案件 #5・#6 は MCP に完全吸収可能

詳細は 案件提案書 を参照。

要件

機能要件

No要件詳細
1MCP プロトコル準拠Streamable HTTP トランスポート、tools/call、tools/list
2OAuth 2.1 認証基盤PKCE 必須、認可コード + リフレッシュトークン、動的クライアント登録
3主要 MCP クライアント対応Claude Desktop / Claude Code / ChatGPT Connectors
4テナンシ制御mappy_users 階層 × *_access_level × mappy_user_available_gbp_locations
5scope 設計mappy:<domain>:<action> 体系、Mappy 既存権限と 1:1 マッピング
6読取系 tool(Phase 1)location / review / ranking / insight / keyword 等 5 tool 以上
7書込系 tool(Phase 2)post / review.reply / media / location.update
8書込安全装置(Phase 2)dry_run / idempotency_key / confirm_token / batch.status
9レポート tool(Phase 3)report.create / report.get、AI レポート機能と統合
10監査ログ全 tool 呼び出し・OAuth イベント・拒否・dry_run を記録
11レート制限アクセストークン / クライアント / ユーザー / idempotency 単位

非機能要件

No要件詳細
1可用性ECS Fargate 複数タスク、ALB ヘルスチェック
2スケーラビリティAuto Scaling(CPU + リクエスト数)
3レスポンス時間読取系 p95 < 1 秒、書込同期 p95 < 3 秒
4セキュリティOAuth 2.1 ベストプラクティス準拠、PKCE 必須、refresh_token rotation、family_id 監視
5監査可能性全イベントを mappy_mcp_audit_logs に記録、1 年保持
6データ保護トークン・パスワード・PII はログに残さない
7既存システムへの影響最小化DB 直参照禁止、Laravel API 経由のみ

フェーズ構成

Phase名称工数主成果物
Phase 1(MVP)認証 + 読取系24.0 人日OAuth 2.1 基盤、読取系 5 tool、監査ログ
Phase 2書込系拡張11.5 人日投稿・口コミ返信・メディア、dry_run、idempotency
Phase 3レポート・分析8.5 人日レポート tool、グループ分析、AI レポート機能との統合
合計44.0 人日

Phase 1 詳細タスク

設計フェーズ

Noタスク担当工数完了条件
1.1要件確認・全体設計書作成設計者2.0全体像設計書 完成、レビュー OK
1.2アーキテクチャ設計(スタック確定)設計者1.5Python / TypeScript の最終確定
1.3OAuth 2.1 認証設計設計者1.5認証・テナンシ設計 完成
1.4ツールカタログ設計(MVP 範囲)設計者1.5ツールカタログ の Phase 1 部分完成
1.5監査ログ・DB 設計設計者1.0DB(監査ログ) + DB(OAuth) 完成
1.6インフラ設計設計者1.0インフラ設計 完成
設計小計8.5

製造フェーズ

Noタスク担当工数完了条件
1.7MCP サーバー基盤実装製造者2.5Streamable HTTP 接続、tools/list 応答、ヘルスチェック
1.8OAuth 2.1 認証実装製造者3.0認可コード + PKCE フロー、refresh rotation、動的登録、/.well-known/oauth-authorization-server
1.9読取系 Tool 実装(5 個)製造者3.0location.list / location.get / review.list / ranking.list / insight.summary 動作
1.10監査ログ実装製造者1.5全 tool 呼び出し・OAuth イベントを mappy_mcp_audit_logs に記録
1.11インフラ構築(AWS/コンテナ)製造者1.5ECS / ALB / Redis / Secrets Manager 設定完了
1.12接続テスト(Claude Desktop / ChatGPT)製造者1.5両クライアントから tool 呼び出し成功
1.13結合テスト・品質調整製造者1.5認可拒否・テナンシ違反・レート制限の各シナリオ動作確認
1.14運用マニュアル作成設計者1.0障害対応・トークン失効・新規クライアント追加手順
1.15デプロイ・動作確認製造者1.0ステージング→本番、動作確認
製造小計15.5

Phase 1 合計: 24.0 人日

Phase 2 詳細タスク(概要)

Noタスク工数
2.1書込安全装置設計(書込安全装置1.5
2.2書込系 Tool 実装(post.create / review.reply / media.upload 等 5〜7 個)3.0
2.3dry_run / idempotency 実装1.5
2.4確認トークン実装1.0
2.5batchId + ポーリング統合(既存 jobs テーブル連携)1.5
2.6レート制限1.0
2.7テスト1.5
2.8デプロイ0.5
Phase 2 合計11.5

Phase 3 詳細タスク(概要)

Noタスク工数
3.1レポート tool 設計1.5
3.2レポート tool 実装(report.create / report.get)2.0
3.3分析系 tool 実装(keyword / group.compare 等)2.0
3.4AI レポート機能(#9)との統合1.5
3.5テスト1.0
3.6デプロイ0.5
Phase 3 合計8.5

検収条件(Phase 1)

機能検収

  • [ ] Claude Desktop に MCP サーバー追加 → ログイン → tool 一覧取得成功
  • [ ] ChatGPT Connectors からの接続 → OAuth 認証 → tool 呼び出し成功
  • [ ] 5 つの読取系 tool が仕様通りの入出力で動作
  • [ ] scope 不足リクエストが 403 (FORBIDDEN_SCOPE) を返す
  • [ ] テナンシ外のリソース要求が 403 (FORBIDDEN_LOCATION/USER) を返す
  • [ ] レート制限超過が 429 を返す
  • [ ] refresh_token rotation が機能(再使用検出で family 全失効)
  • [ ] アクセストークン失効後の呼び出しが 401 を返す
  • [ ] 全 tool 呼び出しが mappy_mcp_audit_logs に記録される

非機能検収

  • [ ] 読取系 tool p95 レスポンス時間 < 1 秒
  • [ ] ECS タスク 1 台落としても全機能継続動作
  • [ ] CloudWatch アラーム発火・Slack 通知
  • [ ] ステージング → 本番のデプロイがゼロダウンタイム

ドキュメント検収

依存関係

前提タスク(Phase 1 着手前)

  • [ ] 実装スタック確定(Python / TypeScript)
  • [ ] MCP 用ドメイン確定(mcp.mappy.example.com 等)
  • [ ] AWS リソース申請(Redis ElastiCache、ACM 証明書)
  • [ ] 公式 MCP クライアント(Claude / ChatGPT)の redirect_uri 確認

Phase 1 完了後の前提(Phase 2 着手)

  • [ ] Phase 1 の本番運用 2 週間(安定性確認)
  • [ ] 顧客 AI 経由のアクセスログから tool 利用傾向把握
  • [ ] 書込系の優先 tool 確定(顧客要望ヒアリング)

Phase 2 完了後の前提(Phase 3 着手)

関連案件・統合方針

関連案件MCP との関係
#2 レポート権限開放独立。MCP scope と権限カラムを共有
#3 写真の一括投稿・削除部分統合。MCP の media.upload / post.create で API 提供
#5 口コミ AI 分析完全統合。Mappy 側 AI 実装は不要、MCP で代替
#6 流入キーワード AI 分析完全統合。同上
#7 グループ分析部分統合。MCP の group.compare で API 提供
#8 レポートインサイト追加独立。レポート本体改修
#9 レポート AI アドバイス部分統合。MCP の report.create から呼び出し可

リスク・課題

#リスク影響対策
1MCP 仕様の変更プロトコル互換性公式 SDK / FastMCP の最新版追随、CI で互換性テスト
2OAuth 2.1 実装の脆弱性セキュリティ事故専門ライブラリ採用、ペネトレーションテスト
3顧客 AI 側の暴走(誤実行・大量呼び出し)データ破壊・コスト膨張dry_run / confirm_token / レート制限の徹底
4refresh_token 盗難アカウント乗っ取りfamily_id 監視、token reuse 検出時の即時失効
5GBP API クォータ消費書込失敗・コストMappy 側既存レート制限の流用、MCP 側でさらに制限
6Phase 2 以降の書込系誤実行顧客データ破損dry_run 必須化、監査ログ全件記録
7実装スタック決定の遅延着手遅れ設計フェーズ後半で確定、両案で進められる設計を優先

関連ドキュメント