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 basic JSON document store with CRUD operations (Create, Read, Update, Delete) and the ability to query documents sorted by any field.

Installation

Install dependencies:

npm install
npm build

Running the Server

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": {
    "fireproof": {
      "command": "/path/to/fireproof-mcp/build/index.js"
    }
  }
}

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.

[
  {
    "description": "Save a JSON document",
    "inputSchema": {
      "properties": {
        "doc": {
          "description": "JSON document to save",
          "type": "object"
        }
      },
      "required": [
        "doc"
      ],
      "type": "object"
    },
    "name": "save_json_doc"
  },
  {
    "description": "Load a JSON document by ID",
    "inputSchema": {
      "properties": {
        "id": {
          "description": "ID of document to load",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object"
    },
    "name": "load_json_doc"
  },
  {
    "description": "Delete a JSON document by ID",
    "inputSchema": {
      "properties": {
        "id": {
          "description": "ID of document to delete",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object"
    },
    "name": "delete_json_doc"
  },
  {
    "description": "Query JSON documents sorted by a field",
    "inputSchema": {
      "properties": {
        "sort_field": {
          "description": "Field to sort results by",
          "type": "string"
        }
      },
      "required": [
        "sort_field"
      ],
      "type": "object"
    },
    "name": "query_json_docs"
  }
]