# ai.card MCP Server統合作業報告 (2025/01/06)

## 作業概要
ai.cardプロジェクトに独立したMCPサーバーを実装し、FastAPIベースのカードゲームAPIをMCPツールとして公開。

## 実装内容

### 1. 依存関係の解決
**課題と対応:**
- `atproto==0.0.46` → `atproto>=0.0.55` (Python 3.13対応)
- `httpx` バージョン競合 → supabase一時無効化
- `pydantic==2.5.0` → `pydantic>=2.7.0` (atproto要件)
- PostgreSQL依存 → SQLiteベースに変更
- `greenlet` 追加 (SQLAlchemy非同期処理)

**最終的な依存関係:**
```txt
fastapi>=0.104.1
uvicorn[standard]>=0.24.0
pydantic>=2.7.0,<3.0.0
sqlalchemy>=2.0.23
greenlet>=3.0.0
aiosqlite>=0.19.0
fastapi-mcp==0.1.0
atproto>=0.0.55
# supabase>=2.3.0  # httpx競合のため無効化
# asyncpg, psycopg2-binary  # コンパイル回避のため無効化
```

### 2. MCP Server実装
**ファイル:** `api/app/mcp_server.py`

**主要変更:**
- `from mcp.server.fastmcp import FastMCP` (正しいインポート)
- `FastMCP("aicard")` で初期化
- 9個のMCPツール実装

**公開ツール:**
1. `get_user_cards` - ユーザーカード一覧
2. `draw_card` - ガチャ実行  
3. `get_card_details` - カード詳細情報
4. `analyze_card_collection` - コレクション分析
5. `get_unique_registry` - ユニークカード登録状況
6. `sync_cards_atproto` - atproto同期(無効化中)
7. `get_gacha_stats` - ガチャ統計

### 3. データベース設定
**SQLite使用:**
- 場所: `~/.config/syui/ai/card/aicard.db`
- 理由: 依存関係シンプル化、開発環境最適化
- PostgreSQL移行: 将来的にDocker利用で対応

### 4. 補助スクリプト
- `setup_venv.sh` - 仮想環境セットアップ
- `start_server.sh` - サーバー起動スクリプト
- `docker-compose.dev.yml` - PostgreSQL開発環境

## 既知の問題と対応

### 解決済み
- ✅ fastapi-mcp インポートエラー → 正しいパッケージ名に修正
- ✅ get_db → get_session 関数名不一致
- ✅ Optional型インポート漏れ
- ✅ SQLAlchemy greenlet依存
- ✅ データベース初期化エラー

### 未解決(将来対応)
- atproto SessionString APIの変更
- supabase httpxバージョン競合
- ガチャ確率計算の精度問題

## 環境セットアップ手順

### 1. 仮想環境構築
```bash
cd /Users/syui/ai/gpt/card
./setup_venv.sh
```

### 2. データベース初期化
```bash
cd api
~/.config/syui/ai/card/venv/bin/python init_db.py
```

### 3. サーバー起動
```bash
./start_server.sh
# または
cd api
~/.config/syui/ai/card/venv/bin/python -m app.main
```

### 4. 動作確認
```bash
# ヘルスチェック
curl http://localhost:8000/health

# API仕様書
open http://localhost:8000/docs

# カード取得テスト
curl -X POST "http://localhost:8000/draw_card?did=did:plc:test123"
```

## PostgreSQL移行(将来)

### Docker開発環境
```bash
# PostgreSQLのみ起動
docker-compose -f docker-compose.dev.yml up -d

# 環境変数設定
export DATABASE_URL="postgresql+asyncpg://postgres:postgres@localhost:5432/aicard"

# APIサーバー起動
./start_server.sh
```

### 本番環境
- iOS/Webアプリ → PostgreSQL必須
- Docker Composeで全サービス管理
- Cloudflare Tunnel経由で公開

## 成果
- ai.card独立MCPサーバー稼働
- SQLiteベースで依存関係問題解決
- 自動リロード対応の開発環境構築
- iOS/Web連携準備完了