news 2026/9/10 23:26:14

如何用 Payload MCP 插件把内容数据暴露给 MCP 客户端(/api/mcp)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 Payload MCP 插件把内容数据暴露给 MCP 客户端(/api/mcp)

如何用 Payload MCP 插件把内容数据暴露给 MCP 客户端(/api/mcp)

【免费下载链接】payloadPayload is the open-source, fullstack Next.js framework, giving you instant backend superpowers. Get a full TypeScript backend and admin panel instantly. Use Payload as a headless CMS or for building powerful applications.项目地址: https://gitcode.com/GitHub_Trending/pa/payload

如果你的 Payload 项目里已经配好了 collections 和 globals,想让 Cursor、Claude Code、VSCode 这类 MCP 客户端直接查询或增删改你的内容数据,@payloadcms/plugin-mcp就是官方给出的路径。装上插件并把mcpPlugin加进 Payload 配置后,POST /api/mcp会接受 JSON-RPC 2.0 的 MCP 请求,所有 collection 和 global 通过一组通用工具(getConfigInfogetCollectionSchemafindDocumentscreateDocumentsupdateDocumentdeleteDocumentsgetGlobalSchemafindGlobalupdateGlobal等)暴露出去,并受 Payload 的访问控制约束。本文的目标是完成这条链路:安装插件 → 注册到配置 → 连接 MCP 客户端 → 用 curl 或 MCP Inspector 验证端点可用。前提是一个可启动的 Payload 项目;开发环境下可用overrideAccess=true快速跑通,生产环境则需要发送 Payload 授权(用户 API key)。

安装与插件注册

在 Payload 项目根目录安装插件:

pnpm add @payloadcms/plugin-mcp

然后在 Payload 配置的plugins数组中加入mcpPlugin,这一步完成/api/mcp端点的注册:

import { buildConfig } from 'payload' import { mcpPlugin } from '@payloadcms/plugin-mcp' export default buildConfig({ // your collections, globals, etc. plugins: [mcpPlugin({})], })

插件参数为空时即可工作,所有 collection 和 global 都会通过内置工具暴露。启动 Payload 后,HTTP 端点即可用;开发阶段配置变更遵循 Payload 正常的 dev-server 重载周期。

连接 MCP 客户端

HTTP(streamable HTTP)传输是官方推荐的本地开发和部署方式,连接方式分两种:

开发环境:跳过访问控制

开发时把客户端 URL 指向带overrideAccess=true的地址即可跳过 Payload 访问控制:

{ "mcpServers": { "Payload": { "type": "http", "url": "http://127.0.0.1:3000/api/mcp?overrideAccess=true" } } }

这个 URL 只在开发时有效:非开发环境下端点会直接拒绝overrideAccessURL 参数(返回 400,错误信息为MCP overrideAccess is only available in development.,见 endpoint 实现),参数值也只接受truefalse两种。

生产环境:发送 Payload 授权

离开开发环境后,去掉overrideAccess=true,改为在请求头中发送 Payload 授权。MCP 端点使用 Payload 的认证体系,用户 API key 的头部格式为:

Authorization: <authCollectionSlug> API-Key <key>

API key 的获取步骤(来自 API Key Strategy 文档):

  1. 确认目标 auth collection 开启了useAPIKey
import type { CollectionConfig } from 'payload' export const Users: CollectionConfig = { slug: 'users', auth: { useAPIKey: true, }, fields: [], }
  1. 启动 Payload,打开 admin 面板,进入该 collection 中某个用户文档;
  2. 为该用户启用 API key 认证、生成并复制 key,然后保存;
  3. 在客户端配置中写成Authorization: users API-Key <key>,其中users换成你实际 auth collection 的 slug。

API key 在数据库中是加密存储的;如果更换了PAYLOAD_SECRET,已有的 API key 会失效,需要重新生成。

如果客户端原生支持 HTTP 传输,可以直接写:

{ "mcpServers": { "Payload": { "type": "http", "url": "http://localhost:3000/api/mcp", "headers": { "Authorization": "users API-Key MCP-USER-API-KEY" } } } }

MCP-USER-API-KEY是文档示例占位值,替换为你按上面步骤生成的真实 key。

不支持原生 HTTP 的客户端可以用mcp-remote作为适配器,例如 Cursor 的配置:

{ "mcpServers": { "Payload": { "command": "npx", "args": [ "-y", "mcp-remote", "http://localhost:3000/api/mcp", "--header", "Authorization: users API-Key MCP-USER-API-KEY" ] } } }

Claude Code 则可以用命令行添加:

claude mcp add --transport http Payload http://127.0.0.1:3000/api/mcp \ --header "Authorization: users API-Key MCP-USER-API-KEY"

这些 JSON 配置结构可能随客户端版本变化,以客户端官方文档为准。

验证端点:curl 与 MCP Inspector

最快的手动验证是用 curl 发一个tools/list请求,端点注册成功且授权通过时,会返回该客户端可见的工具列表:

curl -i 'http://localhost:3000/api/mcp' \ -X POST \ -H 'Authorization: users API-Key MCP-USER-API-KEY' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}}'

