Todo Assistant with AI and Google Calendar Integration について
Todo Assistant with AI and Google Calendar Integrationは、自然言語チャットでタスクや予定を管理するWebアプリです。OpenAI GPT-3.5 Turbo、Google Calendar、SQLiteによる永続化を組み合わせ、機密性の高いツール操作には承認フローを設けています。
主な機能
- 01自然言語によるToDo管理
- 02Google Calendarとの同期
- 03英語とトルコ語への対応
- 04機密性の高いツール操作の承認フロー
- 05SQLiteによるデータ永続化
- 06レスポンシブなWebインターフェース
活用シーン
- 01チャットでのToDo追加や完了
- 02ToDo項目のGoogle Calendarへの同期
- 03今後のカレンダー予定の確認
- 04機密性の高いツール操作の承認
MCP 対応
操作、ヘルスチェック、利用可能なツールの一覧表示を行うMCPエンドポイントを提供します。従来のRESTエンドポイントに加え、標準化されたAIツール連携に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI と Google Calendar を統合した Todo アシスタント
OpenAI の Assistant API と Google Calendar の連携を組み合わせた、最新の AI 搭載 ToDo リスト・カレンダー管理アプリケーションです。TypeScript で構築され、MCP(Model Context Protocol)と従来の API エンドポイントの両方を備えています。
Todo アシスタントのメイン画面
Todo アシスタントのメイン画面
Todo アシスタントのメイン画面
🌟 主な機能
- AI 搭載チャットインターフェース:OpenAI の GPT-3.5 Turbo を使用した自然言語でのやり取り
- スマートな ToDo 管理:自然言語を使って ToDo の追加、削除、一覧表示、切り替えが可能
- Google Calendar 連携:ToDo を Google Calendar とシームレスに同期
- 多言語サポート:英語とトルコ語を完全サポート
- ツール承認システム:機密性の高い操作に対する安全な承認ワークフロー
- MCP(Model Context Protocol):AI ツールとの標準化されたやり取り
- レスポンシブデザイン:モダンでモバイルフレンドリーなウェブインターフェース
- 永続ストレージ:信頼性の高いデータ管理を実現する SQLite データベース
🛠️ 技術スタック
-
バックエンド:
- Express を使用した Node.js
- TypeScript
- SQLite(better-sqlite3 経由)
- OpenAI Assistant API
- Google Calendar API
-
フロントエンド:
- HTML5 と CSS3
- モダンな JavaScript
- レスポンシブデザイン
-
AI と連携:
- OpenAI GPT-3.5 Turbo
- Model Context Protocol(MCP)
- Google Calendar 用 OAuth 2.0
📋 前提条件
- Node.js(v16 以上)
- npm または yarn
- OpenAI API キー
- Google Cloud Console アカウント
- SQLite
🚀 はじめに
-
リポジトリをクローン
git clone https://github.com/yourusername/todo-assistant.git cd todo-assistant -
依存関係をインストール
npm install -
環境を設定 ルートディレクトリに
.envファイルを作成します。OPENAI_API_KEY=your_openai_api_key PORT=3000 CLIENT_ID=your_google_client_id CLIENT_SECRET=your_google_client_secret GOOGLE_REDIRECT_URI=http://localhost:3000/google/callback -
ビルドして実行
# Build TypeScript npm run build # Start server npm start # Development mode with auto-reload npm run dev # Start with MCP enabled npm run dev:mcp
🗄️ データベース構造
Todos テーブル
CREATE TABLE todos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
text TEXT NOT NULL,
completed BOOLEAN NOT NULL DEFAULT 0,
createdAt TEXT NOT NULL
)
カレンダーイベントテーブル
CREATE TABLE calendar_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
todoId INTEGER NOT NULL,
title TEXT NOT NULL,
date TEXT NOT NULL,
time TEXT NOT NULL,
createdAt TEXT NOT NULL,
FOREIGN KEY (todoId) REFERENCES todos(id) ON DELETE CASCADE
)
🔌 API エンドポイント
従来の REST API
POST /api/thread- ユーザーのスレッドを作成/取得POST /api/chat- メッセージを送受信GET /api/history/:userId- チャット履歴を取得POST /api/tool-response- ツールの承認を処理
MCP エンドポイント
POST /mcp- MCP の主要なやり取り用エンドポイントGET /mcp/health- ヘルスチェックGET /mcp/tools- 利用可能なツールの一覧
💡 使用例
英語のコマンド
"Add 'Buy groceries' to my todo list"
"Show all my todos"
"Mark todo #3 as complete"
"Add 'Team meeting' to calendar for tomorrow at 2pm"
"Show my calendar events for next week"
トルコ語のコマンド
"Alışveriş yapmayı listeye ekle"
"Tüm görevlerimi göster"
"3 numaralı görevi tamamlandı olarak işaretle"
"Yarın saat 14:00'da takım toplantısını takvime ekle"
"Gelecek haftaki takvim etkinliklerimi göster"
🔒 セキュリティ機能
- 機密性の高い操作に対するツール承認ワークフロー
- Google Calendar 用 OAuth 2.0 認証
- 安全な認証情報管理
- 入力の検証とサニタイズ
🌐 Google Calendar の設定
- Google Cloud Console にアクセスします
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- Google Calendar API を有効にします
- OAuth 2.0 認証情報を設定します。
- アプリケーションの種類を「Web application」に設定します
- 承認済みのリダイレクト URI を追加します:
http://localhost:3000/google/callback - 認証情報をダウンロードし、
.envファイルを更新します
🤝 貢献
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/AmazingFeature) - 変更をコミットします(
git commit -m 'Add some AmazingFeature') - ブランチにプッシュします(
git push origin feature/AmazingFeature) - プルリクエストを作成します
📝 ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。
🙏 謝辞
- 強力な Assistant API を提供している OpenAI
- Google Calendar API チーム
- 貢献者とテスターの皆さん
📞 サポート
サポートが必要な場合は、GitHub リポジトリで Issue を作成するか、メンテナーにお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。