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.
✨ Features
- 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
⚡ Setup
⚙️ Requirements
- Python 3.10+
- tdo CLI tool installed and accessible in your PATH
- uv for local development
💻 Installation
From PyPI (Recommended)
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
From Source
For development or to get the latest changes:
git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
uv sync --dev
🚀 Usage
Running the Server
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
MCP Server Configuration
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"]
}
}
}
🧩 Available Tools
get_todo_contents
Shows contents of todo notes for today or a specific date offset.
Parameters:
offset: (optional) Offset like "1" for tomorrow, "-1" for yesterday, etc.
search_notes
Searches for notes matching a query term.
Parameters:
query: Search query term
get_pending_todos
Shows all pending todos (unchecked checkboxes) from all your notes.
No parameters required.
get_todo_count
Shows the count of pending todos across all your notes.
No parameters required.
create_note
Creates a new todo note at the specified path.
Parameters:
note_path: Path/name for the new note (e.g., 'tech/vim' or 'ideas')
mark_todo_done
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
add_todo
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
🔧 Development
This project uses uv for dependency management and Ruff for linting and formatting.
Setup
# Clone the repository
git clone https://github.com/2kabhishek/mcp-tdo
cd mcp-tdo
# Install dependencies (including dev dependencies)
uv sync --dev
Common Development Commands
# 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
Project Structure
├── 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
🏗️ What's Next
✅ To-Do
You tell me!
🧑💻 Behind The Code
🌈 Inspiration
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.
💡 Challenges/Learnings
- Implementing proper error handling and command execution
- Working with the MCP protocol specification
- Managing file path and content operations safely
🧰 Tooling
- dots2k — Dev Environment
- nvim2k — Personalized Editor
- sway2k — Desktop Environment
- qute2k — Personalized Browser
🔍 More Info
⭐ hit the star button if you found this useful ⭐
Source | Blog | Twitter | LinkedIn | More Links | Other Projects
Metadata
Release files for mcp-tdo 0.1.2
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 | |
|---|---|---|---|---|
| mcp_tdo-0.1.2.tar.gz | 24.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_tdo-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.1 kB
Release files / mcp_tdo-0.1.2.tar.gz
| Download URL | mcp_tdo-0.1.2.tar.gz |
|---|---|
| Size | 24.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0b87fc11997144db1f7f9b9f67fe84218a24c912c7d7780261938d67b4aafe1
|
|
BLAKE2b-256 checksum How to use checksums |
bfe776b6b6c3a9dd33f852cadcc897b7ad2871c023fe476f564873d34f1a1e77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.
Transparency logRelease files / mcp_tdo-0.1.2-py3-none-any.whl
| Download URL | mcp_tdo-0.1.2-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46ced4e680bebc96a4d67afe3a534ee1b1c3503037b2201a0dbd1d4c00036869
|
|
BLAKE2b-256 checksum How to use checksums |
0a09e270f311138843102f16cca66b1da21b0c19bce60eb29d9004dc949d39d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.
Transparency logSecurity for mcp-tdo 0.1.2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcp_tdo-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 25, 2025.
Transparency logA 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.