交互式探索推荐用 MCP Inspector:

npx @modelcontextprotocol/inspector

把 URL 设为http://127.0.0.1:3000/api/mcp,并加上Authorization: users API-Key MCP-USER-API-KEY请求头,就可以逐个调用工具。

跑通后的典型使用顺序是:先调getConfigInfo查看当前客户端可见的 collection 与 global slug,再用getCollectionSchema检查某个 collection 的字段结构,然后用findDocuments查询、createDocuments创建文档。createDocumentsupdateDocument默认只返回受影响的文档 ID,需要完整文档时传returning: true,再配合select控制返回字段;findDocumentsfindGlobalupdateGlobal则直接接受select。带富文本或深层关系的 collection 不传select会返回完整文档,容易消耗模型的上下文预算,这是文档明确给出的性能建议。

授权行为与限制

几个直接影响能否跑通的规则,均来自插件源码与文档:

  • 默认 MCP access 要求有登录用户。插件默认 access 回调是Boolean(req.user)(见 defaultAccess),没有发送授权时 MCP 以“无用户”身份运行访问控制,大部分内置工具不会出现在工具列表里。文档中的客户端示例都带了授权,原因在此。
  • 发送了 Authorization 但认证失败会直接报错。端点在收到Authorization头后走 Payload 正常认证,若解析不出用户会抛出未授权错误(见 access 实现)。此时先检查 header 里 collection slug 是否与实际 auth collection 一致、key 是否有效、PAYLOAD_SECRET是否变动过。
  • overrideAccess=true仅限开发环境,它跳过 item access 回调、内置权限检查以及内置 handler 内的 Payload 访问控制;生产环境请走真实授权。
  • 虚拟字段不出现在getCollectionSchema/getGlobalSchema(它们只读且模型无法设置),但仍会出现在 find 响应里,这是预期行为。
  • 模型默认收到完整文档,文档明确要求在敏感字段进入模型前用selectoverrideResponse剔除,overrideResponse可按 collection 或单个内置工具配置,解析顺序为 per-tool > collection/global > 内置默认。
  • 客户端只能通过 stdio 拉起本地进程时,插件也提供payload-mcpbin(npx payload-mcp,可用环境变量PAYLOAD_MCP_AUTHORIZATION传同一个授权值)。但它是有限制的传输:配置、注册与授权只在启动时初始化一次,改配置或权限后必须重启 server 并重连客户端,且每个客户端各起一个独立 Payload 进程,官方推荐一律用 HTTP。
  • 内置工具在请求上会设置req.payloadAPI === 'MCP'(见 endpoint 实现),你可以在 collection hook 里据此识别 MCP 流量;自定义工具自行发起 local API 调用时,req.payloadAPI由你控制。

下一步

端点验证通过后,按文档的 MCP Plugin 可以继续:用collectionsmap 关闭不需要的内置操作(如tools: { delete: false })、给 auth collection 显式开启login/auth等 opt-in 工具、用defineTool/defineCollectionTool定义自定义工具,以及给 upload collection 配置getUploadInstructions走文件上传流程。源码位于 packages/plugin-mcp,实现细节(授权过滤、item access 检查)可对照src/endpoint/access.tssrc/mcp/下的内置工具查看。

【免费下载链接】payloadPayload is the open-source, fullstack Next.js framework, giving you instant backend superpowers. Get a full TypeScript backend and admin panel instantly. Use Payload as a headless CMS or for building powerful applications.项目地址: https://gitcode.com/GitHub_Trending/pa/payload

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 23:25:38

制造业质量目标设定与管理的核心逻辑

1. 质量目标的本质与分类逻辑在制造业和项目管理领域&#xff0c;质量目标从来都不是一个模糊的概念。我经历过太多因为目标定义不清而导致团队南辕北辙的案例。质量目标实际上是企业质量方针的具体化和量化体现&#xff0c;根据作用对象的不同&#xff0c;主要分为产品包质量目…

作者头像 李华
网站建设 2026/9/10 23:22:25

AI论文写作工具测评:提升学术效率与合规性

1. 项目概述&#xff1a;AI论文写作平台测评的必要性写毕业论文是每个本科生都要经历的"成人礼"&#xff0c;但面对开题报告、文献综述、数据分析这些硬骨头&#xff0c;很多同学往往手足无措。去年指导学弟学妹论文时&#xff0c;我发现一个有趣现象&#xff1a;超过…

作者头像 李华
网站建设 2026/9/10 23:20:47

hello-algo 圖解佇列:FIFO 先入先出原理、雙端操作與多語言實作指南

hello-algo 圖解佇列&#xff1a;FIFO 先入先出原理、雙端操作與多語言實作指南 【免费下载链接】hello-algo 《Hello 算法》&#xff1a;动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語&#xff0c;提供 Python, Java, C, C, C#, JS, Go, Swift, R…

作者头像 李华