mcp-fireproof-todos

MCP.Pizza Chef: jimpick

The mcp-fireproof-todos server demonstrates the integration of the Fireproof database with the Model Context Protocol to create an interactive To Do List service. Designed as a lightweight MCP server, it allows AI systems such as Claude Desktop to manage tasks through natural language commands. Users can add, mark done, delete, and summarize To Do items seamlessly within chatbot conversations. This server showcases how persistent, client-side databases like Fireproof can be leveraged in MCP environments to enhance AI-driven productivity workflows with real-time, structured task management.

Use This MCP server To

Manage To Do Lists via AI chatbots Add tasks to Fireproof database through natural language Mark tasks as completed using conversational commands Delete To Do items interactively Summarize current To Do List on demand Demonstrate Fireproof database integration with MCP Enable persistent task storage in AI workflows

README

Model Context Protocol and Fireproof Demo: To Do List

This is a simple example of how to use a Fireproof database in a Model Context Protocol server (used for plugging code and data into A.I. systems such as Claude Desktop).

This demo server implements a simple "To Do List", using the same fields as in the demo on the Fireproof Homepage Codepen.

Fireproof Homepage Demo Screenshot

Once installed, this MCP server exposes a "todos" service. If you are using Claude Desktop, you can interact with it via the chatbot to create "To Do List" items, mark them as done, delete them, and even summarize the list.

Here's an example chat where I've asked Claude to "add butter to my todo list":

Claude Desktop Screenshot - Add Butter to To Do List

Where it really gets interesting is when you combine it with knowledge that Claude already has, or with other tools.

If I ask Claude for a cookie recipe:

Claude Desktop Screenshot - Ask for a cookie recipe

I can add all the ingredients to the todo list with a natural language request...

Claude Desktop Screenshot - Add Items 1/2

Claude Desktop Screenshot - Add Items 2/2

You can do other fun things, like mark todos as done, as well as delete them.

Claude Desktop Screenshot - Add Meaning of Life to list and mark as done

Installation

First, make sure you have Node.js installed.

Clone the repo:

git clone https://github.com/jimpick/mcp-fireproof-todos.git

Change directory:

cd mcp-fireproof-todos

Install dependencies:

npm install

Build the server:

npm run build

To use with Claude Desktop, add the server config:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

On Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "todos": {
      "command": "/path/to/todos/build/index.js"
    }
  }
}

Development Notes

Mostly, this was developed following the tutorial here:

  • https://modelcontextprotocol.io/docs/first-server/typescript

Fireproof support was added:

import { fireproof } from "use-fireproof";

const db = fireproof("mcp_todo", { public: true });

The fields were defined:

/**
 * Type alias for a todo object.
 */
type Todo = {
  _id: string,
  done: boolean,
  text: string,
  created: Number,
  updated: Number
};

I'm keeping an in-memory list of items, which is kept updated with a .subscribe() method. It might have been simpler to just query the items in the "list_todos" tool.

const todos: { [id: string]: Todo } = {}

await db.ready()

const onDbEvent = async function () {
  const run = Math.random()
  const fpTodos = await db.query("created", {
    includeDocs: true,
    descending: true,
    limit: 10,
  });
  for (let id in todos) {
    delete todos[id]
  }
  for (const row of fpTodos.rows) {
    let todo = row.doc;
    todos[todo!._id] = todo as Todo
  }
};
onDbEvent();
db.subscribe(onDbEvent);

We register the following tools using server.setRequestHandler() with ListToolsRequestSchema:

  • create_todo
  • list_todos
  • mark_todo_as_done
  • delete_todo

And there are simple implementations for each using server.setRequestHandler() with CallToolRequestSchema.

License

Apache 2 or MIT

mcp-fireproof-todos FAQ

How do I install the mcp-fireproof-todos server?
Clone the repository, install dependencies, and run the server following the README instructions. It requires Node.js and Fireproof setup.
Can I use mcp-fireproof-todos with AI models other than Claude Desktop?
Yes, while optimized for Claude Desktop, it can work with any MCP-compatible host that supports server integration.
How does the Fireproof database enhance the To Do List functionality?
Fireproof provides a client-side persistent database allowing tasks to be stored locally and accessed in real-time by the MCP server.
Is the To Do List data synchronized across devices?
Fireproof supports synchronization, but cross-device syncing depends on your Fireproof configuration and environment.
Can I extend the mcp-fireproof-todos server with additional features?
Yes, the server is open source and modular, allowing developers to add new commands or integrate other data sources.
Does mcp-fireproof-todos support task prioritization or deadlines?
The current demo uses basic To Do fields, but you can extend it to include priorities or deadlines by modifying the Fireproof schema.
How secure is the data stored in Fireproof via this MCP server?
Fireproof stores data locally with encryption options; security depends on your environment and Fireproof's capabilities.
Can I interact with the To Do List outside of chatbots?
Yes, since Fireproof is a client-side database, you can access and manipulate the data directly if needed.