TrelloでAIを強化する | 第1章：カードデータの第一歩

## はじめに

**Trello**は、Kanbanボードを使った直感的なプロジェクト管理ツールです。タスクをカードとして整理し、チームのコラボレーションを効率化します。強力なAPIにより、ボード、リスト、カードのデータを簡単に取得・操作できます。一方、**Model Context Protocol（MCP）**は、AI（例：Claude）を外部データやツールと標準化された方法で接続するプロトコルです。このシリーズでは、TrelloとMCPを統合し、タスクデータを活用するエージェントAIを構築する方法を学びます。たとえば、AIがタスクの進捗を分析したり、優先順位を提案したりできます。

第1章では、TrelloとMCPの基本を理解し、Trelloからカードデータを取得するシンプルなMCPサーバーを構築します。Claude Desktopと接続して、タスク管理の第一歩を踏み出しましょう。TrelloとAIの可能性にワクワクしている方は、ぜひ一緒に始めましょう！

## TrelloとMCPの概要

### Trelloとは？
Trelloは、以下のような特徴を持つプロジェクト管理ツールです：
- **Kanbanベース**：ボード、リスト、カードでタスクを視覚的に管理。
- **強力なAPI**：REST APIでボード、リスト、カード、コメントにアクセス。
- **柔軟性**：プロジェクト管理、イベント企画、個人タスク管理に対応。
- **コミュニティ**：プラグインやインテグレーションが豊富。

### MCPの役割
MCPは、AIにTrelloのデータを提供する橋渡し役です。MCPサーバーを通じて、AIは以下を行えます：
- **データ取得**：カードやリストの情報を取得。
- **アクション実行**：カードを作成、移動、コメントを追加。
- **分析**：タスクの進捗やチームのパフォーマンスを評価。

### なぜTrelloとMCPを組み合わせる？
この組み合わせは、以下のようなシナリオで強力です：
- タスク管理：AIがタスクを自動整理し、期限切れを警告。
- 進捗分析：AIがボードのデータを分析し、ボトルネックを特定。
- チーム連携：AIがコメントや通知を生成し、コミュニケーションを効率化。

## 開発環境の準備

MCPサーバーとTrelloを統合するには、以下の環境を準備します：
- **Python 3.8以降**：サーバー開発用。
- **mcpライブラリ**：JSON-RPC通信を処理（仮定のライブラリ、公式ドキュメントを参照）。
- **requestsライブラリ**：Trello APIとの通信用。
- **Claude Desktop**：MCP対応のAIクライアント。
- **テキストエディタ**：VS Code推奨。

インストールコマンド：
```bash
pip install mcp jsonrpcserver requests python-dotenv
```

