mcp-tdo is a Model Context Protocol (MCP) server that allows AI models to access and manage your todo notes and tasks through the tdo CLI tool.
- Retrieve todo note contents for today, tomorrow, or any date offset
- Search across all notes for specific content
- List all pending todos across all your notes
- Get count of pending todos across all your notes
- Create new todo notes
- Mark specific todos as complete
- Add new todo items to existing note files
- Fully compatible with the MCP specification
- Python 3.10+
- tdo CLI tool installed and accessible in your PATH
- uv for local development
Install mcp-tdo from PyPI using pip or uv:
# Using pip
pip install mcp-tdo
# Using uv (recommended)
uv add mcp-tdo
# Using pipx (for CLI tools)
pipx install mcp-tdo
For development or to get the latest changes:
git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
uv sync --dev
If installed from PyPI:
mcp-tdo
Or specify a custom path to the tdo executable:
mcp-tdo --tdo-path /path/to/tdo.sh
If running from source:
uv run mcp-tdo
To use this MCP server, add it to your MCP client configuration:
Option 1: Using direct command (PyPI install)
{
"mcpServers": {
"mcp-tdo": {
"command": "mcp-tdo"
}
}
}
If your tdo executable is not in PATH:
{
"mcpServers": {
"mcp-tdo": {
"command": "mcp-tdo",
"args": ["--tdo-path", "/path/to/your/tdo"]
}
}
}
Option 2: Using uv for development
{
"mcpServers": {
"mcp-tdo": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tdo", "mcp-tdo"]
}
}
}
Option 3: Using python directly
{
"mcpServers": {
"mcp-tdo": {
"command": "python",
"args": ["-m", "mcp_tdo"]
}
}
}
Shows contents of todo notes for today or a specific date offset.
Parameters:
offset
: (optional) Offset like "1" for tomorrow, "-1" for yesterday, etc.
Searches for notes matching a query term.
Parameters:
query
: Search query term
Shows all pending todos (unchecked checkboxes) from all your notes.
No parameters required.
Shows the count of pending todos across all your notes.
No parameters required.
Creates a new todo note at the specified path.
Parameters:
note_path
: Path/name for the new note (e.g., 'tech/vim' or 'ideas')
Marks a specific todo item as done.
Parameters:
file_path
: Path to the file containing the todotodo_text
: Text of the todo item to mark as done
Adds a new todo item to a specified file.
Parameters:
file_path
: Path to the file to add the todo totodo_text
: Text of the todo item to add
This project uses uv for dependency management and Ruff for linting and formatting.
# Clone the repository
git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
# Install dependencies (including dev dependencies)
uv sync --dev
# Run tests
uv run pytest tests/ -v
# Run linter
uv run ruff check src/ tests/
# Format code
uv run ruff format src/ tests/
# Fix linting issues automatically
uv run ruff check --fix src/ tests/
# Run the MCP server locally
uv run mcp-tdo
# Install the package in development mode
uv sync
βββ src/mcp_tdo/ # Main package
β βββ models.py # Data models
β βββ tdo_client.py # TDO CLI integration
β βββ server.py # MCP server implementation
βββ tests/ # Test suite
βββ pyproject.toml # Project configuration
βββ uv.lock # Dependency lockfile
You tell me!
mcp-tdo was inspired by the need to give AI assistants access to personal task management tools, allowing for more productive interactions with AI models.
- Implementing proper error handling and command execution
- Working with the MCP protocol specification
- Managing file path and content operations safely
- dots2k β Dev Environment
- nvim2k β Personalized Editor
- sway2k β Desktop Environment
- qute2k β Personalized Browser
β hit the star button if you found this useful β
Source | Blog | Twitter | LinkedIn | More Links | Other Projects