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、配置看起来都一样,你只需要找到它的存储位置)文件。方法如下:
- 找到您的
cline_mcp_settings.json文件: 此文件通常位于Cursor用户设置目录中。例如:/Users/yourusername/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - 配置服务器: 向添加新条目
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}"
}
}
}
}
- 启动服务器: 配置后
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_URL:PocketBase实例的URL(例如,“http://127.0.0.1:8090”)
可选环境变量:
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. 创建拉取请求