Skip to main content
Glama

Todo Markdown MCP Server

by danjdewhurst
MIT License
8
4
README.md6.41 kB
# Todo Markdown MCP Server [![npm version](https://badge.fury.io/js/@danjdewhurst%2Ftodo-md-mcp.svg)](https://badge.fury.io/js/@danjdewhurst%2Ftodo-md-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Test](https://github.com/danjdewhurst/todo-md-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/danjdewhurst/todo-md-mcp/actions/workflows/test.yml) [![Lint and Format](https://github.com/danjdewhurst/todo-md-mcp/actions/workflows/lint-and-format.yml/badge.svg)](https://github.com/danjdewhurst/todo-md-mcp/actions/workflows/lint-and-format.yml) [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org) [![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/) An MCP (Model Context Protocol) server that provides todo list functionality backed by a simple markdown file. This server allows AI assistants to manage todo items in a standardized markdown format. ## Features - **Markdown-based storage**: Todos are stored in a simple `todo.md` file using standard checkbox syntax - **Full CRUD operations**: Create, read, update, and delete todo items - **Persistent IDs**: Each todo has a unique identifier for reliable updates - **MCP compliance**: Follows the Model Context Protocol specification - **TypeScript**: Fully typed implementation with comprehensive error handling - **Testing**: Complete test suite with Vitest ## Installation ### From NPM ```bash npm install -g @danjdewhurst/todo-md-mcp ``` ### Local Development 1. Clone this repository: ```bash git clone https://github.com/danjdewhurst/todo-md-mcp.git cd todo-md-mcp ``` 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` ## Usage ### With Claude Desktop Add this server to your Claude Desktop configuration: ```json { "mcpServers": { "todo-md": { "command": "node", "args": ["/path/to/todo-md-mcp/dist/index.js"] } } } ``` Or if installed globally via NPM: ```json { "mcpServers": { "todo-md": { "command": "npx", "args": ["@danjdewhurst/todo-md-mcp"] } } } ``` #### Configuring Todo File Location By default, the server creates a `todo.md` file in the current working directory. When using Claude Desktop, this might be a system directory where you don't have write permissions. To specify a custom location for your todo file, use the `TODO_FILE_PATH` environment variable: ```json { "mcpServers": { "todo-md": { "command": "npx", "args": ["@danjdewhurst/todo-md-mcp"], "env": { "TODO_FILE_PATH": "/Users/yourname/Documents/todo.md" } } } } ``` This solves the common "read-only file system" error by ensuring the todo file is created in a location where you have write permissions. **Recommended locations:** - `~/Documents/todo.md` - Your Documents folder - `~/Desktop/todo.md` - Your Desktop - `/path/to/your/project/todo.md` - Within a specific project **Important:** Make sure the directory exists and you have write permissions to the specified location. ### Available Tools The server provides the following MCP tools: #### `list_todos` Lists all todo items from the markdown file. **Parameters:** None **Returns:** JSON object with todos array and summary statistics #### `add_todo` Adds a new todo item. **Parameters:** - `text` (string, required): The todo item text **Returns:** The created todo item with generated ID #### `update_todo` Updates an existing todo item. **Parameters:** - `id` (string, required): The todo item ID - `text` (string, optional): New text for the todo - `completed` (boolean, optional): Mark as completed/incomplete **Returns:** The updated todo item #### `delete_todo` Deletes a todo item. **Parameters:** - `id` (string, required): The todo item ID to delete **Returns:** Success confirmation #### `clear_completed` Removes all completed todo items. **Parameters:** None **Returns:** Number of items cleared ## File Format The server manages a `todo.md` file in your project root with the following format: ```markdown # Todo List - [ ] First incomplete task <!-- id:550e8400-e29b-41d4-a716-446655440000 --> - [x] Completed task <!-- id:6ba7b810-9dad-11d1-80b4-00c04fd430c8 --> - [ ] Another task <!-- id:6ba7b811-9dad-11d1-80b4-00c04fd430c8 --> <!-- Generated by MCP Todo Server --> ``` Each todo item includes: - Standard markdown checkbox syntax (`- [ ]` or `- [x]`) - The todo text - A hidden HTML comment with a unique ID for tracking ## Development ### Scripts - `npm run build` - Build the TypeScript project - `npm run dev` - Build and run the server - `npm run watch` - Watch for changes and rebuild - `npm test` - Run the test suite - `npm run test:watch` - Run tests in watch mode - `npm run lint` - Run ESLint - `npm run format` - Format code with Prettier ### Testing The project includes comprehensive tests covering all functionality: ```bash npm test ``` Tests cover: - Markdown parsing and generation - CRUD operations - Error handling - File management ### Project Structure ``` todo-md-mcp/ ├── src/ │ ├── index.ts # Main MCP server implementation │ ├── todoManager.ts # Todo CRUD operations and markdown parsing │ └── types.ts # TypeScript type definitions ├── tests/ │ └── todoManager.test.ts # Test suite ├── dist/ # Built JavaScript files ├── package.json ├── tsconfig.json ├── .eslintrc.json ├── .prettierrc ├── vitest.config.ts └── README.md ``` ## Requirements - Node.js 18 or higher - An MCP-compatible client (like Claude Desktop) ## License MIT ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests for new functionality 5. Run the test suite 6. Submit a pull request ## Model Context Protocol This server implements the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), an open protocol that standardizes how applications provide context to Large Language Models. MCP enables secure, controlled access to local and remote resources. For more information about MCP, visit the [official documentation](https://modelcontextprotocol.io/introduction).

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danjdewhurst/todo-md-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server