Todo App using MCP Server について
Google Gemini APIで自然言語の指示を解釈し、MongoDBに保存するExpress.js製のToDoアプリです。コマンドでタスクを管理したい人向けで、SSEによるリアルタイム更新にも対応します。
主な機能
- 01自然言語でToDoを追加
- 02完了済みを含むToDo一覧
- 03MongoDB IDでToDoを完了
- 04MongoDB IDでToDoを削除
- 05SSEによるリアルタイム更新
活用シーン
- 01一文で買い物タスクを登録
- 02未完了または全ToDoを確認
- 03指定したToDoを完了扱いにする
- 04MCPクライアントで変更を受信
MCP 対応
MCPとSSEを使ってリアルタイム更新を提供し、互換クライアント向けに`/sse`エンドポイントを備えています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:3000/sseclaude mcp add --transport http to-do http://localhost:3000/sse{"mcpServers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}Cursor で開く{"servers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}VS Code で開く{"mcpServers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}{"mcpServers":{"to-do":{"serverUrl":"http://localhost:3000/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
MCP サーバーを使用した Todo アプリ
Google Gemini API による自然言語処理、永続化のための MongoDB、Server-Sent Events(SSE)を介したリアルタイム更新のための MCP(Model Context Protocol)で機能を強化した、シンプルな Todo アプリケーションです。Express.js を使用したモジュール式の MVC アーキテクチャで構築されています。
機能
- 自然言語を使って Todo を追加(例:「牛乳を買うタスクを追加」)
- Todo を一覧表示(完了済みのものを含めるかどうかを指定可能)
- MongoDB ID を使って Todo を完了済みにする
- MongoDB ID を使って Todo を削除
- MCP を使用した Server-Sent Events(SSE)でリアルタイム更新を受信
技術スタック
- Node.js:サーバーランタイム
- Express.js:ルーティングとミドルウェア
- MongoDB(Atlas):クラウドベースの NoSQL データベース
- Mongoose:MongoDB 用 ODM
- Google Gemini API:自然言語コマンドの解釈を処理
- @modelcontextprotocol/sdk:MCP 統合と SSE 用
- dotenv:環境変数の管理用
前提条件
- Node.js(v18 以降)
- MongoDB Atlas クラスター(認証情報が必要)
- Google Gemini API キー(Google AI Studio から取得できます)
インストール
-
リポジトリをクローン
git clone https://github.com/theatulanand/to-do-mcp-server.git cd todo-mcp-single -
依存関係をインストール
npm install -
環境変数を設定
ルートディレクトリに
.envファイルを作成します:PORT=3000 MONGO_URI=URI GEMINI_API_KEY=
アプリの実行
サーバーを起動します:
npm start
次のように表示されます:
Connected to MongoDB with Mongoose
Server running on http://localhost:3000
サーバーを停止するには、Ctrl + C を押します。
使用方法
JSON 本文を指定して /api/command に POST リクエストを送信します:
{ "command": "Add a task to buy milk" }
コマンドの例
-
追加:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Add a task to buy milk"}' -
一覧表示:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "List my todos"}' -
完了:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Complete todo with ID some_mongodb_id"}' -
削除:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Delete todo with ID some_mongodb_id"}' -
完了済みのものも含めて一覧表示:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "List my todos including completed"}'
リアルタイム更新(SSE)
ライブ更新を受信するには、/sse に接続します。(MCP 対応クライアントが必要です。)
プロジェクト構成
todo-mcp-single/
├── models/ # Mongoose schemas
│ └── Todo.js
├── controllers/ # Business logic
│ └── todoController.js
├── routes/ # API routes
│ └── todoRoutes.js
├── utils/ # Utility functions (e.g., Gemini integration)
│ └── gemini.js
├── .env # Environment configuration
└── server.js # App entry point
トラブルシューティング
- MongoDB 接続エラー:Atlas の MONGO_URI と IP ホワイトリストを確認してください。
- Gemini API エラー:API キーと
generativelanguage.googleapis.comへのネットワークアクセスを確認してください。 - 認識されないコマンド:デバッグのため、ログ内の Gemini の生出力を確認してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。