Skip to main content

Todo Management Server

This example demonstrates how to build a complete CRUD (Create, Read, Update, Delete) MCP server with in-memory state management in TypeScript.

Overview

The Todo server showcases:
  • State Management: In-memory data storage
  • CRUD Operations: Full create, read, update, delete functionality
  • Service Architecture: Separation of concerns with service layer
  • Type Safety: Strong typing with TypeScript interfaces
  • ID Generation: Unique identifier creation

Project Structure

Data Model

Todo Interface

todo.service.ts

In-Memory Storage

Service Layer

ID Generation

This generates unique IDs by combining:
  • Random alphanumeric string
  • Current timestamp in base-36

CRUD Operations

Create Todo

Read Operations

Update Operations

Delete Operations

MCP Server Implementation

Server Setup

index.ts

Tool: Create Todo

Tool: List Todos

Tool: Complete Todo

Tool: Update Todo

Tool: Delete Todo

Tool: Clear Completed

Starting the Server

Installation & Setup

Dependencies

package.json

TypeScript Configuration

tsconfig.json

Building and Running

Usage Examples

Creating Todos

Listing Todos

Completing a Todo

Updating a Todo

Deleting a Todo

Clearing Completed Todos

Configuration for Claude Desktop

claude_desktop_config.json

State Management Patterns

Immutability

Safe Mutations

Timestamp Tracking

Advanced Features

Adding Priorities

Adding Tags

Persistent Storage

For production use, replace in-memory storage with persistent storage:

Testing

Unit Tests

Key Takeaways

  1. Separation of Concerns: Keep business logic in service layer
  2. Type Safety: Use TypeScript interfaces for data models
  3. ID Generation: Create unique, collision-resistant IDs
  4. State Management: Handle in-memory state carefully
  5. Tool Design: Create focused, single-purpose tools

Next Steps