使用说明
PocketBase MCP服务器
MCP(模型上下文协议)服务器,使AI代理能够与 PocketBase 用于数据查询和管理的实例。
特性
- 通过过滤、排序、分页和关系扩展查询记录
- 记录和集合的完整CRUD操作
- 管理员和用户身份验证
- 集合架构管理
- 紧凑的TOML输出格式(比JSON小25%,可配置)
- 带Zod验证的类型安全TypeScript实现
- 支持所有PocketBase字段类型:文本、数字、bool、电子邮件、url、日期、自动日期、选择、json、文件、关系、编辑器、geoPoint
安装
npm install @feirelles/pocketbase-mcp
或者克隆并在本地构建:
git clone https://github.com/feirelles/pocketbase-mcp.git
cd pocketbase-mcp
npm install
npm run build
配置
将PocketBase URL设置为环境变量:
export POCKETBASE_URL="http://localhost:8090"
MCP客户端配置
克劳德桌面版
增添 ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"pocketbase": {
"command": "node",
"args": ["/path/to/pocketbase-mcp/dist/index.js"],
"env": {
"POCKETBASE_URL": "http://localhost:8090"
}
}
}
}
VS代码(副本)
增添 .vscode/mcp.json:
{
"servers": {
"pocketbase": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/pocketbase-mcp/dist/index.js"],
"env": {
"POCKETBASE_URL": "http://localhost:8090"
}
}
}
}
可用工具
认证
| 工具 | 说明 |
|---|---|
pocketbase_auth_admin |
以管理员/超级用户身份进行身份验证 |
pocketbase_auth_user |
作为普通用户进行身份验证(支持电子邮件/用户名) |
pocketbase_get_auth_status |
检查当前身份验证状态 |
pocketbase_logout |
清除身份验证会话 |
记录
| 工具 | 说明 |
|---|---|
pocketbase_list_records |
列出具有过滤、排序、分页和skipTotal功能的记录 |
pocketbase_get_record |
按ID获取单个记录 |
pocketbase_create_record |
创建新记录(支持扩展/字段响应) |
pocketbase_update_record |
更新现有记录(支持扩展/字段响应) |
pocketbase_delete_record |
删除记录 |
收藏(仅限管理员)
| 工具 | 说明 |
|---|---|
pocketbase_list_collections |
列出所有收藏 |
pocketbase_get_collection |
获取集合架构详细信息 |
pocketbase_create_collection |
创建新收藏 |
pocketbase_update_collection |
更新集合架构 |
pocketbase_delete_collection |
删除收藏 |
管理(仅限管理员)
| 工具 | 说明 |
|---|---|
pocketbase_health_check |
检查服务器运行状况(无需身份验证) |
pocketbase_list_logs |
列出服务器日志并进行筛选 |
pocketbase_get_log |
按ID获取单个日志条目 |
pocketbase_log_stats |
获取每小时日志统计信息 |
pocketbase_list_backups |
列出所有可用的备份文件 |
pocketbase_create_backup |
创建新的数据库备份 |
pocketbase_restore_backup |
从备份文件还原 |
pocketbase_delete_backup |
删除备份文件 |
文件
| 工具 | 说明 |
|---|---|
pocketbase_get_file_url |
生成URL以访问带有可选缩略图的文件 |
用法
MCP服务器使AI代理能够通过自然语言与PocketBase实例进行交互。代理人可以:
- 跨集合查询和管理记录
- 以管理员或普通用户身份进行身份验证
- 创建和修改集合架构
- 使用完整的CRUD功能管理数据
只需让AI代理对PocketBase数据执行操作,它就会自动使用适当的工具。
输出格式
默认情况下,所有工具都返回TOML格式以提高令牌效率:
page = 1
perPage = 50
totalItems = 42
hasMore = false
[[items]]
id = "abc123def456"
title = "My Post"
status = "published"
created = "2026-01-15T10:30:00.000Z"
要获取JSON,请添加 format: "json" 任何工具调用。
错误处理
错误以结构化格式返回:
[error]
code = "NOT_FOUND"
message = "Collection 'posts' not found"
suggestion = "Use pocketbase_list_collections to see available collections"
错误代码:
CONNECTION_ERROR-无法连接到PocketBaseAUTH_REQUIRED-需要身份验证AUTH_FAILED-凭据无效NOT_FOUND-未找到资源VALIDATION_ERROR-输入数据无效PERMISSION_DENIED-权限不足
现场类型和特殊处理
关系字段
当使用创建或更新集合时 relation 类型字段,您可以使用以下任一字段:
- 收集 名字 (例如。,
"users")-自动解析为ID - 收集 ID (例如。,
"pbc_2478858439")-直接使用
为了方便起见,MCP服务器会自动将集合名称解析为其ID。
例子:
{
"name": "author",
"type": "relation",
"required": true,
"options": {
"collectionId": "users",
"cascadeDelete": false,
"maxSelect": 1,
"displayFields": ["email", "name"]
}
}
看 examples/create-collectionwith-relations.json 举一个完整的例子。
选择字段
对于 select 字段,提供 values 和 maxSelect 在选项中:
{
"name": "status",
"type": "select",
"required": true,
"options": {
"values": ["draft", "published", "archived"],
"maxSelect": 1
}
}
自动日期字段
对于 autodate 字段,指定更新时间:
{
"name": "created",
"type": "autodate",
"options": {
"onCreate": true,
"onUpdate": false
}
}
文件字段和URL
使用 pocketbase_get_file_url 为存储在PocketBase中的文件生成URL。支持生成图像缩略图(JPG、PNG、GIF、WebP)。
缩略图格式:
WxH-裁剪到宽x高视框(从中心)WxHt-从顶部裁剪WxHb-从底部收割WxHf-内部宽x高(无裁剪)0xH-调整高度,保持纵横比Wx0-调整宽度,保持纵横比
例子:
pocketbase_get_file_url(
collection="posts",
recordId="abc123",
filename="photo.jpg",
thumb="200x200"
)
故障排除
连接问题
如果你得到 CONNECTION_ERROR:
- 验证PocketBase是否正在运行:
curl http://localhost:8090/api/health - 检查
POCKETBASE_URL设置正确 - 确保没有防火墙阻塞端口
身份验证问题
- 管理员身份验证失败:验证电子邮件/密码
_superusers收集 - 用户身份验证失败:使用
identity参数(可以是电子邮件或用户名) - 权限不足:检查PocketBase管理中的集合API规则
常见错误
-
使用
email而不是identity用于用户身份验证- 对的:
identity="user@example.com"或identity="johndoe" - 错误:
email="user@example.com"(仅用于管理员身份验证)
- 对的:
-
在管理员操作之前忘记进行身份验证
- 使用
pocketbase_auth_admin第一 - 与核对
pocketbase_get_auth_status
- 使用
-
创建没有名称的备份
name可选-如果省略,则自动生成
发展
# Install dependencies
npm install
# Build
npm run build
# Development mode (watch)
npm run dev
# Lint
npm run lint
# Test
npm test
MCP检验员测试
npx @modelcontextprotocol/inspector node dist/index.js
许可证
麻省理工学院