db4app Todo MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@db4app Todo MCP Serverlist my high priority todos due this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
npm install -g db4app-todo-mcp-serverOr use with npx (no installation needed):
npx db4app-todo-mcp-serverRelated MCP server: PostgreSQL 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
Locate your
mcp.jsonfile:macOS:
~/Library/Application Support/LM Studio/mcp.jsonWindows:
%APPDATA%\LM Studio\mcp.jsonLinux:
~/.config/LM Studio/mcp.json
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)
Install the todo-mcp app from the Community Apps page in db4.app
Add this to the
mcpServersobject in yourmcp.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_TOKENwith your actual auth token from step 2Replace
YOUR_CONNECTION_IDwith your Connection ID from step 2The connection string format is:
postgres://postgres:AUTH_TOKEN@CONNECTION_ID.pg.db4.appEach 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
psqlor DBeaver
Restart LM Studio to load the new MCP server configuration.
With Claude Desktop
Locate your Claude Desktop config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add the same configuration as above to the
mcpServersobject.Restart Claude Desktop.
Available Tools
add_todo
Add a new todo item to the list.
Parameters:
title(required): The title of the todo itemdescription(optional): Additional detailscategory(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 namepriority(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
psqlor DBeaverConnection String Format:
postgres://postgres:AUTH_TOKEN@CONNECTION_ID.pg.db4.appAuth 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:
Get your Auth Token: Open the Database page → Connection Info section
Use the exact token: Copy the token and use it in your connection string
Token persistence: The token is auto-generated and stored in your browser's localStorage
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:
Install the app: Make sure you've installed the "Todo List with MCP" app from the Community Apps page
Check schema name: Verify
MCP_SCHEMAmatches the schema name (default:todo_mcp)Verify installation: Run
SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'todo_mcp';to confirm the schema exists
License
MIT
Available Tools
4 toolsadd_todoB
Add a new todo item to the list. Use this when the user wants to create a new task or reminder. You can specify title, description, category, priority, and due date.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title of the todo item | |
| description | No | Optional description or additional details | |
| category | No | Optional category name (e.g., "Work", "Personal", "Shopping") | |
| priority | No | Priority level: 0=normal, 1=high, 2=urgent | |
| due_date | No | Optional due date in ISO format (e.g., "2024-12-31T23:59:59Z") | |
| postgresUrl | No | Override the Postgres connection URL (defaults to MCP_POSTGRES_URL) | |
| connectionId | No | Browser connection ID (used to construct connection URL if postgresUrl not provided) | |
| authToken | No | Auth token for authentication (used to construct connection URL if postgresUrl not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states this is for adding items, it doesn't cover important aspects like authentication requirements (implied by authToken parameter), potential side effects (e.g., database writes), error handling, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that efficiently convey purpose and usage. It's front-loaded with the core action and follows with context. While slightly verbose in listing parameters, each sentence serves a clear purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, mutation operation) and lack of both annotations and output schema, the description is moderately complete. It covers the basic purpose and usage but lacks details on behavioral aspects, return values, and error conditions that would be needed for robust agent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists the key parameters (title, description, category, priority, due date), which adds some semantic context beyond the schema. However, with 100% schema description coverage, the schema already documents all 8 parameters thoroughly, including technical ones like postgresUrl and connectionId. The description provides minimal additional value over what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a new todo item') and resource ('to the list'), making the purpose immediately understandable. It distinguishes this as a creation tool rather than listing, marking, or removing tools, though it doesn't explicitly contrast with sibling tools like 'list_todos' or 'remove_todo' by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('when the user wants to create a new task or reminder'), which helps the agent understand the appropriate scenario. However, it doesn't mention when not to use it or explicitly name alternatives among the sibling tools (e.g., 'use list_todos for viewing instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_todosB
List todos with optional filters. Use this when the user wants to see their todos. You can filter by completion status, category, or priority.
| Name | Required | Description | Default |
|---|---|---|---|
| show_completed | No | Whether to include completed todos in the results | |
| category | No | Optional category name to filter by | |
| priority | No | Optional priority level to filter by (0, 1, or 2) | |
| postgresUrl | No | Override the Postgres connection URL (defaults to MCP_POSTGRES_URL) | |
| connectionId | No | Browser connection ID (used to construct connection URL if postgresUrl not provided) | |
| authToken | No | Auth token for authentication (used to construct connection URL if postgresUrl not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions filtering capabilities, it doesn't describe important behavioral aspects like whether this is a read-only operation (implied but not stated), pagination behavior, error handling, authentication requirements, or rate limits. For a tool with 6 parameters including authentication-related ones, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that efficiently convey purpose and basic usage. It's front-loaded with the core functionality. However, the second sentence could be slightly more structured to separate usage context from filtering options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters including authentication-related ones and no output schema, the description is incomplete. It doesn't address the authentication parameters (postgresUrl, connectionId, authToken) at all, nor does it describe what the tool returns. Given the complexity and lack of annotations/output schema, more comprehensive guidance is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions filtering by 'completion status, category, or priority' which maps to the first three parameters. However, with 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds minimal value beyond what's in the schema, meeting the baseline expectation for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('todos'), making the purpose immediately understandable. It distinguishes from siblings like 'add_todo' or 'remove_todo' by focusing on retrieval rather than modification. However, it doesn't explicitly differentiate from potential overlapping list functions that might exist in other contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('when the user wants to see their todos') and mentions optional filters. It doesn't explicitly state when NOT to use it or name specific alternatives among siblings, but the context is sufficient for basic decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_as_doneB
Mark a todo item as completed. Use this when the user wants to complete a task. Provide the todo ID.
| Name | Required | Description | Default |
|---|---|---|---|
| todo_id | Yes | The ID of the todo item to mark as completed | |
| postgresUrl | No | Override the Postgres connection URL (defaults to MCP_POSTGRES_URL) | |
| connectionId | No | Browser connection ID (used to construct connection URL if postgresUrl not provided) | |
| authToken | No | Auth token for authentication (used to construct connection URL if postgresUrl not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('mark as completed') but doesn't explain what this entails—whether it updates a status field, adds a timestamp, triggers notifications, or has side effects like archiving. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences that directly state the purpose and usage without any fluff. It's front-loaded with the core action, and every sentence serves a clear purpose, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with 4 parameters) and the absence of both annotations and an output schema, the description is insufficient. It doesn't cover behavioral aspects like what 'completed' means, error handling, or return values, leaving the agent with incomplete information for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are well-documented in the input schema itself. The description adds minimal value by mentioning 'todo ID' but doesn't provide additional context beyond what the schema already covers (e.g., format details or usage tips). This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('mark as completed') and resource ('todo item'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'add_todo' and 'list_todos' by focusing on completion rather than creation or listing. However, it doesn't explicitly differentiate from 'remove_todo' in terms of action outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic usage context ('when the user wants to complete a task'), which implies when to use this tool. However, it doesn't offer explicit guidance on when NOT to use it or mention alternatives like 'remove_todo' for deletion instead of completion. The guidance is present but lacks depth for optimal decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_todoB
Remove a todo item from the list. Use this when the user wants to delete a task. Provide the todo ID.
| Name | Required | Description | Default |
|---|---|---|---|
| todo_id | Yes | The ID of the todo item to remove | |
| postgresUrl | No | Override the Postgres connection URL (defaults to MCP_POSTGRES_URL) | |
| connectionId | No | Browser connection ID (used to construct connection URL if postgresUrl not provided) | |
| authToken | No | Auth token for authentication (used to construct connection URL if postgresUrl not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'removes' a todo item, implying a destructive mutation, but fails to mention critical aspects like authentication needs (implied by 'authToken' parameter), database dependencies, or potential side effects (e.g., permanent deletion). This leaves significant gaps for safe agent operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that are front-loaded with the core purpose. However, the second sentence ('Provide the todo ID') is somewhat redundant given the schema's clear documentation, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive mutation with 4 parameters, no annotations, no output schema), the description is incomplete. It doesn't address authentication, database connections, error handling, or return values, leaving the agent under-informed for reliable invocation in a real-world context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds minimal value by specifying 'Provide the todo ID' for the required parameter, but doesn't explain the semantics of optional parameters like 'postgresUrl' or 'authToken', nor does it clarify their interrelationships. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove a todo item') and resource ('from the list'), which is specific and actionable. It distinguishes from siblings like 'add_todo' and 'list_todos' by focusing on deletion, though it doesn't explicitly contrast with 'mark_as_done' for task completion alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage ('when the user wants to delete a task'), which helps guide the agent. However, it lacks explicit exclusions or alternatives (e.g., when not to use vs. 'mark_as_done'), and no prerequisites are mentioned despite multiple optional parameters in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
add_todo - First observed
list_todos - First observed
mark_as_done - First observed
remove_todo
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.
Maintenance
Related MCP Connectors
AI-native task management: list, create, update and archive tasks with rich context for AI agents
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
AI-driven daily-focus todo app on your phone (max 3/day). View & add todos from any MCP client.
Versioned agent memory in your own Postgres: portable context, permissioned, audit trail.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with PostgreSQL databases through the Model Context Protocol, providing database schema exploration, table structure inspection, and SQL query execution capabilities.15MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with PostgreSQL databases by executing SQL queries and inspecting database schemas. It provides tools to facilitate database exploration and management through the Model Context Protocol.-
- AlicenseNot gradedqualityDmaintenanceA persistent todo list server that enables AI assistants to manage tasks across different platforms using the Model Context Protocol. It provides tools for creating, listing, updating, and deleting todos with support for priorities, tags, and due dates.MIT
- AlicenseNot gradedqualityFmaintenanceEnables language models to manage Todoist tasks, projects, sections, labels, comments, and collaborators through natural language via the Model Context Protocol.MIT