这是一个模型上下文协议(MCP)服务器,它使AI助手和工具能够直接与您的Payload CMS实例进行交互。它提供了一组安全、经过身份验证的工具,用于通过REST API执行常见的操作,如在Payload集合中创建、搜索和更新对象。
该服务器自动处理身份验证,包括JWT令牌管理和浏览器登录流程(如有需要)。它设计得轻量级、可配置且易于集成到开发工作流中(例如,与VS Code和Kilocode一起使用)。
where子句),分页、排序、本地化以及相关字段的填充。以下列出了可用工具及其输入模式(JSON Schema格式)。这些定义了每个工具调用的参数。
描述:在一个指定的集合中创建一个或多个新对象。
{
"type": "object",
"properties": {
"collection_name": {
"type": "string",
"description": "要创建对象的集合名称"
},
"data": {
"oneOf": [
{
"type": "object",
"description": "要创建的对象数据"
},
{
"type": "array",
"items": {
"type": "object"
},
"description": "要创建的对象数组"
}
],
"description": "要创建的对象数据或对象数组"
},
"locale": {
"type": "string",
"description": "操作的语言代码(例如,'en','es')。如果未提供并且启用了本地化,则仅使用默认语言"
}
},
"required": ["collection_name", "data"]
}
描述:搜索集合中的对象。
{
"type": "object",
"properties": {
"collection_name": {
"type": "string",
"description": "要搜索的集合名称"
},
"query": {
"type": "object",
"description": "搜索查询参数(类似于MongoDB的where子句)"
},
"limit": {
"type": "integer",
"description": "返回结果的最大数量"
},
"page": {
"type": "integer",
"description": "分页的页码"
},
"sort": {
"type": "string",
"description": "排序字段和方向"
},
"locale": {
"type": "string",
"description": "操作的语言代码(例如,'en','es')。如果未提供并且启用了本地化,则仅使用默认语言"
}
},
"required": ["collection_name"]
}
描述:通过ID更新对象。
{
"type": "object",
"properties": {
"collection_name": {
"type": "string",
"description": "包含对象的集合名称"
},
"object_id": {
"type": "string",
"description": "要更新的对象ID"
},
"data": {
"type": "object",
"description": "更新后的对象数据"
},
"locale": {
"type": "string",
"description": "操作的语言代码(例如,'en','es')。如果未提供并且启用了本地化,则仅使用默认语言"
}
},
"required": ["collection_name", "object_id", "data"]
}
在设置并使用此MCP服务器之前,请确保满足以下条件:
http://localhost:3000/api访问。注意:除了拥有一个正常工作的实例外,不需要额外的数据库设置或Payload配置。服务器不会为您启动或管理Payload——请单独处理。
克隆仓库:
git clone https://github.com/your-org/payload-mcp.git
cd payload-mcp
安装依赖项: 安装所需的Python包。这包括MCP协议支持、HTTP客户端和配置库。
pip install -r requirements.txt
或者,安装完整的包(推荐用于全局使用):
pip install .
这使得payload-mcp-server命令可以在您的PATH中使用。
设置环境: 复制示例环境文件并自定义它:
cp .env.example .env
根据需要编辑.env(参见配置部分)。如果尚未将.env添加到.gitignore中,请添加(默认情况下已添加)。
服务器使用Pydantic从环境变量加载类型安全配置。大多数用户可以依赖默认值,但可以通过.env自定义非本地设置。
从.env.example:
Payload CMS连接:
PAYLOAD_MCP_PAYLOAD__BASE_URL:基础API URL(默认:http://localhost:3000/api)。对于远程主机,例如https://your-site.com/api。PAYLOAD_MCP_PAYLOAD__AUTH_TOKEN:可选的JWT令牌,用于预先认证访问。如果省略,在首次需要时将使用浏览器登录。PAYLOAD_MCP_PAYLOAD__TIMEOUT:请求超时时间(秒,默认:30)。PAYLOAD_MCP_PAYLOAD__VERIFY_SSL:启用SSL验证(默认:本地开发为false;生产HTTPS设置为true)。PAYLOAD_MCP_PAYLOAD__BYPASS_PROXY:绕过本地主机代理(默认:true)。服务器设置:
PAYLOAD_MCP_LOG_LEVEL:日志详细程度(默认:INFO;选项:DEBUG,WARNING,ERROR,CRITICAL)。示例.env用于远程Payload:
PAYLOAD_MCP_PAYLOAD__BASE_URL=https://myapp.com/api
PAYLOAD_MCP_PAYLOAD__AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
PAYLOAD_MCP_PAYLOAD__VERIFY_SSL=true
PAYLOAD_MCP_LOG_LEVEL=DEBUG
更改配置后重新加载服务器。
启动MCP服务器: 安装后运行:
payload-mcp-server
或直接从源运行:
python -m payload_mcp.server
后台/生产:
nohup、screen或systemd等工具。nohup payload-mcp-server > server.log 2>&1 &服务器在启动时不需要Payload正在运行——只需在调用工具时即可。但是,请确保在使用工具前Payload是可访问的。
添加到客户端(例如,VS Code与Kilocode):
mcp.json或类似文件)。<swap to root directory of the mcp server>替换为此项目根目录的实际路径:{
"mcpServers": {
"payload-mcp": {
"command": "python",
"args": ["-m", "payload_mcp.server"],
"cwd": "<swap to root directory of the mcp server>"
}
}
}
create_object,search_objects,update_object)。验证集成:
一旦集成,您可以在AI助手提示中使用这些工具。示例如下:
创建对象:
使用create_object工具将具有姓名:"John Doe"和电子邮件:"john@example.com"的新用户添加到'users'集合中。
搜索对象:
在'posts'集合中搜索标题包含"Payload"的项目,并限制结果为5条。
更新对象:
更新'users'集合中ID为"123"的用户的电子邮件为"john@newemail.com"。
这些工具支持高级参数,如区域设置、填充和复杂查询——请参阅上述工具模式以获取完整详情。
.env中提供有效的JWT令牌或允许浏览器登录。验证您的Payload用户具有必要的权限。PAYLOAD_MCP_LOG_LEVEL=DEBUG以获得详细的输出。python有歧义,请使用python.exe。MIT许可证。详情见LICENSE(如有必要添加)。
如有支持需求,请查阅Payload CMS文档或提交问题。