RTM MCP Server
A production-quality Model Context Protocol (MCP) server for Remember The Milk task management.
Enables Claude to manage your tasks through natural language conversation.
Features
- Full RTM API Coverage: 30+ tools covering tasks, lists, tags, notes, and more
- Smart Add Syntax: Natural language task creation (
"Call mom ^tomorrow !1 #family") - Undo Support: All write operations return transaction IDs for undo
- Async Performance: Built on httpx with connection pooling
- Type Safety: Full Pydantic models and type hints
Installation
Using uvx (Recommended)
uvx rtm-mcp
Using pip
pip install rtm-mcp
From Source
git clone https://github.com/ljadach/rtm-mcp.git
cd rtm-mcp
uv sync
Setup
1. Get RTM API Credentials
- Go to RTM API Keys
- Create a new API key
- Note your API Key and Shared Secret
2. Run Setup
rtm-setup
This will:
- Prompt for your API credentials
- Open your browser for authorization
- Save the auth token to
~/.config/rtm-mcp/config.json
3. Configure Claude Desktop
Add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"rtm": {
"command": "uvx",
"args": ["rtm-mcp"]
}
}
}
Usage
Once configured, you can ask Claude to manage your tasks:
- "Show my tasks due today"
- "Add a task to buy groceries tomorrow, high priority"
- "Complete the grocery task"
- "What high priority tasks do I have?"
- "Move the meeting prep task to my Work list"
- "Add a note to the project task"
Smart Add Syntax
When adding tasks, use RTM's Smart Add syntax:
| Symbol | Meaning | Example |
|---|---|---|
^ | Due date | ^tomorrow, ^next friday |
! | Priority | !1 (high), !2 (medium), !3 (low) |
# | Tag | #work, #urgent |
@ | Location | @home, @office |
= | Estimate | =30min, =2h |
* | Repeat | *daily, *every monday |
Example: "Review report ^friday !1 #work =1h *weekly"
Available Tools
Tasks
list_tasks- List tasks with filtersadd_task- Create a new taskcomplete_task/uncomplete_task- Mark done or reopendelete_task- Remove a taskpostpone_task- Move due date by one daymove_task- Move to different listset_task_name- Rename taskset_task_due_date- Change due dateset_task_priority- Set priority levelset_task_recurrence- Set repeat patternset_task_start_date- Set start dateset_task_estimate- Set time estimateset_task_url- Attach URLadd_task_tags/remove_task_tags- Manage tags
Notes
add_note- Add note to taskedit_note- Edit existing notedelete_note- Remove noteget_task_notes- View all notes
Lists
get_lists- List all listsadd_list- Create new listrename_list- Rename listdelete_list- Delete listarchive_list/unarchive_list- Archive managementset_default_list- Set default list
Utilities
test_connection- Test API connectivitycheck_auth- Verify authenticationget_tags- List all tagsget_locations- List saved locationsget_settings- View user settingsget_contacts/get_groups- Contact managementparse_time- Parse natural language timeundo- Undo previous operation
Configuration
Environment Variables
RTM_API_KEY=your_api_key
RTM_SHARED_SECRET=your_shared_secret
RTM_AUTH_TOKEN=your_token
Config File
~/.config/rtm-mcp/config.json:
{
"api_key": "your_api_key",
"shared_secret": "your_shared_secret",
"token": "your_token"
}
Development
# Install dev dependencies
make dev
# Run linting
make lint
# Run tests
make test
# Run with coverage
make test/coverage
# Format code
make format
Docker
docker build -t rtm-mcp .
docker run -it --rm \
-e RTM_API_KEY \
-e RTM_SHARED_SECRET \
-e RTM_AUTH_TOKEN \
rtm-mcp
Claude Desktop config for Docker:
{
"mcpServers": {
"rtm": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "RTM_API_KEY",
"-e", "RTM_SHARED_SECRET",
"-e", "RTM_AUTH_TOKEN",
"rtm-mcp"]
}
}
}
License
MIT License - see LICENSE for details.
Acknowledgments
- Remember The Milk for the excellent task management service
- FastMCP for the MCP framework
- Anthropic for Claude and the MCP specification