Todo

MCP server implementing a complete todo management system with OAuth authentication, freemium billing model, and PostgreSQL database.
  • typescript

12

GitHub Stars

typescript

Language

6 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "sholajegede-todo_mcp_server": {
      "command": "node",
      "args": [
        "dist/server.js"
      ],
      "env": {
        "NODE_ENV": "development",
        "JWT_SECRET": "your_jwt_secret",
        "DATABASE_URL": "postgresql://your_connection_string_here",
        "KINDE_CLIENT_ID": "your_client_id",
        "KINDE_ISSUER_URL": "https://your-domain.kinde.com",
        "KINDE_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

You operate a modern MCP server that lets you chat with an intelligent Todo management system, authenticate users securely, store data in a PostgreSQL database, and manage access with a simple billing tier. This setup enables you to build interactive AI workflows where you can create, list, update, and delete todos through an MCP-compatible client while handling authentication and data persistence behind the scenes.

How to use

To interact with the Todo MCP Server, use an MCP-compatible client to issue commands through your chat interface. You will first authenticate, then manage your todos with simple chat commands. The typical flow is to log in, save your login token, and then perform operations like listing, creating, updating, or deleting todos. You can also log out when you’re done.

Authentication is done via a web-based flow. Start by requesting a login URL from your client, complete the sign-in in your browser, and copy the token back into the chat using the save_token command. After you’re authenticated, you can perform CRUD operations on your todos and monitor your usage under the free or paid tier.

Supported commands you can run from the chat include: login, save_token: <token>, list todos, create todo, update todo, delete todo, and logout. These commands let you manage your personal todo list and switch between authentication states as needed.

How to install

# Prerequisites
- Node.js v18 or higher
- A Neon PostgreSQL database (free tier)
- A Kinde account for authentication (free tier)
- Cursor MCP client for integration

# Step 1: Clone the project
git clone <your-repo-url>
cd todo_mcp_server

# Step 2: Install dependencies
npm install
# Step 3: Prepare environment (will create .env with placeholders)
chmod +x setup.sh
./setup.sh

This flow creates a .env file where you will set your database URL and authentication credentials.

# Step 4: Configure Neon database
# Update the .env file with your database URL
DATABASE_URL=postgresql://your-connection-string-here

# Step 5: Configure Kinde authentication
KINDE_ISSUER_URL=https://your-domain.kinde.com
KINDE_CLIENT_ID=your_client_id
KINDE_CLIENT_SECRET=your_client_secret

Next, initialize the database and start the servers. You will run the database setup, build the project, and then start the MCP server along with the authentication server.

# Step 5: Initialize Database
npm run setup-db

# Step 6: Build and Run
npm run build
npm start

Additional configuration and notes

Environment variables you will typically define in your environment file (.env) include the database URL and Kinde credentials, plus a secret key for JWTs and the Node environment. These are used by the MCP server to authenticate users, manage sessions, and store data securely.

Troubleshooting

If you encounter issues, verify that all services are running and that environment variables are correctly set. Common problems include database connection failures, authentication errors, and MCP client configuration mismatches.

Development commands

# Development
npm run dev
npm run auth-server

# Database
npm run setup-db

# Production
npm run build
npm start

Configuration

Create a .env file with the following variables to configure the server, authentication, and security workflow.

# Database
DATABASE_URL=postgresql://user:pass@host:port/db

# Kinde Authentication
KINDE_ISSUER_URL=https://your-domain.kinde.com
KINDE_CLIENT_ID=your_client_id
KINDE_CLIENT_SECRET=your_client_secret

# Security
JWT_SECRET=your_secret_key

# Environment
NODE_ENV=development

Tools and endpoints you can use

The server exposes tools for authenticating users and managing todos. You interact with these tools via chat commands like login, save_token, list todos, create todo, update todo, delete todo, and logout.

Available tools

login

Initiate authentication flow to obtain an access token via the MCP client.

save_token

Save the authentication token received after successful login to enable authenticated actions.

list_todos

Retrieve the list of todos for the authenticated user.

create_todo

Create a new todo item for the authenticated user.

update_todo

Update details of an existing todo item.

delete_todo

Delete a todo item belonging to the authenticated user.

logout

End the current user session and clear authentication state.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational