{"_id":"@danjdewhurst/todo-md-mcp","_rev":"6-f84b19d3cadb07b48300b97dae6ee8a2","name":"@danjdewhurst/todo-md-mcp","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.0","author":{"name":"Dan"},"license":"MIT","_id":"@danjdewhurst/todo-md-mcp@0.1.0","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"bin":{"mcp-server-todo-md":"dist/index.js"},"dist":{"shasum":"69a6da63e122ccd378ebb2287fd16515923b1b23","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.0.tgz","fileCount":15,"integrity":"sha512-Cb+TUnSQBluXFuaNQsXwLULc4aBdYtUolEM/+KnNYN3aEWHCey+jnO3qPn6ndRi0/ZBrj/6kNdKn9Gm1YXHl4w==","signatures":[{"sig":"MEUCICtBNXPyduxnm1T4hwtFyMhC5WS1zVUd1mLbYeSDAxasAiEAlf1hLveA+fZNrghZTSgGaMvu1vBFCSyDmJWML8y8ckQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38629},"type":"module","gitHead":"75ff3eac647ebc22327c60ab128f622633d74679","scripts":{"dev":"npm run build && node dist/index.js","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","watch":"tsc --watch","format":"prettier --write src/**/*.ts","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest --watch"},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"repository":{"url":"git+https://github.com/danjdewhurst/todo-md-mcp.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for managing todos in markdown files","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^22","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/todo-md-mcp_0.1.0_1752528706420_0.40721492625518874","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.2","author":{"name":"Dan"},"license":"MIT","_id":"@danjdewhurst/todo-md-mcp@0.1.2","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"bin":{"mcp-server-todo-md":"dist/index.js"},"dist":{"shasum":"1acfed174d3418ab3109861a58ef21d247223504","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.2.tgz","fileCount":15,"integrity":"sha512-UJJXIPeI1uzTxnxitg9kvU7SOMg3jsQsI0AO8L3s4gE/LSW5rX2qh1o8H66KytID4nUh9lKB3tGCwzbdPrn8KA==","signatures":[{"sig":"MEUCIAkLvRUabnH9QH36OAFYMUtRL5YKVrOrn/ckjugOWurhAiEAv3P4HnbJWc4mZP2VVy6pMrT8v6UQvtkE551Et/wYDYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38630},"type":"module","gitHead":"c7887a6dd3fc41a37cb86be07101bcad0d9c6961","scripts":{"dev":"npm run build && node dist/index.js","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","watch":"tsc --watch","format":"prettier --write src/**/*.ts","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest --watch"},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"repository":{"url":"git+https://github.com/danjdewhurst/todo-md-mcp.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for managing todos in markdown files","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^22","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/todo-md-mcp_0.1.2_1752529117838_0.20466178162826254","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.3","author":{"name":"Dan"},"license":"MIT","_id":"@danjdewhurst/todo-md-mcp@0.1.3","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"bin":{"mcp-server-todo-md":"dist/index.js"},"dist":{"shasum":"06c4b6f6c76a5137fca22a3df1067f17cf9e3a62","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.3.tgz","fileCount":15,"integrity":"sha512-trcfqslCLjCnrltPzK3f/zAx/0clwuzAsxRixXCziT5o96ojBRXkrCRNmYF7g/F9QDMA4hBazacXKY4urJu2zw==","signatures":[{"sig":"MEQCIG/om1NMwwIQ4Vp64SZllXiFPUcvG7TlL3JMSNFyZgC5AiBAesHr5rrtyOdjuPa22rflEpRYnztL1+04B2jPHq9VXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38523},"type":"module","gitHead":"a4eeac1417065162050194834677a72fb18f46be","scripts":{"dev":"npm run build && node dist/index.js","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","watch":"tsc --watch","format":"prettier --write src/**/*.ts","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest --watch"},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"repository":{"url":"git+https://github.com/danjdewhurst/todo-md-mcp.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for managing todos in markdown files","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^22","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/todo-md-mcp_0.1.3_1752529485799_0.6599186622280246","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.4","author":{"name":"Dan"},"license":"MIT","_id":"@danjdewhurst/todo-md-mcp@0.1.4","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"bin":{"mcp-server-todo-md":"dist/index.js"},"dist":{"shasum":"8d32195043a85af026f658e2cbc10395b8750633","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.4.tgz","fileCount":15,"integrity":"sha512-k+SNxbHhitwUXbgNADUuoGF8AnfYiomwD5xIPeoKtPUIqP1mhR9ig6JVsk9puZmQ2ToHtyNqORZspCmomEqLrQ==","signatures":[{"sig":"MEYCIQDQc63A3c4e5w7WlIJ96ZyryZGLPpLnpoTzzv08mGDsKgIhAOv22f7FIwNwRZM982Im8iiEwwAMjQNneuJCmkUSaUVa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38974},"type":"module","gitHead":"eecc942a533c5c7e40ed9265993d4050116d663a","scripts":{"dev":"npm run build && node dist/index.js","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","watch":"tsc --watch","format":"prettier --write src/**/*.ts","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest --watch"},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"repository":{"url":"git+https://github.com/danjdewhurst/todo-md-mcp.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for managing todos in markdown files","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^22","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/todo-md-mcp_0.1.4_1752529906470_0.44998701840306676","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.5","author":{"name":"Dan"},"license":"MIT","_id":"@danjdewhurst/todo-md-mcp@0.1.5","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"bin":{"mcp-server-todo-md":"dist/index.js"},"dist":{"shasum":"4b0da7ae47a84fe7a320b9b21e6fe1c3d80c04d1","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.5.tgz","fileCount":15,"integrity":"sha512-gCA3wCZ2x5npHLv9MmQkztxFKnlb4zwZ1kY51nfU9ubQ4RbX+hIREDvmsG+9V9ZEIyt6oBe0hugpDv5YdEQM1Q==","signatures":[{"sig":"MEQCIDimqE0RbluXnQAUufd2CaUVIFKS6RS3xXVAyujGCr6nAiBCqNr44q0aYlOCC/8E88iNEa5dnCzBZAqOlhJ/UqZO/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39607},"type":"module","gitHead":"4b9aa641d9c36ebbc3039bfefeb48aa652a3cdae","scripts":{"dev":"npm run build && node dist/index.js","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","watch":"tsc --watch","format":"prettier --write src/**/*.ts","prepare":"husky","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest --watch","format:check":"prettier --check src/**/*.ts"},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"repository":{"url":"git+https://github.com/danjdewhurst/todo-md-mcp.git","type":"git"},"_npmVersion":"10.9.0","description":"MCP server for managing todos in markdown files","directories":{},"lint-staged":{"*.{json,md}":["prettier --write"],"src/**/*.{ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"22.12.0","dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","husky":"^9.1.7","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"^5.3.3","@types/node":"^22","lint-staged":"^16.1.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/todo-md-mcp_0.1.5_1752530610265_0.7123079302780357","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@danjdewhurst/todo-md-mcp","version":"0.1.6","description":"MCP server for managing todos in markdown files","license":"MIT","author":{"name":"Daniel Dewhurst"},"repository":{"type":"git","url":"git+https://github.com/danjdewhurst/todo-md-mcp.git"},"homepage":"https://github.com/danjdewhurst/todo-md-mcp","bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"type":"module","bin":{"mcp-server-todo-md":"dist/index.js"},"scripts":{"build":"tsc && shx chmod +x dist/*.js","prepare":"husky","watch":"tsc --watch","dev":"npm run build && node dist/index.js","test":"vitest run","test:watch":"vitest --watch","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","format":"prettier --write src/**/*.ts","format:check":"prettier --check src/**/*.ts"},"dependencies":{"@modelcontextprotocol/sdk":"0.5.0"},"devDependencies":{"@types/node":"^22","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","husky":"^9.1.7","lint-staged":"^16.1.2","prettier":"^3.2.5","shx":"^0.3.4","typescript":"^5.3.3","vitest":"^1.4.0"},"lint-staged":{"src/**/*.{ts,tsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_id":"@danjdewhurst/todo-md-mcp@0.1.6","gitHead":"396ed406919da1f5e2bf8afdbc643a5a63b4b680","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-KbRVNAQw9I/yQrSde+intPFcmJixeMIybxwunDvXRD+kVv2MXlfprSyULQTmKzHt4HkFJGdtE0dsPfoEdkaIow==","shasum":"af934f3a880cc8cf9975d102cbaf01b4df67da53","tarball":"https://registry.npmjs.org/@danjdewhurst/todo-md-mcp/-/todo-md-mcp-0.1.6.tgz","fileCount":15,"unpackedSize":39631,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCexhxGzd6stqpaJpQeG6W1bPTxgpy48yzQIRdAmoBZFQIhAOhOQ1uu4OsSUN0PoWgdyRwtPfT4veR/yQFGfTATVfC/"}]},"_npmUser":{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"},"directories":{},"maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/todo-md-mcp_0.1.6_1752531139762_0.33140613888174864"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-14T21:31:46.295Z","modified":"2025-07-14T22:12:20.121Z","0.1.0":"2025-07-14T21:31:46.618Z","0.1.2":"2025-07-14T21:38:38.013Z","0.1.3":"2025-07-14T21:44:45.974Z","0.1.4":"2025-07-14T21:51:46.648Z","0.1.5":"2025-07-14T22:03:30.459Z","0.1.6":"2025-07-14T22:12:19.946Z"},"bugs":{"url":"https://github.com/danjdewhurst/todo-md-mcp/issues"},"author":{"name":"Daniel Dewhurst"},"license":"MIT","homepage":"https://github.com/danjdewhurst/todo-md-mcp","repository":{"type":"git","url":"git+https://github.com/danjdewhurst/todo-md-mcp.git"},"description":"MCP server for managing todos in markdown files","maintainers":[{"name":"danjdewhurst","email":"danjdewhurst@gmail.com"}],"readme":"# Todo Markdown MCP Server\n\n[![npm version](https://badge.fury.io/js/@danjdewhurst%2Ftodo-md-mcp.svg)](https://badge.fury.io/js/@danjdewhurst%2Ftodo-md-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![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)\n[![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)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org)\n[![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)\n\nAn 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.\n\n## Features\n\n- **Markdown-based storage**: Todos are stored in a simple `todo.md` file using standard checkbox syntax\n- **Full CRUD operations**: Create, read, update, and delete todo items\n- **Persistent IDs**: Each todo has a unique identifier for reliable updates\n- **MCP compliance**: Follows the Model Context Protocol specification\n- **TypeScript**: Fully typed implementation with comprehensive error handling\n- **Testing**: Complete test suite with Vitest\n\n## Installation\n\n### From NPM\n\n```bash\nnpm install -g @danjdewhurst/todo-md-mcp\n```\n\n### Local Development\n\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/danjdewhurst/todo-md-mcp.git\n   cd todo-md-mcp\n   ```\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Build the project:\n   ```bash\n   npm run build\n   ```\n\n## Usage\n\n### With Claude Desktop\n\nAdd this server to your Claude Desktop configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"todo-md\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/todo-md-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\nOr if installed globally via NPM:\n\n```json\n{\n  \"mcpServers\": {\n    \"todo-md\": {\n      \"command\": \"npx\",\n      \"args\": [\"@danjdewhurst/todo-md-mcp\"]\n    }\n  }\n}\n```\n\n#### Configuring Todo File Location\n\nBy 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:\n\n```json\n{\n  \"mcpServers\": {\n    \"todo-md\": {\n      \"command\": \"npx\",\n      \"args\": [\"@danjdewhurst/todo-md-mcp\"],\n      \"env\": {\n        \"TODO_FILE_PATH\": \"/Users/yourname/Documents/todo.md\"\n      }\n    }\n  }\n}\n```\n\nThis solves the common \"read-only file system\" error by ensuring the todo file is created in a location where you have write permissions.\n\n**Recommended locations:**\n\n- `~/Documents/todo.md` - Your Documents folder\n- `~/Desktop/todo.md` - Your Desktop\n- `/path/to/your/project/todo.md` - Within a specific project\n\n**Important:** Make sure the directory exists and you have write permissions to the specified location.\n\n### Available Tools\n\nThe server provides the following MCP tools:\n\n#### `list_todos`\n\nLists all todo items from the markdown file.\n\n**Parameters:** None\n\n**Returns:** JSON object with todos array and summary statistics\n\n#### `add_todo`\n\nAdds a new todo item.\n\n**Parameters:**\n\n- `text` (string, required): The todo item text\n\n**Returns:** The created todo item with generated ID\n\n#### `update_todo`\n\nUpdates an existing todo item.\n\n**Parameters:**\n\n- `id` (string, required): The todo item ID\n- `text` (string, optional): New text for the todo\n- `completed` (boolean, optional): Mark as completed/incomplete\n\n**Returns:** The updated todo item\n\n#### `delete_todo`\n\nDeletes a todo item.\n\n**Parameters:**\n\n- `id` (string, required): The todo item ID to delete\n\n**Returns:** Success confirmation\n\n#### `clear_completed`\n\nRemoves all completed todo items.\n\n**Parameters:** None\n\n**Returns:** Number of items cleared\n\n## File Format\n\nThe server manages a `todo.md` file in your project root with the following format:\n\n```markdown\n# Todo List\n\n- [ ] First incomplete task <!-- id:550e8400-e29b-41d4-a716-446655440000 -->\n- [x] Completed task <!-- id:6ba7b810-9dad-11d1-80b4-00c04fd430c8 -->\n- [ ] Another task <!-- id:6ba7b811-9dad-11d1-80b4-00c04fd430c8 -->\n\n<!-- Generated by MCP Todo Server -->\n```\n\nEach todo item includes:\n\n- Standard markdown checkbox syntax (`- [ ]` or `- [x]`)\n- The todo text\n- A hidden HTML comment with a unique ID for tracking\n\n## Development\n\n### Scripts\n\n- `npm run build` - Build the TypeScript project\n- `npm run dev` - Build and run the server\n- `npm run watch` - Watch for changes and rebuild\n- `npm test` - Run the test suite\n- `npm run test:watch` - Run tests in watch mode\n- `npm run lint` - Run ESLint\n- `npm run format` - Format code with Prettier\n\n### Testing\n\nThe project includes comprehensive tests covering all functionality:\n\n```bash\nnpm test\n```\n\nTests cover:\n\n- Markdown parsing and generation\n- CRUD operations\n- Error handling\n- File management\n\n### Project Structure\n\n```\ntodo-md-mcp/\n├── src/\n│   ├── index.ts              # Main MCP server implementation\n│   ├── todoManager.ts        # Todo CRUD operations and markdown parsing\n│   └── types.ts              # TypeScript type definitions\n├── tests/\n│   └── todoManager.test.ts   # Test suite\n├── dist/                     # Built JavaScript files\n├── package.json\n├── tsconfig.json\n├── .eslintrc.json\n├── .prettierrc\n├── vitest.config.ts\n└── README.md\n```\n\n## Requirements\n\n- Node.js 18 or higher\n- An MCP-compatible client (like Claude Desktop)\n\n## License\n\nMIT\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Run the test suite\n6. Submit a pull request\n\n## Model Context Protocol\n\nThis 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.\n\nFor more information about MCP, visit the [official documentation](https://modelcontextprotocol.io/introduction).\n","readmeFilename":"README.md"}