pocketbase-mcp

MCP.Pizza Chef: mrwyndham

Twelve working tools cover the everyday jobs on a PocketBase database: listing and inspecting tables, creating and changing them, adding, listing, updating and deleting rows, creating a user account, signing a user in, and taking a backup. A further twelve appear in the menu and fail the instant they are called, including password resets, email verification, one-time codes and bulk import. It signs in as the full administrator using an address and password you paste into a settings file.

Coding
Data

Use This MCP server To

Set up a new table by describing the fields I want Fill a table with realistic test rows in seconds Look up records without opening the admin page Take a backup before I try something risky Add a test user account for the app I am building

README

PocketBase MCP Server

A very much in progress MCP server based off of the Dynamics one that I have been testing and refining. That provides sophisticated tools for interacting with PocketBase databases. This server enables advanced database operations, schema management, and data manipulation through the Model Context Protocol (MCP).

Here is a video of me using it: https://www.youtube.com/watch?v=ZuTIO3I7rTM&t=345s

Why This And Not DynamicsEndpoints?

This has actually been tested on the latest version. Currently 26.1 of PocketBase and is built off of the type definitions in the JS-SDK and not the arbitrary and wrong definitions found in the Dynamics one. Many of the methods don't even work.

Setup MCP Server Locally (Only Way Supported for Now)

To set up the MCP server locally, you'll need to configure it within your cline_mcp_settings.json or whatever you use (claude, cursor, the config looks identical you just need to find where it is stored) file. Here's how:

  1. Locate your cline_mcp_settings.json file: This file is usually located in your Cursor user settings directory. For example: /Users/yourusername/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

  2. Configure the server: Add a new entry to the mcpServers object in your cline_mcp_settings.json file. The key should be a unique name for your server (e.g., "pocketbase-server"), and the value should be an object containing the server's configuration.

    {
      "mcpServers": {
        "pocketbase-server": {
          "command": "node",
          "args": ["build/index.js"],
          "env": {
            "POCKETBASE_URL": "http://127.0.0.1:8090",
            "POCKETBASE_ADMIN_EMAIL": "admin@example.com",
            "POCKETBASE_ADMIN_PASSWORD": "admin_password"
          },
          "disabled": false,
          "autoApprove": ["create_record", "create_collection"]
        }
      }
    }
    • command: The command to start the server (usually node).
    • args: An array of arguments to pass to the command. This should point to the compiled JavaScript file of your MCP server (e.g., build/index.js). Make sure the path is correct.
    • env: An object containing environment variables.
      • POCKETBASE_URL: The URL of your PocketBase instance. This is required.
      • POCKETBASE_ADMIN_EMAIL: The admin email for your PocketBase instance (optional, but needed for some operations).
      • POCKETBASE_ADMIN_PASSWORD: The admin password for your PocketBase instance (optional, but needed for some operations).
    • disabled: Whether to disable to server on startup.
    • autoApprove: list of tools to auto approve.
    • Adjust the values in the env object to match your PocketBase instance's settings.
  • Setup in vscode is similar , find or create .vscode/mcp.json and add
{
  "inputs": [
    {
      "type": "promptString",
      "id": "pocketbase-admin-email",
      "description": "PocketBase Admin Email",
      "password": false
    },
    {
      "type": "promptString",
      "id": "pocketbase-admin-password",
      "description": "PocketBase Admin Password",
      "password": true
    }
  ],
  "servers": {
    "pocketbaseServer": {
      "type": "stdio",
      "command": "node",
      // replace this with the path to your compiled MCP server (git clone the repo and run `npm run build` to compile)
      "args": ["~/Desktop/code/mcp/pocketbase-mcp/build/index.js"],
      "env": {
        "POCKETBASE_URL": "http://127.0.0.1:8090",
        "POCKETBASE_ADMIN_EMAIL": "${input:pocketbase-admin-email}",
        "POCKETBASE_ADMIN_PASSWORD": "${input:pocketbase-admin-password}"
      }
    }
  }
}
  1. Start the server: After configuring the cline_mcp_settings.json file, you can start using the MCP server with the configured tools.

Setup MCP Server with Docker

You can run the PocketBase MCP server using Docker. A Dockerfile is included in the repository.

Building the Docker Image

# Build the Docker image
docker build -t pocketbase-mcp .

Running the Docker Container

# Run the container with environment variables
docker run -d \
  --name pocketbase-mcp \
  -e POCKETBASE_URL=http://127.0.0.1:8090 \
  -e POCKETBASE_ADMIN_EMAIL=your_admin@example.com \
  -e POCKETBASE_ADMIN_PASSWORD=your_admin_password \
  pocketbase-mcp

Docker MCP Configuration

To use the Dockerized MCP server with your AI assistant (Cursor, Claude, etc.), configure it in your MCP settings:

For Cline/Cursor (cline_mcp_settings.json):

