PocketBase MCP服务器

一个基于Dynamics的PocketBase MCP服务器,提供高级数据库操作、模式管理和数据操作功能。

作者 By mrwyndham
本地部署 数据库管理 MCP协议
GitHub

PocketBase MCP服务器

基于Dynamics的MCP服务器正在开发中,我一直在测试和改进它。这为与PocketBase数据库交互提供了复杂的工具。此服务器通过模型上下文协议(MCP)实现高级数据库操作、模式管理和数据操作。

以下是我使用它的视频:https://www.youtube.com/watch?v=ZuTIO3I7rTM&t=345s

为什么是这个而不是DynamicsEndpoints?

这实际上已经在最新版本上进行了测试。目前PocketBase的26.1版本是基于JS-SDK中的类型定义构建的,而不是Dynamics中的任意和错误的定义。许多方法甚至不起作用。

在本地设置MCP服务器(目前仅支持此方式)

要在本地设置MCP服务器,您需要在您的 cline_mcp_settings.json 或者无论你使用什么(claude、cursor、配置看起来都一样,你只需要找到它的存储位置)文件。方法如下:

  1. 找到您的 cline_mcp_settings.json 文件: 此文件通常位于Cursor用户设置目录中。例如: /Users/yourusername/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  2. 配置服务器: 向添加新条目 mcpServers 对象在你 cline_mcp_settings.json 文件。密钥应该是服务器的唯一名称(例如“pocketbase server”),值应该是包含服务器配置的对象。

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15{ “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`**:启动服务器的命令(通常 `node`).
- **`args`**:要传递给命令的参数数组。这应该指向MCP服务器的编译JavaScript文件(例如。, `build/index.js`).确保路径正确。
- **`env`**:包含环境变量的对象。

- **`POCKETBASE_URL`**:PocketBase实例的URL。这是 *必需的*.
- **`POCKETBASE_ADMIN_EMAIL`**:PocketBase实例的管理员电子邮件(可选,但某些操作需要)。
- **`POCKETBASE_ADMIN_PASSWORD`**:PocketBase实例的管理员密码(可选,但某些操作需要)。
- **`disabled`**:是否在启动时禁用服务器。
- **`autoApprove`**:要自动批准的工具列表。
- 调整中的值 `env` 对象以匹配PocketBase实例的设置。


- vscode中的设置类似,查找或创建 `.vscode/mcp.json` 并添加


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29{
  "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. 启动服务器: 配置后 cline_mcp_settings.json 文件中,您可以使用配置的工具开始使用MCP服务器。

使用Docker设置MCP服务器

您可以使用Docker运行PocketBase MCP服务器。A. Dockerfile 包含在存储库中。

构建Docker镜像

BASH``` 1 2# Build the Docker image docker build -t pocketbase-mcp .


### 运行Docker容器


BASH```
1
2
3
4
5
6
7# 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配置

要将Docker化的MCP服务器与您的AI助手(Cursor、Claude等)一起使用,请在MCP设置中对其进行配置:

适用于Cline/Cursor(cline_mcp_settings.json):

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21{ “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”] } } }


**VS代码(`.vscode/mcp.json`):**


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34{
  "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配置说明

  • -i:交互模式(stdio通信所需)
  • --rm:容器退出时自动删除
  • host.docker.internal:使用此选项从Docker中访问在主机上运行的PocketBase
  • 环境变量:将占位符值替换为实际的PocketBase凭据
  • 网络:如果你的PocketBase也在Docker中运行,请使用Docker网络(例如。, --network host 或自定义网桥网络)

Docker编写(可选)

创建 docker-compose.yml 为了便于管理:

YAML``` 1 2 3 4 5 6 7 8 9 10version: “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


然后配置您的MCP设置以使用:


JSON```
1
2
3
4
5
6
7
8
9{
  "mcpServers": {
    "pocketbase-docker": {
      "command": "docker-compose",
      "args": ["run", "--rm", "pocketbase-mcp"],
      "disabled": false
    }
  }
}

特性

收集管理

  • 使用自定义模式创建和管理集合
  • 检索集合架构和元数据

记录操作

  • 记录的CRUD操作
  • 关系扩展支持
  • 分页和基于光标的导航

用户管理

  • 用户身份验证和令牌管理
  • 用户帐户创建和管理
  • 密码管理

数据库操作

  • 数据库备份

可用工具

收集管理

  • create_collection:使用自定义架构创建新集合
  • get_collection:获取集合的架构详细信息

记录操作

  • create_record:在集合中创建新记录
  • list_records:列出具有可选筛选器和分页的记录
  • update_record:更新现有记录
  • delete_record:删除记录

用户管理

  • authenticate_user:对用户进行身份验证并获取身份验证令牌
  • create_user:创建新用户帐户

数据库操作

  • backup_database:使用格式选项创建PocketBase数据库的备份

配置

服务器需要以下环境变量:

可选环境变量:

  • POCKETBASE_ADMIN_EMAIL:某些操作的管理员电子邮件
  • POCKETBASE_ADMIN_PASSWORD:管理员密码
  • POCKETBASE_DATA_DIR:自定义数据目录路径

用法示例

TYPESCRIPT``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22// 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”, });


## 贡献


1. 克隆该仓库
2. 创建要素分支
3. 提交您的更改
4. 推到分支
5. 创建拉取请求