db4app Todo MCP Server
# db4app-todo-mcp-server
MCP server for db4.app todo list app - enables LLMs to manage todos via Model Context Protocol using the Postgres TCP protocol.
## Installation
```bash
npm install -g db4app-todo-mcp-server
```
Or use with `npx` (no installation needed):
```bash
npx db4app-todo-mcp-server
```
## Usage
**Important**: This MCP server uses the **Postgres TCP protocol** to connect directly to your browser database, just like `psql` or other Postgres clients. It uses TLS encryption and password authentication.
### With LM Studio
1. **Locate your `mcp.json` file:**
- **macOS:** `~/Library/Application Support/LM Studio/mcp.json`
- **Windows:** `%APPDATA%\LM Studio\mcp.json`
- **Linux:** `~/.config/LM Studio/mcp.json`
2. **Get your Connection ID and Auth Token:**
- Open the Database page in your browser
- Your **Connection ID** is displayed in the Connection Info section
- Your **Auth Token** is also shown in the Connection Info section (this is your password)
3. **Install the todo-mcp app** from the Community Apps page in db4.app
4. **Add this to the `mcpServers` object in your `mcp.json`:**
```json
{
"mcpServers": {
"db4app-todo": {
"command": "npx",
"args": [
"-y",
"db4app-todo-mcp-server@latest"
],
"env": {
"MCP_POSTGRES_URL": "postgres://postgres:YOUR_AUTH_TOKEN@YOUR_CONNECTION_ID.pg.db4.app",
"MCP_SCHEMA": "todo_mcp"
}
}
}
}
```
**Important Notes:**
- Replace `YOUR_AUTH_TOKEN` with your actual auth token from step 2
- Replace `YOUR_CONNECTION_ID` with your Connection ID from step 2
- The connection string format is: `postgres://postgres:AUTH_TOKEN@CONNECTION_ID.pg.db4.app`
- Each browser tab has its own unique Connection ID and Auth Token - make sure you use the correct ones
- **Postgres TCP Protocol**: The MCP server uses the standard Postgres wire protocol with TLS encryption, just like `psql` or DBeaver
5. **Restart LM Studio** to load the new MCP server configuration.
### With Claude Desktop
1. **Locate your Claude Desktop config:**
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`
2. **Add the same configuration** as above to the `mcpServers` object.
3. **Restart Claude Desktop.**
## Available Tools
### `add_todo`
Add a new todo item to the list.
**Parameters:**
- `title` (required): The title of the todo item
- `description` (optional): Additional details
- `category` (optional): Category name (e.g., "Work", "Personal", "Shopping")
- `priority` (optional): Priority level (0=normal, 1=high, 2=urgent, default: 0)
- `due_date` (optional): Due date in ISO format (e.g., "2024-12-31T23:59:59Z")
**Example usage:**
```
"Add a todo to finish the project report by end of month, high priority, in the Work category"
```
### `mark_as_done`
Mark a todo item as completed.
**Parameters:**
- `todo_id` (required): The ID of the todo to mark as done
**Example usage:**
```
"Mark todo #5 as done"
"Complete the todo about finishing the report"
```
### `list_todos`
List all todos with optional filters.
**Parameters:**
- `show_completed` (optional): Show completed todos (default: true)
- `category` (optional): Filter by category name
- `priority` (optional): Filter by priority level (0, 1, or 2)
**Example usage:**
```
"Show me all my pending todos"
"List all high priority todos in the Work category"
"What todos do I have due today?"
```
### `remove_todo`
Delete a todo item.
**Parameters:**
- `todo_id` (required): The ID of the todo to remove
**Example usage:**
```
"Delete todo #3"
"Remove the todo about buying groceries"
```
## Environment Variables
- `MCP_POSTGRES_URL`: Postgres connection URL (format: `postgres://postgres:AUTH_TOKEN@CONNECTION_ID.pg.db4.app`)
- `MCP_SCHEMA`: Schema name for todo tables (default: `todo_mcp`)
- `MCP_CONNECTION_ID`: Browser connection ID (alternative to full URL)
- `MCP_AUTH_TOKEN`: Auth token for authentication (alternative to full URL)
## Troubleshooting
### Connection Issues
- **Postgres TCP Protocol**: The MCP server uses the standard Postgres wire protocol with TLS encryption, just like `psql` or DBeaver
- **Connection String Format**: `postgres://postgres:AUTH_TOKEN@CONNECTION_ID.pg.db4.app`
- **Auth Token Required**: You must provide the auth token in the connection string (it's your password)
- **TLS Encryption**: Connections are automatically encrypted using TLS (no additional configuration needed)
### Password Authentication Failed
If you see `FATAL: Password authentication failed`:
1. **Get your Auth Token**: Open the Database page → Connection Info section
2. **Use the exact token**: Copy the token and use it in your connection string
3. **Token persistence**: The token is auto-generated and stored in your browser's localStorage
4. **Single error message**: You should see only ONE error message. If you see multiple errors, please report it as a bug.
### Schema Not Found
If you see errors about the schema not existing:
1. **Install the app**: Make sure you've installed the "Todo List with MCP" app from the Community Apps page
2. **Check schema name**: Verify `MCP_SCHEMA` matches the schema name (default: `todo_mcp`)
3. **Verify installation**: Run `SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'todo_mcp';` to confirm the schema exists
## License
MIT
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: add_todo creates items, list_todos retrieves them, mark_as_done updates completion status, and remove_todo deletes items. The descriptions reinforce these distinct roles, making tool selection unambiguous for an agent.
All tool names follow a consistent verb_noun pattern with snake_case (add_todo, list_todos, mark_as_done, remove_todo). The verbs are descriptive and aligned with CRUD operations, creating a predictable and readable naming convention throughout the set.
With 4 tools, this server is well-scoped for a todo management domain, covering essential CRUD operations without bloat. Each tool earns its place by addressing a core need in the todo lifecycle, making the count appropriate and efficient for the server's purpose.
The tool set provides complete CRUD coverage for todo items (create, read, update, delete) and includes filtering capabilities. A minor gap exists in lacking an explicit update_todo tool for modifying non-completion fields like title or due date, but agents can work around this by removing and re-adding items.