{
  "mcpServers": {
    "pocketbase-docker": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "POCKETBASE_URL=http://host.docker.internal:8090",
        "-e",
        "POCKETBASE_ADMIN_EMAIL=your_admin@example.com",
        "-e",
        "POCKETBASE_ADMIN_PASSWORD=your_admin_password",
        "pocketbase-mcp"
      ],
      "disabled": false,
      "autoApprove": ["list_collections", "list_records", "get_collection"]
    }
  }
}

For VS Code (.vscode/mcp.json):

{
  "inputs": [
    {
      "type": "promptString",
      "id": "pocketbase-admin-email",
      "description": "PocketBase Admin Email",
      "password": false
    },
    {
      "type": "promptString",
      "id": "pocketbase-admin-password",
      "description": "PocketBase Admin Password",
      "password": true
    }
  ],
  "servers": {
    "pocketbaseDocker": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "POCKETBASE_URL=http://host.docker.internal:8090",
        "-e",
        "POCKETBASE_ADMIN_EMAIL=${input:pocketbase-admin-email}",
        "-e",
        "POCKETBASE_ADMIN_PASSWORD=${input:pocketbase-admin-password}",
        "pocketbase-mcp"
      ]
    }
  }
}

Docker Configuration Notes

  • -i: Interactive mode (required for stdio communication)
  • --rm: Automatically remove container when it exits
  • host.docker.internal: Use this to access PocketBase running on your host machine from within Docker
  • Environment Variables: Replace placeholder values with your actual PocketBase credentials
  • Network: If your PocketBase is also running in Docker, use Docker networking (e.g., --network host or custom bridge network)

Docker Compose (Optional)

Create a docker-compose.yml for easier management:

version: "3.8"

services:
  pocketbase-mcp:
    build: .
    environment:
      - POCKETBASE_URL=http://host.docker.internal:8090
      - POCKETBASE_ADMIN_EMAIL=your_admin@example.com
      - POCKETBASE_ADMIN_PASSWORD=your_admin_password
    stdin_open: true
    tty: true

Then configure your MCP settings to use:

{
  "mcpServers": {
    "pocketbase-docker": {
      "command": "docker-compose",
      "args": ["run", "--rm", "pocketbase-mcp"],
      "disabled": false
    }
  }
}

Features

Collection Management

  • Create and manage collections with custom schemas
  • Retrieve collection schemas and metadata

Record Operations

  • CRUD operations for records
  • Relationship expansion support
  • Pagination and cursor-based navigation

User Management

  • User authentication and token management
  • User account creation and management
  • Password management

Database Operations

  • Database backup

Available Tools

Collection Management

  • create_collection: Create a new collection with custom schema
  • get_collection: Get schema details for a collection

Record Operations

  • create_record: Create a new record in a collection
  • list_records: List records with optional filters and pagination
  • update_record: Update an existing record
  • delete_record: Delete a record

User Management

  • authenticate_user: Authenticate a user and get auth token
  • create_user: Create a new user account

Database Operations

  • backup_database: Create a backup of the PocketBase database with format options

Configuration

The server requires the following environment variables:

Optional environment variables:

  • POCKETBASE_ADMIN_EMAIL: Admin email for certain operations
  • POCKETBASE_ADMIN_PASSWORD: Admin password
  • POCKETBASE_DATA_DIR: Custom data directory path

Usage Examples

// Create a new collection
await mcp.use_tool("pocketbase", "create_collection", {
  name: "posts",
  schema: [
    {
      name: "title",
      type: "text",
      required: true,
    },
    {
      name: "content",
      type: "text",
      required: true,
    },
  ],
});

// Authenticate with password
await mcp.use_tool("pocketbase", "authenticate_user", {
  email: "user@example.com",
  password: "securepassword",
  collection: "users",
});

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

pocketbase-mcp FAQ

Do I need a key?
No key, but something more sensitive. It wants the administrator address and password for your database, written as plain readable text into a settings file, and it signs in with them on every single call. Anyone who can read that file owns your database.
How many of the tools actually work?
Twelve of the twenty-four on offer. The other twelve fail immediately with an unknown tool error: password reset, email verification, one-time code sign-in, outside sign-in providers, session refresh, email-change confirmation, user impersonation and bulk import all fall into that group.
Can it destroy my data?
Yes, easily. It can delete a single row or drop a whole table with every record in it, with no confirmation, no undo and no read-only mode. Because it always signs in as the full administrator, nothing narrows what it can reach.
Anything in the setup instructions I should change?
Yes. The example settings in the readme switch off the approval prompt for creating records and creating tables, meaning your assistant can make changes without asking. Take that line out unless you genuinely want silent writes.
Which apps does it work in?
Cursor, Cline and VS Code are documented, and the same block works for other apps that start a local MCP server. The author says the local setup is currently the only supported route.
How hard is setup?
Developer level. You clone the project and build it yourself, or build a container image, then point the settings at the file you built and at your own running database. There is no ready-made installer.
Can I use this to get a small app off the ground quickly?
Yes, that is exactly what it is for. You describe the tables you need, it creates them, then fills them with sample rows so you have something to build a front end against within minutes.
How finished is it?
The author openly calls it very much in progress. It was last updated in February 2026 and is tested against PocketBase 26.1, so it does work, but half the advertised menu is unfinished.