1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

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推奨。

インストールコマンド:

pip install mcp jsonrpcserver requests python-dotenv

Trelloのセットアップ

  1. ボード準備
    • Trelloにアクセスし、新しいボードを作成(例:MCP-Project)。
    • リストを追加(例:To DoIn ProgressDone)。
    • カードを追加(例:ドキュメント作成コードレビュー)。
    • ボードのURLからボードIDを記録(例:https://trello.com/b/BOARD_ID/NAMEBOARD_ID)。
  2. APIキーとトークンの取得
    • TrelloのDeveloper PortalでAPIキーを取得。
    • トークンを生成(スコープ:readwrite)。
    • キーとトークンを安全に保存。
  3. 環境変数の設定
    .envファイルに以下を追加:
    TRELLO_API_KEY=your_api_key
    TRELLO_TOKEN=your_token
    TRELLO_BOARD_ID=your_board_id
    

コード例:Trello用MCPサーバー

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_KEYTRELLO_TOKENTRELLO_BOARD_IDが設定済み。

サーバーのテスト

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

  1. サーバー起動

    python trello_server.py
    

    コンソールに「Trello MCPサーバーを起動中: http://localhost:8111」と表示。

  2. カード取得のテスト
    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))
    

    期待されるレスポンス:

    {
      "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)に以下を追加:

    {
      "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をタスク管理の強力なアシスタントに変えられます。次章以降では、タスク自動化、進捗分析、リアルタイム管理へと進化させます。


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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?