Microsoft Todo MCP Service
by jhirono
Verified
# Microsoft Todo MCP Service for Claude
This project provides a Model Context Protocol (MCP) service for Claude that allows you to interact with your Microsoft Todo tasks using natural language.
## Features
### Task List Management (Top-level containers that organize tasks into categories)
- View all your Microsoft Todo task lists
- Create new task lists for better organization
- Update existing task lists
- Delete task lists you no longer need
### Task Management
- Get tasks from specific lists with filtering and sorting options
- Create new tasks with rich details (due dates, priority, body text, etc.)
- Update existing tasks to change any property
- Delete tasks that are no longer needed
### Checklist Item Management (Subtasks)
- View checklist items (subtasks) for a task with completion status
- Create new checklist items to break down tasks
- Update checklist items to mark as complete or edit text
- Delete checklist items when no longer needed
## Setup
1. Clone this repository
2. Install dependencies:
```
npm install
```
### Setting up Azure App Registration
To use this MCP service, you need to register an application in the Azure portal to get the required credentials:
1. Go to [Azure App Registration Portal](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)
2. Click on "New registration"
3. Enter a name for your application (e.g., "Todo MCP for Claude")
4. Under "Supported account types", select "Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)"
5. Set the Redirect URI to "Web" and enter `http://localhost:3000/callback`
6. Click "Register"
7. Once registered, copy the "Application (client) ID" value - this will be your `CLIENT_ID`
8. From the left menu, click on "Certificates & secrets"
9. Under "Client secrets", click "New client secret"
10. Add a description (e.g., "MCP Access") and select an expiration period
11. Click "Add" and immediately copy the "Value" - this will be your `CLIENT_SECRET`
12. From the left menu, click on "API permissions"
13. Click "Add a permission" and select "Microsoft Graph"
14. Select "Delegated permissions"
15. Search for and select the following permissions:
- Tasks.ReadWrite
- Tasks.Read
16. Click "Add permissions"
17. Click "Grant admin consent" (if you have admin rights) or have your admin approve the permissions
3. Create a `.env` file using the provided `.env.example` template:
```
# Microsoft Graph API Credentials
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
TENANT_ID=consumers # Use 'consumers' for personal Microsoft accounts
REDIRECT_URI=http://localhost:3000/callback
# Token Storage Path (optional)
# TOKEN_FILE_PATH=/custom/path/to/tokens.json
```
4. Run the authentication server to get your token:
```
npm run auth
```
If your browser doesn't open automatically, manually navigate to:
```
http://localhost:3000
```
5. Build the MCP service:
```
npm run build
```
6. Update your Claude Desktop configuration to include this MCP service:
```json
{
"mcpServers": {
"mstodo": {
"command": "node",
"args": [
"/path/to/your/build/todo-index.js"
]
}
}
}
```
The Claude Desktop configuration file is located at:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
You can open it with the following commands:
**macOS**:
```
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
**Windows** (PowerShell):
```
notepad $env:APPDATA\Claude\claude_desktop_config.json
```
**Linux**:
```
xdg-open ~/.config/Claude/claude_desktop_config.json
```
## Usage
You can interact with the Microsoft Todo MCP service using natural language in Claude. Here are some examples:
### Task Management
**Viewing Tasks**
- "Show me my todo items due this week"
- "What tasks do I have in my Work list?"
- "List all my high priority tasks"
- "Show me tasks that are past due"
**Creating Tasks**
- "Add a new task to buy groceries this weekend"
- "Create a todo item to finish the quarterly report by next Friday"
- "Add 'Call dentist to schedule appointment' to my Personal list"
- "Create a task with high importance to submit project proposal by Tuesday"
**Updating Tasks**
- "Mark the 'Send email to client' task as complete"
- "Change the due date of my report task to next Monday"
- "Update the 'Team meeting' task to include agenda items in the description"
- "Postpone my 'Review documents' task by two days"
**Managing Subtasks**
- "Create a task to plan the company retreat and add subtasks for venue, catering, and activities"
- "Break down my 'Launch website' task into logical steps"
- "Add a subtask 'Buy milk' to my shopping list task"
- "Show me all the subtasks for my project planning task"
### Task List Management
**Managing Lists**
- "Show me all my todo lists"
- "Create a new list called 'Home Renovation'"
- "Rename my 'Work' list to 'Current Projects'"
- "Delete my 'Temporary' task list"
Claude will interpret these natural language requests and translate them into the appropriate Microsoft Todo MCP commands, handling the technical details for you.
## Authentication
The service uses Microsoft's OAuth 2.0 for authentication. The token is stored locally in a `tokens.json` file and will be refreshed automatically when needed.
To re-authenticate, run:
```
npm run auth
```
## License
This project is released under the MIT License. Feel free to modify and distribute it as needed.