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
Metadata
Release files for rtm-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rtm_mcp-1.0.0.tar.gz | 123.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rtm_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 149.0 kB
Release files / rtm_mcp-1.0.0.tar.gz
| Download URL | rtm_mcp-1.0.0.tar.gz |
|---|---|
| Size | 123.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1be95f34a8aeb9145bbd1e5b7bc1494f7a3cf283739ef4ab75ba62b6f2090a04
|
|
BLAKE2b-256 checksum How to use checksums |
622e7e8395c1d728abdd4af548bf76e16a3b98c81bebf7de77e55fa382279e89
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / rtm_mcp-1.0.0-py3-none-any.whl
| Download URL | rtm_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 25.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf42aa24fb8c037e21a27009744fadc8a3bbdb17c13c3f98f259246bc7329afd
|
|
BLAKE2b-256 checksum How to use checksums |
e25dd6027bdc72efd6d09eb767dae6e6995bf57ec3bb68cf75107c517041af83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for rtm-mcp 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.