### Trelloのセットアップ
1. **ボード準備**：
   - [Trello](https://trello.com)にアクセスし、新しいボードを作成（例：`MCP-Project`）。
   - リストを追加（例：`To Do`、`In Progress`、`Done`）。
   - カードを追加（例：`ドキュメント作成`、`コードレビュー`）。
   - ボードのURLからボードIDを記録（例：`https://trello.com/b/BOARD_ID/NAME`の`BOARD_ID`）。
2. **APIキーとトークンの取得**：
   - Trelloの[Developer Portal](https://trello.com/power-ups/admin)でAPIキーを取得。
   - トークンを生成（スコープ：`read`、`write`）。
   - キーとトークンを安全に保存。
3. **環境変数の設定**：
   `.env`ファイルに以下を追加：
   ```bash
   TRELLO_API_KEY=your_api_key
   TRELLO_TOKEN=your_token
   TRELLO_BOARD_ID=your_board_id
   ```

## コード例：Trello用MCPサーバー

```python
from mcp import MCPServer
import os
from dotenv import load_dotenv
import requests

class TrelloServer(MCPServer):
    def __init__(self, host, port, api_key, token, board_id):
        super().__init__(host 0, port)
        self.api_key = api_key
        self.token = token
Starting new_cms
    def get_cards(self, params):
        try:
            url = f"{self.base_url}/boards/{self.board_id}/cards"
            response = requests.get(url, params=self.params)
            response.raise_for_status()
            cards = [
                {
                    "id": card["id"],
                    "name": card["name"],
                    "desc": card["desc"],
                    "due": card.get("due", ""),
                    "list_id": card["idList"]
                }
                for card in response.json()
            ]
            return {"status": "success", "cards": cards}
        except Exception as e:
            return {"status": "error", "message": str(e)}

if __name__ == "__main__":
    load_dotenv()
    server = TrelloServer(
        host="localhost",
        port=8111,
        api_key=os.getenv("TRELLO_API_KEY"),
        token=os.getenv("TRELLO_TOKEN"),
        board_id=os.getenv("TRELLO_BOARD_ID")
    )
    print("Trello MCPサーバーを起動中: http://localhost:8111")
    server.start()
```

### コードの説明
- **requests**：Trello APIにGETリクエストを送信し、カードデータを取得。
- **get_cards**：ボードのカード情報を取得（ID、名前、説明、期限、リストID）。
- **register_resource**：リソースを登録し、AIがアクセス可能に。
- **start()**：サーバーを起動。

### 前提条件
- Trelloボードが存在し、ボードIDが正しい。
- `.env`ファイルに正しい`TRELLO_API_KEY`、`TRELLO_TOKEN`、`TRELLO_BOARD_ID`が設定済み。

## サーバーのテスト

サーバーが正しく動作するか確認します：

1. **サーバー起動**：
   ```bash
   python trello_server.py
   ```
   コンソールに「Trello MCPサーバーを起動中: http://localhost:8111」と表示。

2. **カード取得のテスト**：
   Pythonでリクエストを送信：
   ```python
   import requests
   import json

   url = "http://localhost:8111"
   payload = {
       "jsonrpc": "2.0",
       "method": "get_cards",
       "params": {},
       "id": 1
   }
   response = requests.post(url, json=payload)
   print(json.dumps(response.json(), indent=2, ensure_ascii=False))
   ```
   期待されるレスポンス：
   ```json
   {
     "jsonrpc": "2.0",
     "result": {
       "status": "success",
       "cards": [
         {
           "id": "card123",
           "name": "ドキュメント作成",
           "desc": "仕様書を完成させる",
           "due": "2025-04-22T10:00:00Z",
           "list_id": "list456"
         },
         {
           "id": "card124",
           "name": "コードレビュー",
           "desc": "PRを確認",
           "due": "",
           "list_id": "list457"
         }
       ]
     },
     "id": 1
   }
   ```

## Claude Desktopとの接続

サーバーをClaude Desktopに接続します：

1. **設定ファイルの編集**：
   Claude Desktopの設定ファイル（例：`claude_desktop_config.json`）に以下を追加：
   ```json
   {
     "mcp_servers": [
       {
         "name": "TrelloServer",
         "url": "http://localhost:8111",
         "auth": "none"
       }
     ]
   }
   ```

2. **Claudeでテスト**：
   Claude Desktopを起動し、プロンプトを入力：
   ```
   ボードのカードを教えてください。
   ```
   レスポンス例：
   ```
   Trelloボードのカード：
   - ドキュメント作成（期限：2025-04-22、リスト：To Do）
   - コードレビュー（期限なし、リスト：In Progress）
   ```

## 次のステップ

このMCPサーバーは、TrelloとAIの連携の基礎です。次の第2章では、Trelloにカードを追加・更新する機能を実装し、タスクを自動化するエージェントを構築します。たとえば、AIが優先度の高いタスクを自動でリストに移動したり、期限を追加したりできます。タスク自動化に興味がある方は、ぜひお楽しみに！

## まとめ

この第1章では、TrelloとMCPの基本を学び、シンプルなMCPサーバーを構築してカードデータを取得しました。Trelloの強力なAPIとMCPの柔軟性を組み合わせることで、AIをタスク管理の強力なアシスタントに変えられます。次章以降では、タスク自動化、進捗分析、リアルタイム管理へと進化させます。

---

役に立ったと思ったら、「いいね」や「ストック」をしていただけると嬉しいです！次の章でまたお会いしましょう！